奇怪的JWASM(MASM兼容)行为

时间:2013-10-12 16:18:30

标签: assembly x86 masm

cmp word ptr ds:[0], 0AA55h

汇编和objdumped,它看起来像这样:

67 81 3d 00 00 00 00    addr32 cmpw $0xaa55,0x0
55 aa

为什么addr32在这里?我的意思是做我在AT& T(GAS)语法中做的同样的事情:

cmpw    $0xAA55, %ds:0

反过来又反过来说:

81 3e 00 00 55 aa       cmpw   $0xaa55,0x0

文件开头有use16,除此之外几乎所有内容都可以。

1 个答案:

答案 0 :(得分:1)

我想原因是你在JWASM中实际指定了.i386(或更高版本)指令,因为英特尔80386是一个32位CPU,导致32位代码生成的原因。

尝试使用.i286指令编译此代码,以便存档真正的16位代码。