TEST.ASM:位NASM 16和位32
org 0100h
[BITS 16]
mov eax, 0
[BITS 32]
mov eax, 0
然後編譯和拆卸如下:
nasm test.asm -o test.com
ndisasm -o 0x0100 test.com
結果:
00000100 66B800000000 mov eax,0x0
00000106 B80000 mov ax,0x0
00000109 0000 add [bx+si],al
那麼從結果中我們可以看出[BITS 16]
使用eax
,[BITS 32]
使用ax
,爲什麼?結果應該翻轉嗎?
當你混合使用16位和32位代碼時,混淆不就是ndisasm嗎? 'B800000000'將在32位模式下爲'mov eax,0'。 –