1
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在文件的开头,除了这个之外,几乎一切看起来都很好。

4

1 回答 1

1

我猜原因是实际上您在 JWASM 中指定了 .i386 (或更高版本)指令,这会导致 32 位代码生成,因为 Intel 80386 是 32 位 CPU。

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

于 2013-10-12T17:11:21.020 回答