📜  8085程序将16位数字反转

📅  最后修改于: 2021-06-28 14:38:12             🧑  作者: Mango

问题–在8085微处理器中编写汇编语言程序以反转16位数字。

示例–假设16位数字存储在内存位置2050和2051中。

算法 –

  1. 将存储器单元2050的内容加载到寄存器L中,并将存储器单元2051的内容加载到寄存器H中
  2. 将L的内容移至累加器A中
  3. 通过执行4次RLC指令来反转A的内容
  4. 在L中移动A的内容
  5. 在A中移动H的内容
  6. 通过执行4次RLC指令来反转A的内容
  7. 将L的内容移至H
  8. 在L中移动A的内容
  9. 将L的内容存储在内存位置2050中并将H的内容存储在内存位置2051中

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000 LHLD 2050 L <- M[2050], H <- M[2051]
2003 MOV A, L A <- L
2004 RLC Rotate accumulator content left by 1 bit without carry
2005 RLC Rotate accumulator content left by 1 bit without carry
2006 RLC Rotate accumulator content left by 1 bit without carry
2007 RLC Rotate accumulator content left by 1 bit without carry
2008 MOV L, A L <- A
2009 MOV A, H A <- H
200A RLC Rotate accumulator content left by 1 bit without carry
200B RLC Rotate accumulator content left by 1 bit without carry
200C RLC Rotate accumulator content left by 1 bit without carry
200D RLC Rotate accumulator content left by 1 bit without carry
200E MOV H, L H <- L
200F MOV L, A L <- A
2010 SHLD 2050 M[2050] <- L, M[2051] <- H
2013 HLT END

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

  1. LHLD 2050:在L中加载存储位置2050的内容,在H中加载2051存储的内容。
  2. MOV A,L:移动A中L的内容。
  3. RLC:将A的内容左移一位而不进位。重复执行当前指令4次,以使A的内容反转。
  4. MOV L,A:在L中移动A的内容。
  5. MOV A,H:移动A中H的内容。
  6. RLC:将A的内容左移一位而不进位。重复执行当前指令4次,以使A的内容反转。
  7. MOV H,L:移动H中L的内容。
  8. MOV L,A:在L中移动A的内容。
  9. SHLD 2050:存储2050年的L和2051年的H的内容。
  10. HLT:停止执行程序,并停止任何进一步的执行。