问题–在8085微处理器中编写汇编语言程序,将一个字节分成两个半字节并将结果存储在2001H和2002H中。
例子 –
算法 –
- 将存储位置2500的内容加载到累加器A中。
- 现在,我们将对累加器和OFH的内容执行AND操作。
- 现在,使用STA,我们将结果存储在2501H内存位置。
- 使用LDA,我们会将2500H的内容加载到累加器中。
- 再次执行“与”运算以将另一个半字节即“与”运算与累加器和F0H的内容分开。
- 现在将累加器中的每一位右移一个位置,并重复此步骤四次。
- 现在使用STA,我们将在2502H的存储器位置中存储另一个半字节。
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT |
---|---|---|
2000 | LDA 2500H | A <- M[2500] |
2003 | ANI 0FH | A <- A (AND) 0FH |
2005 | STA 2501H | M[2501] <- A |
2008 | LDA 2500H | A <- M[2500] |
200B | ANI F0H | A <- A (AND) F0H |
200D | RRC | Rotate right by one position |
200E | RRC | Rotate right by one position |
200F | RRC | Rotate right by one position |
2010 | RRC | Rotate right by one position |
2011 | STA 2502H | M[2502] <- A |
2014 | HLT | Stop the program. |
解释 –
RRC –累加器的每个二进制位向右旋转一个位置。 D0位放置在D7的位置以及进位标志中。 CY根据位D0进行修改。
- LDA 2500H –将存储器位置2500的内容加载到累加器A中。
- ANI 0FH –对累加器和0FH的内容执行AND操作。
- STA 2501H –将累加器的内容存储到存储位置2501H。
- LDA 2500H –将存储器位置2500的内容加载到累加器A中。
- ANI F0H –对累加器和F0H的内容执行“与”运算。
- RRC –将累加器中的每一位右移一个位置。
- RRC –将累加器中的每一位右移一个位置。
- RRC –将累加器中的每一位右移一个位置。
- RRC –将累加器中的每一位右移一个位置。
- STA 2502H –将累加器的内容存储到内存位置2502H。
- HLT –停止执行程序。