2

我对此很陌生,我正在尝试将值从一个数组移动到另一个数组,它应该是:

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       

请帮忙。

4

1 回答 1

3

我首先要看的是 aWORD是 16 位宽和eax32 位宽的事实。因此,当您将某些内容加载到eax(没有明确的大小说明符)时,您将获得 32 位而不是 16 位。

此外,我不相信你的值ecx会是你所期望的——你应该检查一下,记住它需要从n-1向下迭代到0包容性。你拥有它的方式,它是从n1

于 2012-04-22T23:50:31.967 回答