8085程序将两个16位二进制数相乘

现在让我们看一下Intel 8085微处理器的程序。该程序将计算两个16位数字的乘法。

问题陈述

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

讨论区

该程序从存储单元8000H – 8001Hand 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   InitializeStack指针
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   用堆栈中的HL对内容加载BC
F00C21,00,00
LXI H,0000H清除HL对
F00F22、52、80
SHLD 8052H   存储0000具有LS 2字节的结果
F01219LOOPDAD D 
将第一个号码添加到HL对
F013D2、1F,F0
JNC NINC  
如果CY = 0,则跳至NINC
F016E5
PUSH H
将HL推入堆栈
F0172A,52、80
LHLD 8052   从LS的2字节结果中加载HL对
F01A23
INX H   增加HLpair
F01B22、52、80
SHLD 8052H   将HL对存储为结果的LS 2字节  
F01EE1
POP H   将堆栈内容弹出到HL对
F01F0BDCX B 
DCX B   减少BCregister对
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
.
.
.
.
.
.