问题–在8085微处理器中编写汇编语言程序,以显示对8位数字的较低和较高半字节的屏蔽。
例子 –
假设– 8位数字存储在存储单元2050中。在对半字节进行屏蔽之后,低阶半字节存储在存储单元3050中,高阶半字节存储在存储单元3051中。
算法 –
- 将存储单元2050中的内容加载到累加器A中。
- 将A的内容移到寄存器B中。
- 用0F执行A的AND运算,并将结果存储在内存位置3050中。
- 将B的内容移到A中。
- 用0F执行A的AND运算,并使用RLC指令4次反转结果。
- 将结果存储在内存位置3051中。
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT |
---|---|---|
2000 | LDA 2050 | A <- M[2050] |
2003 | MOV B, A | B <- A |
2004 | ANI 0F | A <- A (AND) 0F |
2006 | STA 3050 | M[3050] <- A |
2009 | MOV A, B | A <- B |
200A | ANI 0F | A <- A (AND) 0F |
200C | RLC | rotate content of A left by 1 bit without carry |
200D | RLC | rotate content of A left by 1 bit without carry |
200E | RLC | rotate content of A left by 1 bit without carry |
200F | RLC | rotate content of A left by 1 bit without carry |
2010 | STA 3051 | M[3051] <- A |
2013 | HLT | END |
说明–使用了寄存器A,B:
- LDA 2050:将存储位置2050的内容加载到累加器A中。
- MOV B,A:将A的内容移至B。
- ANI 0F:用0F执行A的AND运算,并将结果存储回A。
- STA 3050:将A的内容存储在存储器位置3050中。
- MOV A,B:在A中移动B的内容。
- ANI 0F:用0F执行A的AND运算,并将结果存储回A。
- RLC:将A的内容左移一位而不进位。使用此指令4次以反转A的内容。
- STA 3051:将A的内容存储在存储单元3051中。
- HLT:停止执行程序,并停止任何进一步的执行。