我正在尝试编写一段代码(最初用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。
答案 0 :(得分:1)
我已经弄清楚了。您不能直接使用寄存器;你只能通过指针(至少用masm)来放置数据。
mov edx, offset packedbytes
movq mm0, [edx]
mov edx, offset packedwords
movq mm1, [edx]
mov edx, offset packeddwords
movq mm2, [edx]
这应该可以解决问题。