2012-04-22 87 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

相關問題