0

当我尝试编译movd指令时,它显示错误为

error A2085:instruction or register not accepted in current CPU mode

我的代码如下:

.386                
.model flat, c                                           
.code

add_func_asm PROC                                                 
movd     eax, ebx
ret    
add_func_asm endp

END

这是文件,我从文件中.asm调用了这个函数C

我使用下面的代码修复了它

.586    
.mmx            
.model flat, c                                           
.code                          
add_func_asm PROC                                                 
movd     mm1, ebx
ret    
add_func_asm endp

END
4

3 回答 3

5
.386

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

.586
.mmx

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

于 2013-01-23T14:35:26.593 回答
1

MOVD 和 MOVQ 是 MMX 指令,因此您需要使用 .MMX(或 .XMM)指令来启用指令集。

于 2013-01-23T14:08:16.343 回答
0

改为尝试mov eax, ebx移动 32 位。

于 2013-01-23T18:29:15.140 回答