use*_*149 0 windows x86 assembly masm mmx
当我尝试编译movd指令时,它显示错误为
error A2085:instruction or register not accepted in current CPU mode
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
.386
.model flat, c
.code
add_func_asm PROC
movd eax, ebx
ret
add_func_asm endp
END
Run Code Online (Sandbox Code Playgroud)
这是.asm文件,我从C文件中调用了这个函数
我使用下面的代码修复了它
.586
.mmx
.model flat, c
.code
add_func_asm PROC
movd mm1, ebx
ret
add_func_asm endp
END
Run Code Online (Sandbox Code Playgroud)
.386
Run Code Online (Sandbox Code Playgroud)
那不行,386处理器没有这个指令。您必须以 .586(奔腾及更高版本)为目标,并明确声明您要使用 MMX 指令集。使固定:
.586
.mmx
Run Code Online (Sandbox Code Playgroud)
这将使汇编器接受 MOVD 指令。接下来你要做的就是修复操作数。从 ebx 移动到 eax 是无效的,而且毫无意义,您必须指定一个 MMx 寄存器。