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

📅  最后修改于: 2021-06-28 09:42:19             🧑  作者: Mango

问题–在8085微处理器中编写汇编语言程序,以减去两个16位数字。

假设 –

  • 程序的起始地址:2000
  • 输入存储器位置:2050、2051、2052、2053
  • 输出存储位置:2054、2055

例子 –

INPUT:
       (2050H) = 19H
       (2051H) = 6AH 
       (2052H) = 15H 
       (2053H) = 5CH

OUTPUT:
        (2054H) = 04H
        (2055H) = OEH

结果:
因此,我们减去了两个16位数字。

算法 –

  1. 在16位数字的L寄存器中获取LSB,在H寄存器中获取MSB。
  2. 用DE寄存器交换HL寄存器的内容。
  3. 再次获得16位数字的L寄存器中的LSB和H寄存器中的MSB。
  4. 从E寄存器的内容中减去L寄存器的内容。
  5. 从D寄存器的内容中减去H寄存器的内容,并从上一步中借用。
  6. 将结果存储在内存位置。

程序 –

MEMORY ADDRESS MNEMONICS COMMENTS
2000 LHLD 2050 Load H-L pair with address 2050
2003 XCHG EXCHANGE H-L PAIR WITH D-E PAIR
2004 LHLD 2052 Load H-L pair with address 2052
2007 MVI C, 00 C<-00H
2009 MOV A, E A<-E
200A SUB L A<-A-L
200B STA 2054 2054<-A
200E MOV A, D A<-D
200F SBB H SUBTRACT WITH BORROW
2010 STA 2055 2055<-A
2013 HLT TERMINATES THE PROGRAM

解释 –

  1. LHLD 2050:将地址为2050的HL对加载。
  2. XCHG:与DE交换HL对的内容。
  3. LHLD 2052:将地址对2050装入HL对。
  4. MOV A,E:将寄存器E的内容移至A。
  5. SUB L:用寄存器L的内容减去A的内容。
  6. STA 2054:将来自累加器的结果存储到内存地址2054。
  7. MOV A,D:将寄存器D的内容移至A。
  8. SBB H:用借位将寄存器H的内容减去A的内容。
  9. STA 2055:将结果从累加器存储到内存地址2055。
  10. HLT:停止执行程序,并停止任何进一步的执行。