MMX错误A2022:指令操作数必须大小相同

时间:2012-08-19 13:36:20

标签: visual-studio masm mmx

我正在尝试编写一段代码(最初用C ++编写的函数)并且汇编程序抛出此错误:   错误A2022:指令操作数必须大小相同

在使用'movq'指令的行。

代码:

.686P       
.mmx          
.xmm           
.MODEL flat, stdcall
.STACK 4096

.data
packedbytes db 10, 20, -30, 40, 50, 60, -70, 80
packedwords dw 10, 20, 30, 40
packeddwords dd 10, 20

.code
main PROC 

    movq mm0, packedbytes   ; <== error thrown here
    movq mm1, packedwords   ; <== here
    movq mm2, packeddwords  ; <== and here

    mov a0, 04d
    mov al, 0d  
    int 21h     
main ENDP
END main

我在32位盒子上使用masm。

1 个答案:

答案 0 :(得分:1)

我已经弄清楚了。您不能直接使用寄存器;你只能通过指针(至少用masm)来放置数据。

    mov edx, offset packedbytes
    movq mm0, [edx] 
    mov edx, offset packedwords
    movq mm1, [edx]
    mov edx, offset packeddwords   
    movq mm2, [edx] 

这应该可以解决问题。