Assembly 在';标识符';
我在查看一些代码时发现了以下说明:Assembly 在';标识符';,assembly,x86,Assembly,X86,我在查看一些代码时发现了以下说明: mov ES : [BX], AX 它引发了一个编译器错误: illegal reference to 16-bit data in 'first operand' 我从未见过这种符号。有人能给我解释一下,以及如何修复这个错误吗 代码本身来自在C程序中编写的内联程序集。BX是一个16位寄存器,在编译32位代码时不能用于寻址数据。您可以将目标CPU更改为x86并使其在不更改代码的情况下工作 正确的语法在很大程度上取决于编译器和选定的方言 至少在NASM上,正
mov ES : [BX], AX
它引发了一个编译器错误:
illegal reference to 16-bit data in 'first operand'
我从未见过这种符号。有人能给我解释一下,以及如何修复这个错误吗
代码本身来自在C程序中编写的内联程序集。BX是一个16位寄存器,在编译32位代码时不能用于寻址数据。您可以将目标CPU更改为x86并使其在不更改代码的情况下工作
正确的语法在很大程度上取决于编译器和选定的方言 至少在NASM上,正确的语法应该是
MOV [ES:BX],AX
简而言之,整个内存引用需要放在方括号内。段重写,即使它们实际上是前缀(例如,
ES:
compiles to 26h),也需要包含在内存引用中。假定代码本身在实地址模式下工作。你知道我如何在C程序中做到这一点吗?你需要把它编译成16位程序