8085微处理器中两个16位二进制数相乘的程序


在这里,我们将看到一个英特尔8085微处理器的程序。此程序将计算两个16位数字的乘积。

问题陈述 -

编写一个8085汇编语言程序,将存储在8000H - 8001H和8002H - 8003H中的两个16位数字相乘。

讨论 -

此程序从内存位置8000H – 8001H和8002H – 8003H获取16位数据。32位结果存储在位置8050H – 8053H。

这里我们测试了两个16位数字。结果如下。

1111H × 1111H = 01234321H

1C24H × 0752H = 00CDFF88H

输入

第一个输入

地址
数据


8000
11
8001
11
8002
11
8003
11


第二个输入

地址
数据


8000
24
8001
1C
8002
52
8003
07



流程图

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

程序

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


LXI SP,2000H
初始化堆栈指针
F003
2A, 00, 80


LHLD 8000H
从8000H - 8001H加载16位数据
F006
EB


XCHG
交换HL和DE中的数据
F007
2A, 02, 80


LHLD 8002H
加载第二个16位数字
F00A
E5


PUSH H
将HL对压入堆栈
F00B
C1


POP B
从堆栈加载BC,使用HL对内容
F00C
21, 00, 00


LXI H,0000H
清空HL对
F00F
22, 52, 80


SHLD 8052H
将0000H存储为结果的低2字节
F012
19
LOOP
DAD D
将第一个数字添加到HL对
F013
D2, 1F, F0


JNC NINC
如果CY = 0,跳转到NINC
F016
E5


PUSH H
将HL压入堆栈
F017
2A, 52, 80


LHLD 8052
从结果的低2字节加载HL对
F01A
23


INX H
增加HL对
F01B
22, 52, 80


SHLD 8052H
将HL对存储为结果的低2字节
F01E
E1


POP H
将堆栈内容弹出到HL对
F01F
0B
NINC
DCX B
减少BC寄存器对
F020
78


MOV A,B
将B加载到A
F021
B1


ORA C
将C与A进行或运算
F022
C2, 12, F0


JNZ LOOP
当Z = 0时,跳转到LOOP
F025
22, 50, 80


SHLD 8050H
将HL对存储到8050H
F028
76


HLT
终止程序

 

输出

第一个输出

地址
数据


8050
21
8051
43
8052
23
8053
01


第二个输出

地址
数据


8050
88
8051
FF
8052
CD
8053
00


更新于: 2019年10月9日

808 次查看

启动你的职业生涯

通过完成课程获得认证

开始学习
广告