0
我想在彙編語言中添加兩個十六進制數.one是0fh(十進制15)另一個是0eh(十進制14)。我得到sum = 00011101這是十進制的二進制數29.但我的預期結果是00101001 (其中0010的2二進制值,和1001是9二進制值)。這裏是我的代碼:如何在彙編語言中添加兩個十六進制數字?
name "add-sub"
org 100h
mov al, 0fh ; hex=0fh=dec15
mov bl, 0eh ; hex=0eh=dec14
add bl,al
mov cx, 8
print: mov ah, 2 ; print function. interupt er subfunction
mov dl, '0'
test bl, 10000000b ; test first bit.
jz zero
mov dl, '1'
zero: int 21h; find interupt subfunction
shl bl, 1
loop print
; print hexa suffix:
mov dl, 'h'
int 21h
; wait for any key press:
mov ah, 0
int 16h
ret
優秀更換
如果我沒有錯的或AL = 00101001,這意味着之後我們獲得了我們預期的結果!那麼爲什麼我們需要循環的其餘部分?如果我們直接打印該值,那麼問題是什麼? – user2252617 2014-10-28 19:53:36
@ user2252617:您需要循環將結果轉換爲可打印的ASCII值('0'和'1')。請考慮我**僅根據您的問題糾正了代碼,還有其他問題需要處理;-)。 – rkhb 2014-10-28 20:19:58
感謝您的回答。當我添加兩個數字時,有一件事令人困惑:添加al,bl(al = 3,bl = 2)al的值是多少?它是十進制格式(5)還是二進制格式(00000101)?如果值是二進制格式,那麼shl ah,4在這裏工作(據我所知在潛水29之後10商2是mov到ah並提醒9到人)?如果該值是十進制格式,那麼它將如何用二進制值進行測試?對不起,有很多問題! – user2252617 2014-10-28 20:42:35