📜  8086程序减去两个8位BCD编号

📅  最后修改于: 2021-06-28 17:03:03             🧑  作者: Mango

问题–在8086微处理器中编写一个程序,找出两个8位BCD数字的减法,其中数字从起始存储地址2000:500存储,然后将结果存储到存储地址2000:600,并在2000进行进位(借位): 601。

例子 –

算法 –

  1. 将数据从偏移500加载到寄存器AL(第一个数字)
  2. 将数据从偏移量501加载到寄存器BL(第二个数字)
  3. 减去这两个数字(寄存器AL和寄存器BL的内容)
  4. 应用DAS指令(十进制调整)
  5. 将结果(寄存器AL的内容)存储到偏移量600
  6. 将寄存器AL设置为00
  7. 通过进位(借位)将寄存器AL的内容添加到自身
  8. 将结果(寄存器AL的内容)存储到偏移量601
  9. 停止

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
400 MOV AL, [500] AL<-[500]
404 MOV BL, [501] BL<-[501]
408 SUB AL, BL AL<-AL-BL
40A DAS DECIMAL ADJUST AL
40B MOV [600], AL AL->[600]
40F MOV AL, 00 AL<-00
411 ADC AL, AL AL<-AL+AL+cy(prev)
413 MOV [601], AL AL->[601]
417 HLT END

解释 –

  1. MOV AL,[500]将数据从偏移500加载到寄存器AL。
  2. MOV BL,[501]将数据从偏移量501加载到寄存器BL。
  3. SUB AL,BL减去寄存器AL和BL的内容。
  4. DAS十进制调整AL。
  5. MOV [600],AL将数据从寄存器AL存储到偏移量600。
  6. MOV AL,00将寄存器AL的值设置为00。
  7. ADC AL, AL通过借位将寄存器AL的内容添加到AL中。
  8. MOV [601],AL将数据从寄存器AL存储到偏移量601。
  9. HLT结束。