8085程序用于除两个16位数
在这里,我们将了解如何使用 8085 除两个 16 位数。
问题陈述
编写 8085 汇编语言程序来除两个 16 位数。
讨论
8085 没有除法运算。要执行除法,我们必须使用重复减法。要执行 16 位除法,我们必须对寄存器对执行相同的操作。因为寄存器对用于保存 16 位数据。
除数存储在 FC00 和 FC01 位置,被除数存储在 FC02 和 FC03。除法后,商将存储在 FC04 和 FC05,余数将存储在 FC06 和 FC07。
输入
| 地址 | 数据 |
|---|---|
| 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 |
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP