📜  8085程序减去两个带有或不带有借位的8位数字

📅  最后修改于: 2021-06-28 08:54:41             🧑  作者: Mango

问题–写一个程序减去两个带有或不带有借位的8位数字,其中第一个数字在2500存储器地址,第二个数字在2501存储器地址,然后将结果存储到2502并借入2503存储器地址。

例子 –

算法 –

  1. 将00加载到寄存器C中(用于借用)
  2. 将两个8位数字从内存加载到寄存器中
  3. 将一个数字移到累加器
  4. 用累加器减去第二个数字
  5. 如果借位不等于1,请转到步骤7
  6. 借贷增量登记1
  7. 将累加器内容存储在内存中
  8. 将寄存器的内容移入累加器
  9. 将累加器的内容存储在其他存储位置
  10. 停止

程序 –

Memory Mnemonics Operands Comment
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 Jump If no borrow
200A INR C [C] <- [C] + 1
200B STA 2502 [A] -> [2502], Result
200E MOV A, C [A] <- [C]
2010 STA 2503 [A] -> [2503], Borrow
2013 HLT Stop

说明–寄存器A,H,L,C用于一般用途:

  1. MOV用于将数据从内存传输到累加器(1字节)
  2. LHLD用于通过16位地址(3字节指令)直接加载寄存器对
  3. MVI用于将数据立即移入任何寄存器(2字节)
  4. STA用于将累加器的内容存储到内存中(3字节指令)
  5. INR用于将寄存器增加1(1字节指令)
  6. 如果没有借位,则使用JNC跳转(3字节指令)
  7. SUB用于减去两个数字,其中一个在累加器中(1字节)
  8. HLT用于暂停程序

请参见: 8086程序在有或没有借位的情况下减去两个16位数字