NASM汇编程序-生成的机器代码中不需要的66

时间:2019-04-16 17:46:31

标签: assembly x86 nasm

  • os:windows 10
  • cpu:intel核心i5-5300U
  • 体系结构:x64

我刚刚开始学习汇编语言。我使用了在线编译器,但是今天我下载了NASM。我试图汇编这个将10乘以15的简单代码:

mov eax, 0xa
mov edx, 0xf
imul eax, edx
ret

执行NASM生成的机器代码的尝试失败,因此我在十六进制编辑器中打开了该代码,并将其与可以成功执行的online assembler生成的代码进行了比较。

NASM:

66 b8 0a 00 00 00 66 ba 0f 00 00 00 66 0f af c2 c3

在线编辑器:

b8 0a 00 00 00 ba 0f 00 00 00 0f af c2 c3

这两个代码之间的唯一区别是NASM生成的代码中不需要的66。谁能帮我吗?

1 个答案:

答案 0 :(得分:2)

就像杰斯特建议的那样。我不包括BITS 64声明。现在,当我包括BITS 64时,一切正常