📜  8086程序添加两个带或不带进位的16位数字

📅  最后修改于: 2021-06-28 14:47:31             🧑  作者: 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 ADD AX, BX [AX] <- [AX] + [BX]
200D JNC 2010 Jump if no carry
200F INC CX [CX] <- [CX] + 1
2010 MOV [3004], AX [3004] <- [AX]
2014 MOV [3006], CX [3006] <- [CX]
2018 HLT Stop

解释 –

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