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

📅  最后修改于: 2021-06-28 16:18:35             🧑  作者: Mango

问题–写一个程序减去两个16位数字,起始地址为2000 ,数字位于30003002存储器地址,然后将结果存储到30043006存储器地址。

例子 –

算法 –

  1. 将0000H加载到CX寄存器中(供借用)
  2. 从内存3000将数据加载到AX(累加器)
  3. 从存储器3002将数据加载到BX寄存器中
  4. 用累加器AX减去BX
  5. 如果没有借钱就跳
  6. CX递增1
  7. 将数据从AX(累加器)移至内存3004
  8. 将数据从CX寄存器移至内存3006
  9. 停止

程序 –

Memory Mnemonics Operands Comment
2000 MOV CX, 0000 [CX] <- 0000
2003 MOV AX, [3000] [AX] <- [3000]
2007 MOV BX, [3002] [BX] <- [3002]
200B SUB AX, BX [AX] <- [AX] – [BX]
200D JNC 2010 Jump if no borrow
200F INC CX [CX] <- [CX] + 1
2010 MOV [3004], AX [3004] <- [AX]
2014 MOV [3006], CX [3006] <- [CX]
2018 HLT Stop

解释 –

  1. MOV用于加载和存储数据。
  2. SUB用于减去两个数字,其中一个数字是否在累加器中。
  3. JNC是一个2位命令,用于检查借位是否从累加器生成。
  4. INC用于将寄存器加1。
  5. HLT用于停止程序。
  6. AX是一个累加器,用于加载和存储数据。
  7. BX,CX是通用寄存器,其中BX用于存储第二个数字,CX用于存储借位。