8085程序用于减去两个BCD数


这里我们将看到如何使用8085进行BCD减法。

问题陈述

编写8085汇编语言程序,执行存储在8001和8002位置的两个数的BCD减法。结果将存储在8050和8051。

讨论

要减去两个BCD数,我们将使用十的补码方法。将第一个数存储到B中,将99加载到A中,然后减去该数以获得9的补码。之后,加上1得到10的补码。我们不能使用INR指令增加。这不会影响CY标志。所以我们必须使用ADI 01。然后将使用DAA指令调整十进制。然后,如果结果为负数,我们将FF存储为高位字节,否则将00存储为高位字节。

输入

地址
数据
.
.
.
.
.
.
8000
01
8001
97
8002
88
.
.
.
.
.
.

 

流程图

 

程序

地址
十六进制代码
标签
助记符
注释
F000
21, 01, 80
 
LXI H,8001H
指向获取选择的地址
F003
46

 
MOV B,M

将操作数加载到B
F004
3E, 99
 
MVI A,99H
将99H加载到A
F006
23

 
INX H

指向下一个操作数
F007
96
 
SUB M
从A中减去M
F008
C6, 01

 
ADI 01H

加上01H以获得10的补码
F00A
80
 
ADD B
将B与A相加
F00B
27

 
DAA

调整十进制
F00C
6F
 
MOV L,A
将A存储到L
F00D
DA, 3A, F0

 
JC SKP2

如果CY = 1,跳转到SKP2
F010
26, FF
 
MVI H,FFH
将FFH加载到H
F012
C3, 62, F0

 
JMP STORE

存储结果
F015
26, 00
SKP2
MVI H,00H
清除HL
F017
22, 50, 80

STORE
SHLD 8050H

从HL存储结果
F01A
76
 
HLT
终止程序

 

输出

地址
数据
.
.
.
.
.
.
8050
09
8051
00
.
.
.
.
.
.

 

 

 

 

 

 

更新于: 2019年7月30日

4K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告