Когда я пытаюсь собрать это с помощью masm32, я получаю ошибку «символ не определен» для каждой строки (начиная с MOV EAX, 05h
), где используются имена 32-разрядных регистров (строки 3, 5, 8, 9, 10, 11, 12). Почему это? Команда я использую, чтобы собрать его в ml.exe /Zm /Bl link.exe filepath\filename
Почему я получаю ошибку «символ не определен» для 32-разрядных имен регистров?
Если удалить переключатель /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
Примечание: Цель кода заключается в том, чтобы увидеть, в каких операционных кодах переведены разные инструкции.
Может быть, вы говорите это именно 8086 инструкции. Что произойдет, если вы используете директиву '.686' в верхней части кода? –
Если вы указали весь файл ассемблера, это может дать нам еще больше возможностей. –
Что-то еще, что трудно сказать, если вы должны использовать опцию '/ Zm', которая совместима с более старой версией MASM. Есть ли причина, по которой вы используете '/ Zm'? –