8085程序用于乘以两个8位数
在本程序中,我们将了解如何使用 8085 微处理器乘以两个 8 位数。
问题陈述
编写 8085 汇编语言程序,将存储在内存位置的两个 8 位数相乘,并将 16 位结果存储到内存中。
讨论
8085 没有乘法运算。要获得乘法的结果,我们应该使用重复加法的方法。
两个 8 位数相乘后,可能会生成 1 字节或 2 字节的数字,因此我们使用两个寄存器来保存结果。
我们将数据保存在 8000H 和 8001H 位置。结果存储在 8050H 和 8051H 位置。
输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | DC |
8001 | AC |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 | |
---|---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 加载第一个操作数地址 | ||
F003 | 46 | MOV B, M | 将第一个操作数存储到 B | ||
F004 | 23 | INX H | 增加 HL 对 | ||
F005 | AF | XRA A | 清除累加器 | ||
F006 | 4F | MOV C, A | 将 00H 存储在寄存器 C 中 | ||
F007 | 86 | LOOP | ADD M | 将内存元素与累加器相加 | |
F008 | D2, 0C, F0 | JNC SKIP | 当进位标志为 0 时,跳过下一个任务 | ||
F00B | 0C | INR C | 增加 C,当进位为 1 时 | ||
F00C | 05 | SKIP | DCR B | 减少 B 寄存器 | |
F00D | C2,07, F0 | JNZ LOOP | 当 Z 标志不为 1 时跳转到循环 | ||
F010 | 21,50, 80 | LXI H,8050H | 加载目标地址 | ||
F013 | 71 | MOV M, C | 将 C 寄存器内容存储到内存中 | ||
F014 | 23 | INX H | 增加 HL 对 | ||
F015 | 77 | MOV M, A | 将累加器内容存储到内存中 | ||
F016 | 76 | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 93 |
8051 | D0 |
. . . | . . . |
广告