8085微处理器中两个两位BCD数的乘法程序


在这里,我们将看到一个8085微处理器程序,该程序将找到两个BCD数的乘法结果。

问题陈述

编写一个8085汇编语言程序来查找两个BCD数的乘积。这些数字存储在8000H和8001H位置。

讨论

在这个程序中,数据从8000H和8001H获取。结果存储在8050H和8051H位置。

众所周知,8085没有乘法指令,因此我们必须使用重复加法的方法。在这个过程中,在每次加法之后,我们都会调整累加器的值以获得十进制等效值。当有进位时,我们就会增加MSB(最高有效位)的值。我们可以使用INR指令来递增,但这里使用ADI 01H。INR指令不会影响CY标志,因此我们需要ADI指令。

输入

第一个输入

地址
数据


8000
12
8001
20


第二个输入

地址
数据


8000
27
8001
03


 

流程图

 

 

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

程序

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


LXI H,8000H
加载第一个操作数地址
F003
46


MOV B,M
将第一个操作数存储到B寄存器
F004
23


INX H
增加HL寄存器对
F005
4E


MOV C,M
将第二个操作数存储到C寄存器
F006
1E, 00


MVI E, 00H
清除E寄存器
F008
63


MOV H,E
清除H寄存器
F009
7B


MOV A,E
清除A寄存器
F00A
B9


CMP C
比较C和A
F00B
CA, 23, F0


JZ DONE
当Z=0时,跳转到DONE
F00E
80
LOOP:
ADD B
将B加到A
F00F
27


DAA
十进制调整
F010
57


MOV D,A
将A存储到D
F011
D2, 19, F0


JNC NINC
跳转到NINC
F014
7C


MOV A,H
将H存储到A
F015
C6, 01


ADI 01H
将A增加1
F017
27


DAA
十进制调整
F018
67


MOV H,A
将A恢复到H
F019
7B
NINC:
MOV A,E
将E加载到A
F01A
C6, 01


ADI 01H
将A增加1
F01C
27


DAA
十进制调整
F01D
5F


MOV E,A
将A恢复到E
F01E
B9


CMP C
比较C和A
F01F
7A


MOV A,D
将D加载到A
F020
C2, 0E, F0


JNZ LOOP
跳转到LOOP
F023
6F
DONE:
MOV L,A
将A加载到L
F024
22, 50, 80


SHLD 8050H
将HL寄存器对存储到8050H和8051H位置
F027
76


HLT
终止程序


输出

第一个输出

地址
数据


8050
40
8051
02


第二个输出

地址
数据


8050
81
8051
00


更新于:2019年10月9日

浏览量:506

启动您的职业生涯

通过完成课程获得认证

开始学习
广告