Author Topic: Disassembler  (Read 1791 times)

Offline Daemon

  • Lightweight
  • Posts: 231
  • Rep: 0
    • http://www.youtube.com/user/25Daemon025
    • View Profile
    • Awards
Disassembler
« on: December 07, 2010, 03:23:20 PM »
Anyone knows how to write programs on assembler?
There are 10 types of people:Those,who understand binary and those,who dont.

Offline Clickbeetle

  • *
  • Posts: 3375
  • Rep: 21
  • In Soviet Russia, bugs stomp YOU!
  • Awards BOTM Winner
    • View Profile
    • Beetle Bros site
    • Awards
Re: Disassembler
« Reply #1 on: December 11, 2010, 09:21:29 PM »
Please elaborate.  Are you talking about Python?  What exactly do you want it to do?

To lack feeling is to be dead, but to act on every feeling is to be a child.
-Brandon Sanderson, The Way of Kings

Offline Daemon

  • Lightweight
  • Posts: 231
  • Rep: 0
    • http://www.youtube.com/user/25Daemon025
    • View Profile
    • Awards
Re: Disassembler
« Reply #2 on: December 13, 2010, 10:52:00 AM »
Please elaborate.  Are you talking about Python?  What exactly do you want it to do?
No, its smt like his:
Code: [Select]
.model tiny
.286
.code
org 100h
start:  mov ax,3
        int 10h; чищу экран
        mov ah,9
        mov dx,offset string1; выводим приглашение на ввод
        int 21h
        mov ah,0Ah
        mov dx,offset string2; получаем число
        int 21h
        mov ah,9
        mov dx,offset string14; выводим результат на экран
        int 21h
        mov bh,0
        mov bl,string2[2]
        sub bl,'0'; из ASCII-кода символа получаю число
        shl bx,1; умножаю полученное число на 2
        mov dx,string13[bx]; нахожу адрес ответа
        mov ah,9
        int 21h ; вывожу результат на экран
        mov ah,0; ждем пока не нажмут любую клавишу
        int 16h
        retn; выходим из программы
string1 db 'Введите число от 0 до 9 и нажмите Enter',0Dh,0Ah,"$"
string14 db 0Dh,0Ah,'результат равен $'
string2 db 2,0,?,?,?; буфер для ввода числа
string3 db '0$';0
string4 db '1$';0+1=1
string5 db '3$';0+1+2=3
string6 db '6$';0+1+2+3=6
string7 db '10$';0+1+2+3+4=10
string8 db '15$';0+1+2+3+4+5=15
string9 db '21$';0+1+2+3+4+5+6=21
string10 db '28$';0+1+2+3+4+5+6+7=28
string11 db '36$';0+1+2+3+4+5+6+7+8=36
string12 db '45$';0+1+2+3+4+5+6+7+8+9=45
string13 dw string3,string4,string5,string6,string7; адреса ответов
              dw string8,string9,string10,string11,string12
end start
There are 10 types of people:Those,who understand binary and those,who dont.

Offline Clickbeetle

  • *
  • Posts: 3375
  • Rep: 21
  • In Soviet Russia, bugs stomp YOU!
  • Awards BOTM Winner
    • View Profile
    • Beetle Bros site
    • Awards
Re: Disassembler
« Reply #3 on: December 13, 2010, 11:25:43 PM »
Eh... the only people who might have any experience are Serge or apanx, but really I have no idea.

To lack feeling is to be dead, but to act on every feeling is to be a child.
-Brandon Sanderson, The Way of Kings

Offline Serge

  • *
  • Posts: 1530
  • Rep: 13
    • View Profile
    • http://www.q3k.org/
    • Awards
Re: Disassembler
« Reply #4 on: December 15, 2010, 03:30:08 PM »
Please elaborate.  Are you talking about Python?  What exactly do you want it to do?
No, its smt like his:
Code: [Select]
.model tiny
.286
.code
org 100h
start:  mov ax,3
        int 10h; чищу экран
        mov ah,9
        mov dx,offset string1; выводим приглашение на ввод
        int 21h
        mov ah,0Ah
        mov dx,offset string2; получаем число
        int 21h
        mov ah,9
        mov dx,offset string14; выводим результат на экран
        int 21h
        mov bh,0
        mov bl,string2[2]
        sub bl,'0'; из ASCII-кода символа получаю число
        shl bx,1; умножаю полученное число на 2
        mov dx,string13[bx]; нахожу адрес ответа
        mov ah,9
        int 21h ; вывожу результат на экран
        mov ah,0; ждем пока не нажмут любую клавишу
        int 16h
        retn; выходим из программы
string1 db 'Введите число от 0 до 9 и нажмите Enter',0Dh,0Ah,"$"
string14 db 0Dh,0Ah,'результат равен $'
string2 db 2,0,?,?,?; буфер для ввода числа
string3 db '0$';0
string4 db '1$';0+1=1
string5 db '3$';0+1+2=3
string6 db '6$';0+1+2+3=6
string7 db '10$';0+1+2+3+4=10
string8 db '15$';0+1+2+3+4+5=15
string9 db '21$';0+1+2+3+4+5+6=21
string10 db '28$';0+1+2+3+4+5+6+7=28
string11 db '36$';0+1+2+3+4+5+6+7+8=36
string12 db '45$';0+1+2+3+4+5+6+7+8+9=45
string13 dw string3,string4,string5,string6,string7; адреса ответов
              dw string8,string9,string10,string11,string12
end start

Holy shit comments in Russian. I do some ASM programming (x86 [Bare Metal, Windows and some Linux] and a little bit of ARM). Why are you writing 16-bit code?
home | twitter | yt | gmf de/compiler | component freedom | xmpp: q3k@q3k.org | email: q3k@q3k.org

Offline Daemon

  • Lightweight
  • Posts: 231
  • Rep: 0
    • http://www.youtube.com/user/25Daemon025
    • View Profile
    • Awards
Re: Disassembler
« Reply #5 on: December 15, 2010, 05:42:00 PM »
Please elaborate.  Are you talking about Python?  What exactly do you want it to do?
No, its smt like his:
Code: [Select]
.model tiny
.286
.code
org 100h
start:  mov ax,3
        int 10h; чищу экран
        mov ah,9
        mov dx,offset string1; выводим приглашение на ввод
        int 21h
        mov ah,0Ah
        mov dx,offset string2; получаем число
        int 21h
        mov ah,9
        mov dx,offset string14; выводим результат на экран
        int 21h
        mov bh,0
        mov bl,string2[2]
        sub bl,'0'; из ASCII-кода символа получаю число
        shl bx,1; умножаю полученное число на 2
        mov dx,string13[bx]; нахожу адрес ответа
        mov ah,9
        int 21h ; вывожу результат на экран
        mov ah,0; ждем пока не нажмут любую клавишу
        int 16h
        retn; выходим из программы
string1 db 'Введите число от 0 до 9 и нажмите Enter',0Dh,0Ah,"$"
string14 db 0Dh,0Ah,'результат равен $'
string2 db 2,0,?,?,?; буфер для ввода числа
string3 db '0$';0
string4 db '1$';0+1=1
string5 db '3$';0+1+2=3
string6 db '6$';0+1+2+3=6
string7 db '10$';0+1+2+3+4=10
string8 db '15$';0+1+2+3+4+5=15
string9 db '21$';0+1+2+3+4+5+6=21
string10 db '28$';0+1+2+3+4+5+6+7=28
string11 db '36$';0+1+2+3+4+5+6+7+8=36
string12 db '45$';0+1+2+3+4+5+6+7+8+9=45
string13 dw string3,string4,string5,string6,string7; адреса ответов
              dw string8,string9,string10,string11,string12
end start

Holy shit comments in Russian. I do some ASM programming (x86 [Bare Metal, Windows and some Linux] and a little bit of ARM). Why are you writing 16-bit code?

У тебя нету образцов ассемблера?
Просто мне нужно до этого понедельника написать прогу на асме, которая считывает из .com файла машинный код и записывает его в .txt.
напр.:
Code: [Select]
0100: B409 mov ah, 09
0102: BADE01 mov dx, 01DE
0105: CD21 int 21
0107: B40A mov ah, 0A
0109: BA6301 mov dx, 0163
010C: CD21 int 21
010E: B409 mov ah, 09
0110: BA1102 mov dx, 0211
0113: CD21 int 21
0115: 32ED xor ch, ch
0117: 2BC0 sub ax, ax
0119: 8A0E6401 mov cl, [0164]
011D: BB6501 mov bx, 0165
0120: B241 mov dl, 41
0122: B65A mov dh, 5A
0124: 3A17 cmp dl, [bx]
0126: 7F05 jg 012D
0128: 3A37 cmp dh, [bx]
012A: 7C01 jl 012D
012C: 40 inc ax
012D: 43 inc bx
012E: 49 dec cx
012F: 83F900 cmp cx, 00
0132: 7FF0 jg 0124
0134: B20A mov dl, 0A
0136: F6F2 div dl
0138: 88261002 mov [0210], ah
013C: 8006100230 add byte ptr [0210], 30
Проблема в том, что я просто не успеваю, так как разные контр. каждый день.

P.S.  в каком универе учат прорамировать под линукс на асме?)
There are 10 types of people:Those,who understand binary and those,who dont.

Offline Serge

  • *
  • Posts: 1530
  • Rep: 13
    • View Profile
    • http://www.q3k.org/
    • Awards
Re: Disassembler
« Reply #6 on: December 16, 2010, 08:17:00 AM »
Wow, this doesn't mean I understand Russian very well (I do some, though). I'll take a look at the program later, though - have other stuff to do right now. I have some sample Win32 assembly code on my netbook, will upload them later.
home | twitter | yt | gmf de/compiler | component freedom | xmpp: q3k@q3k.org | email: q3k@q3k.org