我在我的 64 位 Mac-to-Linux 计算机上使用 Insight 调试器。
它告诉我mov ebx, 1739
EBX 中的结果是 0xcc00cccb。EAX 按预期得到 0x1bf,但乘法结果也很奇怪(当它应该适合 32 位寄存器时)。
global _start
_start:
nop
mov eax, 447
mov ebx, 1739
mul ebx
nop
请有人告诉我这是怎么回事。我什至不能声明一个数据字节字符串,因为它会在高阶半字节处添加几个 c 到任何 mov 或 mul 指令产生的任何十六进制,无论哪个寄存器首先声明。我使用 NASM 汇编器。
编辑:我要组装和链接的两个终端条目是:
nasm -f elf -g -F stabs test.asm -l test.lst
ld -o test test.o -melf_i386