8085程序用于除两个16位数
在这里,我们将了解如何使用 8085 除两个 16 位数。
问题陈述
编写 8085 汇编语言程序来除两个 16 位数。
讨论
8085 没有除法运算。要执行除法,我们必须使用重复减法。要执行 16 位除法,我们必须对寄存器对执行相同的操作。因为寄存器对用于保存 16 位数据。
除数存储在 FC00 和 FC01 位置,被除数存储在 FC02 和 FC03。除法后,商将存储在 FC04 和 FC05,余数将存储在 FC06 和 FC07。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输入
地址 | 数据 |
---|---|
FC00 | 8A |
FC01 | 5C |
FC02 | 5A |
FC03 | 1D |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 01, 00, 00 | | LXI B,0000H | 清除 BC 寄存器对 |
F003 | 2A, 02, FC | | LHLD FC02H | 首先将除数放入 HL |
F006 | EB | | XCHG | 交换 DE 和 HL |
F007 | 2A, 00, FC | | LHLD FC00H | 获取被除数 |
F00A | 7D | LOOP | MOV A,L | 将 L 加载到 A |
F00B | 93 | | SUB E | 从 A 中减去 E |
F00C | 6F | | MOV L,A | 将 A 存储到 L |
F00D | 7C | | MOV A,H | 将 H 加载到 A |
F00E | 9A | | SBB D | 从 A 中减去 B 并带借位 |
F00F | 67 | | MOV H,A | 再次将 A 存储到 H |
F010 | DA, 17, F0 | | JC SKIP | 如果 CY 为 1,则跳过 |
F013 | 03 | | INX B | 将 B 增加 1 |
F014 | C3, 0A, F0 | | JMP LOOP | 跳转到循环 |
F017 | 19 | SKIP | DAD D | 将 HL 和 DE 相加 |
F018 | 22, 06, F0 | | SHLD FC06H | 将余数存储到 FC06 和 FC07 |
F01B | 69 | | MOV L,C | 将 C 加载到 L |
F01C | 60 | | MOV H,B | 将 B 加载到 H |
F01D | 22, 04, FC | | SHLD FC04H | 将商存储到 FC04 和 FC05 |
F020 | 76 | | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
FC04 | 03 |
FC05 | 00 |
FC06 | 7C |
FC07 | 04 |
广告