+ -
当前位置:首页 → 问答吧 → hello反汇编求解释

hello反汇编求解释

时间:2011-04-13

来源:互联网

hello.asm源码(在nasm编译)
[BITS 16]
[ORG 0x0100]
  JMP start:
msg DB 'hello!',13,10,'$'
start: mov dx,msg
  mov ah,9
  int 21H
ret

反汇编结果:

00000000 EB09 jmp short 0xb ;jmp跳到哪里?0xb的地址是什么,反汇编程序中没有啊
00000002 68656C push word 0x6c65 ;0x6c65是什么
00000005 6C insb
00000006 6F outsw
00000007 210D and [di],cx
00000009 0A24 or ah,[si]
0000000B BA0201 mov dx,0x102  
0000000E B409 mov ah,0x9
00000010 CD21 int 0x21
00000012 C3 ret
求详细解释,超级详细解释:

作者: rapanda   发布时间: 2011-04-13

这个难哦,你要了解pe格式的。

作者: MSOKD   发布时间: 2011-04-13

00000000 EB09 jmp short 0xb ;jmp跳到哪里?0xb的地址是什么,反汇编程序中没有啊
00000002 68656C push word 0x6c65 ;0x6c65是什么 ;hel
00000005 6C insb ;l
00000006 6F outsw ;o
00000007 210D and [di],cx ;! ,13  
00000009 0A24 or ah,[si] ;10,$
0000000B BA0201 mov dx,0x102 ;jmp跳到这里,0xb的地址是也,;mov dx,msg,(0x102=00000002 68656C...)
0000000E B409 mov ah,0x9 ;mov ah,0x9
00000010 CD21 int 0x21 ;int 0x21
00000012 C3 ret ;ret

作者: mengcheng8487   发布时间: 2011-04-13

jmp short是相对跳转指令,0xb是跳转的相对地址,也就是执行完本条指令后的IP值加上0xb。
你在JMP start指令下面用DB定义了数据,在这里数据被反汇编为指令,68656C就是hel这3个字母的ASCII码。

作者: cnzdgs   发布时间: 2011-04-13

这个和PE文件有啥关系?我就说它是COM文件不行么?

作者: va_zaixuexi   发布时间: 2011-04-13

楼主先把16位汇编基础打好再说吧。

作者: masmaster   发布时间: 2011-04-13