问题–在8085微处理器中编写汇编语言程序以反转16位数字。
示例–假设16位数字存储在内存位置2050和2051中。
算法 –
- 将存储器单元2050的内容加载到寄存器L中,并将存储器单元2051的内容加载到寄存器H中
- 将L的内容移至累加器A中
- 通过执行4次RLC指令来反转A的内容
- 在L中移动A的内容
- 在A中移动H的内容
- 通过执行4次RLC指令来反转A的内容
- 将L的内容移至H
- 在L中移动A的内容
- 将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用于一般用途。
- LHLD 2050:在L中加载存储位置2050的内容,在H中加载2051存储的内容。
- MOV A,L:移动A中L的内容。
- RLC:将A的内容左移一位而不进位。重复执行当前指令4次,以使A的内容反转。
- MOV L,A:在L中移动A的内容。
- MOV A,H:移动A中H的内容。
- RLC:将A的内容左移一位而不进位。重复执行当前指令4次,以使A的内容反转。
- MOV H,L:移动H中L的内容。
- MOV L,A:在L中移动A的内容。
- SHLD 2050:存储2050年的L和2051年的H的内容。
- HLT:停止执行程序,并停止任何进一步的执行。