基于8085微处理器中X的内容对两个BCD数进行运算的程序


这里我们将看到一个8085程序。这个程序将根据选择对BCD数执行不同的操作。

问题陈述

编写一个8085汇编语言程序,根据我们的选择对两个8位BCD数执行一些操作。

讨论

在这个程序中,我们进行选择。选择值存储在内存位置8000H(命名为X)。BCD数存储在位置8001H和8002H。我们将结果存储在位置8050H和8051H。

如果选择是00H,则它将执行加法;对于01H,它将执行减法;对于02H,它将执行乘法运算。

输入

第一个输入

地址
数据


8000
00
8001
97
8002
88


第二个输入

地址
数据


8000
01
8001
97
8002
88



第三个输入

地址
数据


8000
02
8001
05
8002
04



流程图


程序

地址
十六进制代码
标签
助记符
注释
F000
21, 00, 80


LXI H,8000H
指向获取选择的位置
F003
7E


MOV A,M
将选择加载到A中
F004
FE, 00


CPI 00H
比较是否进行加法
F006
CA,14, F0


JZ ADD
跳转到加法
F009
FE, 01


CPI 01H
比较是否进行减法
F00B
CA,27, F0


JZ SUB
跳转到减法
F00E
FE, 02


CPI 02H
比较是否进行乘法
F010
CA, 3F, F0


JZ MUL
跳转到乘法
F013
76


HLT
终止程序
F014
23
ADD
INX H
指向第一个操作数
F015
7E


MOV A,M
将操作数加载到A
F016
23


INX H
指向下一个操作数
F017
86


ADD M
将M与A相加
F018
27


DAA
十进制调整
F019
6F


MOV L,A
将A存储到L
F01A
D2, 22, F0


JNC SKP1
如果CY = 0,则跳转到SKP1
F01D
26, 01


MVI H,01H
将H加载为01H
F01F
C3, 62, F0


JMP STORE
存储结果
F022
26, 00
SKP1
MVI H,00H
清除HL
F024
C3, 62, F0


JMP STORE
将HL作为结果存储
F027
23
SUB
INX H
指向第一个操作数
F028
46


MOV B,M
将操作数加载到B
F029
3E, 99


MVI A,99H
将A加载为99H
F02B
23


INX H
指向下一个操作数
F02C
96


SUB M
从A中减去M
F02D
C6, 01


ADI 01H
添加01H以获取10的补码
F02F
80


ADD B
将B与A相加
F030
27


DAA
调整十进制
F031
6F


MOV L,A
将A存储到L
F032
DA, 3A, F0


JC SKP2
如果CY = 1,则跳转到SKP2
F035
26, FF


MVI H,FFH
将H加载为FFH
F037
C3, 62, F0


JMP STORE
存储结果
F03A
26, 00
SKP2
MVI H,00H
清除HL
F03C
C3, 62, F0


JMP STORE
将HL作为结果存储
F03F
23
MUL
INX H
指向第一个操作数
F040
46


MOV B,M
将操作数加载到B
F041
23


INX H
指向下一个操作数
F042
4E


MOV C,M
加载第二个操作数
F043
26, 00


MVI H,00H
清除H寄存器
F045
AF


XRA A
清除A寄存器
F046
B9


CMP C
将C与A比较
F047
CA, 5E, F0


JZ DONE
如果Z = 1,则跳转到DONE
F04A
80
LOOP
ADD B
将B与A相加
F04B
27


DAA
调整十进制
F04C
57


MOV D,A
将A移动到D
F04D
D2, 55, F0


JNC NINC
如果CY = 0,则不递增H
F050
7C


MOV A,H
将H加载到A
F051
C6, 01


ADI 01H
增加A
F053
27


DAA
调整十进制
F054
67


MOV H,A
返回H
F055
79
NINC
MOV A,C
将A加载到C
F056
C6, 99


ADI 99H
将A和99H相加
F058
27


DAA
调整十进制
F059
4F


MOV C,A
再次将A加载到C
F05A
7A


MOV A,D
将数据从D返回到A
F05B
C2, 4A, F0


JNZ LOOP
如果Z = 0,则跳转到LOOP
F05E
6F
DONE
MOV L,A
将A转到L
F05F
C3, 62, F0


JMP STORE
将HL作为结果存储
F062
22, 50, 80
STORE
SHLD 8050H
从HL存储结果
F065
76


HLT
终止程序

 

输出

第一个输出

地址
数据


8050
85
8051
01


第二个输出

地址
数据


8050
09
8051
00


第三个输出

地址
数据


8050
20
8051
00


更新于:2019年10月9日

377 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告