8085程序:两个多字节数的减法


现在让我们来看一个Intel 8085微处理器的程序。这个程序主要用于减去多字节数。

问题陈述:

编写8085汇编语言程序,以添加两个多字节数。

讨论:

我们使用3字节数。这些数字存储在内存位置8001H和8004H中。8000H位置存储了另一个信息。在这里,我们存储字节计数。结果存储在位置8050H中。

我们将第一个操作数块地址放入DE寄存器对中,并将第二个操作数块地址放入HL寄存器对中。BC寄存器对存储结果的目标地址。首先,我们清除进位标志。在8085中,没有指令可以将CY标志设置为0,因此我们需要两个连续的指令。STC和CMC,第一个是将CY设置为1,然后对其取反使其为0。我们从内存中获取数字,并执行带借位的减法指令SBB以获得结果。因此,生成整个结果。

输入:

地址
数据
.
.
.
.
.
.
8000
03
8001
73
8002
21
8003
65
8004
88
8005
51
8006
27
.
.
.
.
.
.

流程图:

程序:

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

LXI D,8001H
指向第一个操作数
F003
21, 04, 80

LXI H,8004H
指向第二个操作数
F006
01, 50, 80

LXI B,8050H
指向目标地址
F009
37

STC
设置进位
F00A
3F

CMC
取反进位
F00B
1A
LOOP
LDAX D
从DE指向的内存加载A
F00C
9E

SBB M
减去内存元素和借位
F00D
02

STAX B
将结果存储到BC指向的内存中
F00E
23

INX H
增加HL寄存器对
F00F
13

INX D
增加DE寄存器对
F010
03

INX B
增加BC寄存器对
F011
3A, 00, 80

LDA 8000H
将大小加载到A中
F014
3D

DCR A
将A减1
F015
32, 00, 80

STA 8000H
将更新的大小存储到内存中
F018
C2, 0B, F0

JNZ LOOP
如果Z=0,则跳转到LOOP
F01B
76

HLT
终止程序

输出:

地址
数据
.
.
.
.
.
.
8050
EB
8051
CF
8052
3D
.
.
.
.
.
.


更新于: 2019年7月30日

2K+浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告