我是新手,我正在尝试将值从一个数组移动到另一个数组, 它假设是:
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
请帮忙。
答案 0 :(得分:3)
我要注意的第一件事是a WORD
是16位宽,eax
是32位宽。因此,当您将某些内容加载到eax
(没有明确的大小说明符)时,您将获得32位而不是16位。
此外,我并不相信您的ecx
值会符合您的预期 - 您应该检查一下,请记住它需要从n-1
迭代到{ {1}}包容性。你拥有它的方式,从0
到n
。