2014-05-07 30 views
0

所以我有一些家庭作業,這使我撕開我的頭髮。大會:加雙字到雙字

這是代碼:

VALUE1 DW 0153H 
    DW 1624H 
VALUE2 DW 0328H 
    DW 3C44H 
RESULT DW 0 
    DW 0 
    DW 0 
    DW 0 

    MOV SI,OFFSET VALUE1 
    MOV DI,OFFSET VALUE2 
    MOV AX,[SI] 
    INC SI 
    ADD AX,[SI] 
    MOV BX,[DI] 
    INC DI 
    ADD BX,[DI] 

教授要我們在值1開頭的雙單詞添加到VALUE2起雙字,然後將其保存爲結果之一。我一直試圖在網上尋找幫助,但我一直堅持了一個多小時。任何幫助?這段代碼是我從書中看到的,我懷疑它是正確的,但是這是我迄今爲止所擁有的

+0

如果你只想找提示:查找'ADC'(帶進位加法),想想值的地址(提示:'INC SI' /'INC DI'不完全正確)。 – user786653

+0

但是不是ADC命令加兩個寄存器和進位?我有點困惑,究竟該如何運作。迷惑我的部分是值的地址。我通常處理ex:Value1 = 0025H,value2 = 0026H,當他們都被扔進相同的值時,我不知道如何訪問它們。這是我在課堂上從未理解的東西之一 – user3613698

+0

VALUE1等於'16240153H'並作爲字節值'53H','01H','24H','16H'存儲在內存中(因爲x86是一個[little- endian](http://en.wikipedia.org/wiki/Endianness)體系結構)。這是你遇到困難的部分嗎? – user786653

回答

0

您必須先添加單詞,然後添加單詞,然後添加其他單詞。

嘗試使用此代碼:

d dd 1111111 
d1 dd 2222222 
d2 dd ? 

lea bx,op1 
mov ax,[bx] 
mov dx,[bx+2] 
lea bx,op2 
add ax,[bx] 
adc dx,[bx+2] ;add two word and carry 
lea bx,d 
mov [bx],ax 
mov 2[bx],dx