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