8085微处理器中添加两个多字节数的程序


在本节中,我们将看到一个Intel 8085微处理器程序。该程序主要用于添加多字节数。

问题陈述

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

讨论

我们使用4字节数。这些数字存储在内存位置8501H和8505H中。一个额外的信息存储在位置8500H。在这里,我们存储字节计数。结果存储在位置85F0H。

HL对存储第一个操作数字节的地址,DE存储第二个操作数字节的地址。C保存字节计数。我们使用堆栈来存储结果的中间字节。完成加法运算后,我们从堆栈中弹出并存储到目标位置。

输入

地址
数据


8500
04
8501
19
8502
68
8503
12
8504
85
8505
88
8506
25
8507
17
8508
20


 

流程图

 

程序

地址
十六进制代码
标签
助记符
注释
F000
31, 00, 20
 LXI SP,2000H
初始化堆栈指针
F003
21, 00, 85
 LXI H,8500H
加载内存地址以获取字节计数
F006
4E
 MOV C,M
将内存内容加载到C寄存器
F007
06, 00
 MVI B,00H
清除B寄存器
F009
21, 01, 85
 LXI H, 8501H
加载第一个参数地址
F00C
11, 05, 85
 LXI D, 8505H
加载第二个参数地址
F00F
1A
LOOP
LDAX D
使用第二个操作数地址加载DE
F010
8E
 ADC M
将内存内容和进位与累加器相加
F011
F5


PUSH PSW
将累加器内容存储到堆栈中
F012
04


INR B
推入堆栈后增加b
F013
23


INX H
增加HL对以指向下一个地址
F014
13


INX D
增加DE对以指向下一个地址
F015
0D


DCR C
减少c,直到所有字节都未耗尽
F016
C2, 0F, F0


JNZ LOOP
当字节未被考虑时,再次循环
F019
D2, 20, F0


JNC SKIP
当进位=0时,跳转到存储
F01C
3E, 01


MVI A,01H
当进位=1时,将其推入堆栈
F01E
F5


PUSH PSW
将累加器内容存储到堆栈中
F01F
04


INR B
推入堆栈后增加b
F020
21, F0, 85
SKIP
LXI H,85F0H
加载目标指针
F023
F1
L1
POP PSW
弹出AF以从堆栈中取回字节
F024
77


MOV M,A
将Acc数据存储在HL指向的内存位置
F025
23


INX H
增加HL对以指向下一个地址
F026
05


DCR B
减少B
F027
C2, 23, F0


JNZ L1
转到L1以存储堆栈内容
F02A
76


HLT
终止程序


输出

地址
数据


85F0
00
85F1
A5
85F2
29
85F3
8D
85F4
A1


更新于: 2019年10月9日

5K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始
广告