我做了这个8086 MASM程序中添加两个8位数字54H和13h这是应该给予67H的答案,而是让07作为答案。有人可以告诉我什么是错我的代码?
这是我的代码
; addition of two 8bit numbers
data segment
num1 db 54h
num2 db 13h
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
mov al,num1
mov bl,num2
add al,bl
mov ah,00h
aaa
mov dl,ah
mov dh,al
add dl,30h
mov ah,02h
int 21h
mov dl,dh
add dl,30h
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end start
67H是103D。十进制数有三位数。你不能这个十六进制数转换成在任何情况下的压缩BCD数(两个字节)。但也许你想治疗67H为压缩BCD数。没有x86指令的压缩BCD数转换为压缩BCD数,你必须自己半字节隔离。
更改
mov ah,00h
aaa
mov dl,ah
mov dh,al
至
mov dl,al
mov dh,al
shr dl, 4
and dh, 0Fh