问题–编写一个程序以在第一个数字位于时减去两个带借位或不借位的8位数字2500内存地址, 第二个数字在2501内存地址并将结果存储到2502借入2503内存地址。
示例–
算法–
- 将00加载到寄存器C中(用于借用)
- 从内存中将两个8位数字加载到寄存器中
- 将一个数字移到累加器
- 用累加器减去第二个数字
- 如果借位不等于1, 请转到步骤7
- 借贷增量登记1
- 将累加器内容存储在内存中
- 将寄存器的内容移入累加器
- 将累加器的内容存储在其他存储位置
- 停止
程序–
内存 | 助记符 | 操作数 | 注释 |
---|---|---|---|
2000 | MVI | C, 00 | [C] <-00 |
2002 | LHLD | 2500 | [H-L] <-[2500] |
2005 | MOV | A, H | [A] <-[H] |
2006 | SUB | L | [A] <-[A] – [L] |
2007 | JNC | 200B | 如果没有借位就跳 |
200A | INR | C | [C] <-[C] + 1 |
200B | STA | 2502 | [A]-> [2502], 结果 |
200E | MOV | A, C | [A] <-[C] |
2010 | STA | 2503 | [A]-> [2503], 借用 |
2013 | HLT | 停止 |
说明–寄存器A, H, L, C用于一般用途:
- 影片用于将数据从存储器传输到累加器(1字节)
- 低密度脂蛋白用于直接使用16位地址(3字节指令)加载寄存器对
- MVI用于将数据立即移入任何寄存器(2字节)
- STA用于将累加器的内容存储到内存中(3字节指令)
- INR用于将寄存器增加1(1字节指令)
- 联合会如果没有借位, 则用于跳转(3字节指令)
- 潜艇用于减去两个数字, 其中一个数字在累加器中(1字节)
- HLT用于暂停程序
请参阅:8086程序减去两个带有或不带有借位的16位数字