8085程序用于乘以两个8位数(移位加法方法)


现在让我们来看一个英特尔8085微处理器的程序。在这个程序中,我们将看到如何使用移位加法方法来乘以两个数字。

问题陈述:

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

讨论:

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

在这种方法中,我们将第一个数字放入DE寄存器对中。实际数字放在E寄存器中,D寄存器保存00H。第二个数字被取入A寄存器。由于数字是8位数,因此我们将累加器的内容移位8次。当旋转时进位标志被设置时,DE的内容将与HL相加。最初HL寄存器对将保存0000H。然后HL本身也与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与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年7月30日

4K+ 浏览量

启动你的职业生涯

通过完成课程获得认证

开始
广告