程序集错误:“指令操作数必须大小相同”

时间:2012-04-22 23:46:28

标签: assembly mov

我是新手,我正在尝试将值从一个数组移动到另一个数组, 它假设是:

vec1 = 1, 2, 3, 4, 5
vec2 = 5, 4, 3, 2, 1

但是我收到一个错误:“指令操作数必须大小相同”

TITLE program

     .386
     .model flat
     extern _ExitProcess@4:Near
     .data

     vec1 WORD 1, 2, 3, 4, 5; original array
     vec2 WORD 5 DUP(?)
     .code                 
_main:

    mov ebx, 0
    mov ecx, lengthof vec1
    DO:
    mov eax, vec1[ebx]
    mov vec2[ecx], eax
    inc ebx
    loop DO

    push    0                       
    call    _ExitProcess@4          

    end   _main       

请帮忙。

1 个答案:

答案 0 :(得分:3)

我要注意的第一件事是a WORD是16位宽,eax是32位宽。因此,当您将某些内容加载到eax(没有明确的大小说明符)时,您将获得32位而不是16位。

此外,我并不相信您的ecx值会符合您的预期 - 您应该检查一下,请记住它需要从n-1迭代到{ {1}}包容性。你拥有它的方式,从0n