8085程序用于乘以两个16位二进制数


现在让我们来看一个 Intel 8085 微处理器的程序。这个程序将计算两个16位数的乘积。

问题陈述

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

讨论

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

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

      1111H × 1111H = 01234321H 

      1C24H × 0752H = 00CDFF88H

输入

第一个输入

地址数据
.
.
.
.
.
.
800011
800111
800211
800311
.
.
.
.
.
.

第二个输入 

地址数据
.
.
.
.
.
.
800024
80011C
800252
800307
.
.
.
.
.
.


流程图

程序

地址十六进制代码标签助记符注释
F00031, 00, 20
LXI SP,2000H   初始化堆栈指针
F0032A, 00, 80
LHLD 8000H  从 8000H - 8001H 加载 16 位数据
F006EB
XCHG    交换 HL 和 DE 中的数据
F0072A, 02, 80
LHLD 8002H  加载第二个 16 位数
F00AE5
PUSH H  将 HL 对压入堆栈
F00BC1
POP B   从堆栈中加载 BC 与 HL 对的内容
F00C21, 00, 00
LXI H,0000H清除 HL 对
F00F22, 52, 80
SHLD 8052H   将 0000H 存储为结果的低 2 个字节
F01219LOOPDAD D   将第一个数加到 HL 对中
F013D2, 1F, F0
JNC NINC    如果 CY = 0,跳转到 NINC
F016E5
PUSH H  将 HL 压入堆栈
F0172A, 52, 80
LHLD 8052   从结果的低 2 个字节加载 HL 对
F01A23
INX H   增加 HL 对
F01B22, 52, 80
SHLD 8052H   将 HL 对存储为结果的低 2 个字节  
F01EE1
POP H   将堆栈内容弹出到 HL 对
F01F0BNINCDCX B   减少 BC 寄存器对
F02078
MOV A,B将 B 加载到 A
F021B1
ORA C   将 C 与 A 进行或运算
F022C2, 12, F0
JNZ LOOP    当 Z = 0 时,跳转到 LOOP
F02522, 50, 80
SHLD 8050H  将 HL 对存储到 8050H
F02876
HLT终止程序


输出

第一个输出

地址数据
.
.
.
.
.
.
805021
805143
805223
805301
.
.
.
.
.
.

第二个输出 

地址数据
.
.
.
.
.
.
805088
8051FF
8052CD
805300
.
.
.
.
.
.

更新于: 2019年7月30日

3K+ 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告