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(Pentium以上)をターゲットにして、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 に答える