使用子程序的8085程序,用于累加十个压缩BCD数。


我们将在此了解如何使用8085累加十个压缩BCD数。

问题陈述

一组十个压缩BCD数存储在从8040H到8049H开始的内存位置。

  1. 编写一个带有子程序的程序来以BCD形式累加这些数字。如果产生进位,则将其保存到寄存器B中,并将其调整为BCD。最终的和将小于9999BCD。将和存储在8060H和8061H位置。

  2. 编写第二个子程序来解压存储在寄存器A和B中的BCD和,并将它们存储在从8062H开始的OutputBuffer内存中。最高有效位(BCD4)应存储在8065H,最低有效位(BCD1)应存储在8062H。

讨论

数字从8040开始。由于B将存储进位,因此我们必须先清除B。在第一阶段,我们必须从内存中获取数字,然后将它们作为BCD数字相加,并相应地存储它们。在下一阶段,将完成解压任务。在该部分中,我们获取16位BCD数,然后将其分解为4位数字。然后将它们存储到指定位置。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输入

地址
数据


8040
12
8041
23
8042
42
8043
55
8044
10
8045
99
8046
35
8047
45
8048
76
8049
81


 

流程图

 

 

程序

地址
十六进制代码
标签
助记符
注释
8000
21, 40, 80
 
LXI H 8040H
用IN-BUFFER的第一个位置初始化指针
8003
0E, 0A
 
MVI C 0AH

用要累加的数据个数初始化计数器
8005
AF
 
XRA A
清除累加器和寄存器B的内容
8006
47
 
MOV B, A

 
8007
CD, 23, 80
NEXTBCD
CALL
BCDADD
累加BCD数的子程序
800A 
23
 
INX H

转到下一个位置
800B 
0D
 
DCR C
递减计数器,直到达到0
800C 
C2, 07, 80
 
JNZ
NEXTBCD

 
800F 
32, 60, 80
 
STA 8060 H
存储A中可用的结果字节
8012
57
 
MOV D, A

临时D = A
8013
78
 
MOV A, B
将B放入A
8014
32, 61, 80
 
STA 8061 H

将其存储到OUT-BUFFER中
8017
7A
 
MOV A, D
恢复A
8018
21, 62, 80
 
LXI H 8062H

用OUT-BUFFER的最后一个位置初始化指针
801B 
CD, 2E, 80
 
CALL
UNPAK
从压缩BCD数中分离两个半字节的子程序
801E 
78
 
MOV A, B

将B复制到A
801F 
CD, 2E, 80
 
CALL UNPAK
从压缩BCD数中分离两个半字节的子程序
8022
76
 
HLT

终止程序
8023
86
BCDADD
ADD M
将HL寄存器对指定的内存位置的内容与A相加
8024
27
 
DAA

十进制调整累加器
8025
D0
 
RNC
如果没有产生进位,则返回到调用程序
8026
57
 
MOV D, A

将A复制到D
8027
78
 
MOV A, B
如果产生进位,则调整寄存器B的内容
8028
C6. 01
 
ADI 01H

 
802A 
27
 
DAA
 
802B 
47
 
MOV B, A

 
802C 
7A
 
MOV A, D
将D复制到A
802D 
C9
 
RET

返回到调用程序
802E 
57
UNPAK
MOV D, A
将A复制到D
802F 
E6, 0F
 
ANI 0FH

屏蔽掉最高有效四位
8031
77
 
MOV M, A
将A写入内存
8032
23
 
INX H

转到下一个位置
8033
7A
 
MOV A, D
将D复制到A
8034
E6, F0
 
ANI F0H

屏蔽掉最低有效四位
8036
0F
 
RRC
旋转累加器4次以获得第一个BCD数字
8037
0F
 
RRC

 
8038
0F
 
RRC
 
8039
0F
 
RRC

 
803A 
77
 
MOV M, A
将A写入内存
803B 
23
 
INX H

转到下一个位置
803C 
C9
 
RET
返回到调用程序

 

输出

地址
数据


8060
78
8061
04
8062
08
8063
07
8064
04
8065
00


 

 

 

更新于:2019年7月30日

浏览量1K+

启动您的职业生涯

通过完成课程获得认证

开始学习
广告