当我尝试使用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
注意:代码的目的是查看转换为不同指令的操作码。
答案 0 :(得分:0)
您实际上没有向我们展示您的所有代码。我强烈怀疑你是在发送一个指令,它告诉你要生成16位代码。显然,32位寄存器在16位模式下不可用,因此MASM抱怨。
尝试在汇编代码顶部插入.386
,.486
,.586
或.686
。您可以找到更多信息here in the documentation.