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と、16 ビットではなく 32 ビットになります。

さらに、あなたの値があなたが期待するものになるとは確信していません-ecxそれを確認する必要があります。あなたが持っているように、それは からに行きます.n-10n1

于 2012-04-22T23:50:31.967 に答える