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