基于X内容对两个数字进行运算的8085程序


现在让我们来看一个Intel 8085微处理器的程序。在这个程序中,我们将看到如何根据选择执行不同的操作。

问题陈述:

编写8085汇编语言程序,根据选择对两个8位二进制数执行一些运算。

讨论:

在这个程序中,我们进行选择。选择值存储在内存位置8000H(命名为X)。数字存储在位置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,26, F0

JZ SUB
跳转到减法
F00E
FE, 02

CPI 02H
比较乘法
F010
CA, 38, 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
6F

MOV L,A
将A存储到L
F019
D2, 21, F0

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

MVI H,01H
将H加载为01H
F01E
C3, 49, F0

JMP STORE
存储结果
F021
26, 00
SKP1
MVI H,00H
清除HL
F023
C3, 49, F0

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

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

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

SUB M
从A中减去第二个操作数
F02A
6F

MOV L,A
将A存储到L
F02B
D2, 33, F0

JNC SKP2
如果CY = 0,则跳转到SKP2
F02E
26, FF

MVI H,FFH
将H加载为FFH
F030
C3, 49, F0

JMP STORE
存储结果
F033
26, 00
SKP2
MVI H,00H
清除HL
F035
C3, 49, F0

JMP STORE
将HL存储为结果
F038
23
MUL
INX H
指向第一个操作数
F039
5E

MOV E,M
将操作数加载到E
F03A
16, 00

MVI D,00H
清除D寄存器
F03C
23

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

MOV C,M
加载第二个操作数
F03E
21, 00, 00

LXI H,0000H
清除HL对
F041
19
LOOP
DAD D
将第一个操作数添加到HL
F042
0D

DCR C
递减C
F043
C2, 41, F0

JNZ LOOP
如果Z = 0,则跳转到LOOP
F046
C3, 49, F0

JMP STORE
存储结果
F049
22, 50, 80
STORE
SHLD 8050H
从HL存储结果
F04C
76

HLT
终止程序

输出:

第一个输出

地址
数据
.
.
.
.
.
.
8050
1F
8051
01
.
.
.
.
.
.

第二个输出

地址
数据
.
.
.
.
.
.
8050
0F
8051
00
.
.
.
.
.
.

第三个输出

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



更新于:2019年7月30日

241 次查看

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.