8085微处理器中两个8位数的乘法程序(移位加法法)


让我们来看一个8085微处理器的问题。在这个问题中,我们将看到如何使用移位加法法(而不是加法法)来乘以两个数字。

问题陈述

编写一个8085汇编语言程序,使用移位加法法来乘以两个8位数。

讨论

移位加法法是一种高效的流程。在这个程序中,我们从内存位置8000H和8001H获取数字。16位结果存储在8050H及其后的位置。

在这个方法中,我们将第一个数字放入DE寄存器对中。实际数字放在E寄存器中,D寄存器保持00H。第二个数字被放入A寄存器中。由于数字是8位数,因此我们将累加器内容移位八次。当旋转时进位标志被设置时,DE的内容将与HL相加。最初HL对将保持0000H。然后HL也与其自身相加。这样就生成了结果。

输入

地址
数据


8000
25
8001
2A


 

流程图

程序

地址
十六进制代码
标号
助记符
注释
F000
21, 00, 80


LXI H,8000H
指向第一个操作数
F003
5E


MOV E,M
将第一个操作数加载到E
F004
16, 00


MVI D,00H
清零D寄存器
F006
23


INX H
指向下一个位置
F007
7E


MOV A,M
获取下一个操作数
F008
0E, 08


MVI C,08H
用08H初始化计数器
F00A
21, 00, 00


LXI H, 0000H
清零HL对
F00D
0F
LOOP
RRC
将累加器内容右移
F00E
D2, 12, F0


JNC SKIP
如果进位标志为0,则跳转到SKIP
F011
19


DAD D
将DE与HL相加
F012
EB
SKIP
XCHG
交换DE和HL
F013
29


DAD H
将HL与自身相加
F014
EB


XCHG
再次交换DE和HL的内容
F015
0D


DCR C
递减C寄存器
F016
C2, 0D, F0


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


SHLD 8050H
存储结果
F01C
76


HLT
结束程序

 

输出

地址
数据


8050
12
8051
06


更新于:2019年10月9日

739 次查看

启动你的职业生涯

完成课程获得认证

开始学习
广告