2012-04-22 59 views
2

我非常新的这个和我试图从一个阵列移动值到其他, 它假设是:装配错误:“指令操作数必须是相同大小”

vec1 = 1, 2, 3, 4, 5 
vec2 = 5, 4, 3, 2, 1 

但我得到一个错误:“指令操作数必须是相同的大小”

TITLE program 

    .386 
    .model flat 
    extern [email protected]: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 [email protected]   

    end _main  

请大家帮忙。

回答

3

我会看到的第一件事情是,WORD是16位宽,eax是32位宽。所以,当你加载一些东西到eax(没有明确的大小说明符)时,你会得到32位而不是16.

此外,我不相信你的ecx的值将是你所期望的 - 你应该检查一下,请记住它需要从n-1一直迭代到0(含)。你有它的方式,它从n1

+0

谢谢,那是错误。我仍然有一些价值的错误,但正如你所说这是我的功课:) 谢谢。 – kirlev 2012-04-23 00:07:11

+0

+1。为家庭作业问题证明足够的信息非常好。 :) – 2012-04-23 00:17:32

+0

这可能是一个家庭作业问题,但它可能对其他汇编语言程序员有用。 – 2013-02-26 05:46:52

相关问题