2013-12-16 25 views
-1

*指定給我的任務是編寫一個彙編程序,該程序可以找到三個8位值的總和並將其置於位置SUMS處的內存中。然後計算三個字變量的總和,並將其放置在內存中的位置SUMS + 2.使用以下數據:不存儲在另一個字數組中的字數組的總和

BYTE_ARRAY DB 10H,20H,30H 
WORD_ARRAY DW 1000H,2000H,3000H 
SUMS DW 0,0* 

我的問題是,下面的代碼給我一個錯誤

mov sums,al 

我明白一個是16位地址,另一個是8位地址,但有沒有其他解決方法?

編輯:

完整代碼:

org 100h 

.data 
byte_array db 10h,20h,30h 
word_array dw 1000h,2000h,3000h 


sums dw 0,0 

.code 

mov ax,@data 
mov ds,ax 
mov bx,offset byte_array 
mov al,[bx] 
inc bx 
add al,[bx] 
inc bx 
add al,[bx] 
mov si,offset sums 
mov [si],al 

mov bx,offset word_array 
mov ax,[bx] 
add ax,[bx+2] 
add ax,[bx+4] 
mov [bx+6], ax 





ret 

我剩下的就是我不明白SUMS + 2是什麼問題問我做的意義唯一的問題?

+0

不,這是我得到的。我已經解決了只嘗試添加到3 8位值。問題的其餘部分未觸及。 – Codex

回答

0
SUMS DW 0,0 
mov sums,al 

正如你聲明你的數組是字大小,你的操作數應該匹配。

mov sums, ax 
+0

此外,存儲三個字變量的總和並將其存儲在位置SUMS + 2的存儲器中的任務將通過指針的手段來實現?正確? – Codex

+0

這可以做到,而且是有道理的。這並不是嚴格意義上的。而且,由於代碼丟失,我沒有對該部分發表評論。 – Devolus

1

al是8位。

sum是16位。

所以他們有衝突。

相關問題