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 |
. . . | . . . |
广告