Assembly 程序集错误:";指令操作数的大小必须相同;

Assembly 程序集错误:";指令操作数的大小必须相同;,assembly,x86,mov,Assembly,X86,Mov,我在这方面很新,我正在尝试将值从一个数组移动到另一个数组, 它应该是: vec1 = 1, 2, 3, 4, 5 vec2 = 5, 4, 3, 2, 1 但是我得到一个错误:“指令操作数必须是相同大小的” 请帮忙。我要看的第一件事是a字宽16位,eax宽32位。因此,当您将某些内容加载到eax(没有显式的大小说明符)时,您将得到32位而不是16位 此外,我不相信您的ecx值会是您所期望的-您应该检查它,记住它需要从n-1迭代到0。按照您的方式,它从n到1谢谢,这就是错误所在。我仍然有一些价值

我在这方面很新,我正在尝试将值从一个数组移动到另一个数组, 它应该是:

vec1 = 1, 2, 3, 4, 5
vec2 = 5, 4, 3, 2, 1
但是我得到一个错误:“指令操作数必须是相同大小的”


请帮忙。

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


此外,我不相信您的
ecx
值会是您所期望的-您应该检查它,记住它需要从
n-1
迭代到
0
。按照您的方式,它从
n
1

谢谢,这就是错误所在。我仍然有一些价值错误,但正如你所说,这是我的家庭作业:)谢谢。非常好的工作,为家庭作业问题提供了足够的信息。:)这可能是一个家庭作业问题,但它可能对其他汇编语言程序员有用。这一点很好,@Anderson,因为这个问题已经问了好几个月了。据推测,如果是家庭作业,学生现在要么通过了,要么失败了。所以我会让答案不那么晦涩。
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