我无法在 Visual c express ediion 2008 中组装 movd (MMX) 指令

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)

Han*_*ant 5

.386
Run Code Online (Sandbox Code Playgroud)

那不行,386处理器没有这个指令。您必须以 .586(奔腾及更高版本)为目标,并明确声明您要使用 MMX 指令集。使固定:

.586
.mmx
Run Code Online (Sandbox Code Playgroud)

这将使汇编器接受 MOVD 指令。接下来你要做的就是修复操作数。从 ebx 移动到 eax 是无效的,而且毫无意义,您必须指定一个 MMx 寄存器。