另外两个8位数字的8086给人错误的答案

问题描述 投票:1回答:1

我做了这个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
assembly masm x86-16 emu8086
1个回答
3
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.