为什么32位寄存器名称会出现“未定义符号”错误?

时间:2015-12-03 04:04:38

标签: assembly masm32

当我尝试使用masm32组装它时,我得到每行的“符号未定义”错误(以MOV EAX, 05h开头),其中使用了32位寄存器名称(第3,5,8,9行) ,10,11,12)。为什么是这样?我用来组装它的命令是ml.exe /Zm /Bl link.exe filepath\filename

如果我删除/Zm开关,我仍会在同一行显示错误,仅在这种情况下,它是"Instruction or register not accepted in current CPU-mode"

完整且完整的代码:

code SEGMENT
MOV AX, 05h ;MOV B8+
MOV EAX, 05h
MOV BX, 06h
MOV EBX, 06h
MOV CX, 07h
MOV DX, 08h
MOV CR0, EAX ; 0F 22 /r
MOV CR0, EBX
MOV CR0, ECX
MOV CR0, EDX
MOV CR0, ESP
code ENDS
END

注意:代码的目的是查看转换为不同指令的操作码。

1 个答案:

答案 0 :(得分:0)

您实际上没有向我们展示您的所有代码。我强烈怀疑你是在发送一个指令,它告诉你要生成16位代码。显然,32位寄存器在16位模式下不可用,因此MASM抱怨。

尝试在汇编代码顶部插入.386.486.586.686。您可以找到更多信息here in the documentation.