8085微处理器程序:累加N个字存储单元的内容


在这里,我们将看到一个8085微处理器程序。该程序将累加N个字存储单元的内容。

问题陈述

编写一个8085汇编语言程序,用于累加存储在内存中的N个16位数字。

讨论

这些16位数字从内存地址8001H开始存储。N的值存储在地址8000H。累加完成后,结果将从地址8050H开始存储。

在8085中,我们只有少量寄存器。因此,我们将计数存储到内存中,当我们需要更新它时,我们将从内存中获取它,更新它,然后再次将其存储到内存中。

这里16位数字存储在DE和HL寄存器对中,通过使用DAD指令来进行累加。

输入

第一个输入

地址
数据


8000
03
8001
34
8002
12
8003
78
8004
56
8005
BC
8006
9A


 

流程图

程序

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


LXI SP,C000H
初始化堆栈指针
F003
21, 00, 00


LXI H,0000H
清零HL寄存器对
F006
22, 52, 80


SHLD 8052H
将HL寄存器对内容存储到8052H和8053H
F009
01, 00, 80


LXI B,8000H
指向地址以获取数字计数
F00C
0A


LDAX B
将计数加载到累加器
F00D
32, 00, 90


STA 9000H
临时存储累加器内容
F010
03
LOOP
INX B
指向获取低字节
F011
0A


LDAX B
将内存内容加载到累加器
F012
5F


MOV E,A
将累加器内容存储到E寄存器
F013
03


INX B
指向获取高字节
F014
0A


LDAX B
将内存内容加载到累加器
F015
57


MOV D,A
将累加器内容存储到D寄存器
F016
19


DAD D
将DE寄存器对与HL寄存器对相加
F017
D2, 23, F0


JNC SKIP
如果CY=0则跳转到SKIP
F01A
E5


PUSH H
将HL寄存器对内容压入堆栈
F01B
2A, 52, 80


LHLD 8052H
将HL寄存器对加载为8052H和8253H的内容
F01E
23


INX H
增加HL寄存器对内容
F01F
22, 52, 80


SHLD 8052H
将HL寄存器对内容存储到8052H和8053H
F022
E1


POP H
从堆栈中取回HL寄存器对内容
F023
3A, 00, 90
SKIP
LDA 9000H
加载临时存储的数据
F026
3D


DCR A
将A寄存器减1
F027
32, 00, 90


STA 9000H
存储更新后的值
F02A
C2, 10, F0


JNZ LOOP
如果Z=0则跳转到LOOP
F02D
22, 50, 80


SHLD 8050H
将HL寄存器对内容存储到8050H和8051H
F030
76


HLT
终止程序

 

输出

第一个输出

地址
数据


8050
68
8051
03
8052
01
8053
00


更新于: 2019年10月9日

308 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告