题目
1. 设内部 RAM 中 59H 单元的内容为 50H,写出当执行下列程序段后寄存器A,R0 和内部 RAM 中 50H,51H 单元的内容为何值?MOVA,59HMOVR0,AMOVA,#00HMOV@R0,AMOVA,#25HMOV51H,AMOV52H,#70H
1. 设内部 RAM 中 59H 单元的内容为 50H,写出当执行下列程序段后寄存器A,R0 和内部 RAM 中 50H,51H 单元的内容为何值?MOVA,59HMOVR0,AMOVA,#00HMOV@R0,AMOVA,#25HMOV51H,AMOV52H,#70H
题目解答
答案
解: MOVA,59H; A=50HMOVR0,A; RO=50HMOVA,#00H; A=00HMOV@R0,A; 50H=00HMOVA,#25H; A=25HMOV51H,A; 51H=25HMOV52H,#70H; 52H=70H所以: A=25H R0=50H; 50H=00H 51H=25H
解析
考查要点:本题主要考查对8051单片机指令的执行过程理解,特别是寄存器与内存之间的数据传输以及立即寻址、寄存器间接寻址的使用。
解题核心思路:
- 按顺序逐条分析指令,跟踪寄存器(A、R0)和内存单元(50H、51H)的变化。
- 明确指令类型:
MOV A, 直接地址:将内存数据传入AMOV R0, A:将A的值传给R0MOV A, #立即数:将立即数传入AMOV @R0, A:将A的值存入R0指向的内存地址MOV 直接地址, A:将A的值存入指定内存地址MOV 直接地址, #立即数:将立即数存入指定内存地址
破题关键点:
- 注意
@R0的含义:表示通过R0寄存器间接寻址的内存单元。 - 区分内存操作的目标地址:如
MOV51H, A是将A存入51H单元,而MOV52H, #70H是直接写入立即数。
指令执行过程分析
1. MOVA, 59H
- 操作:将内存地址59H的值(50H)传入A
- 结果:
A = 50H
2. MOVR0, A
- 操作:将A的值(50H)传给R0
- 结果:
R0 = 50H
3. MOVA, #00H
- 操作:将立即数00H传入A
- 结果:
A = 00H
4. MOV@R0, A
- 操作:将A的值(00H)存入R0指向的内存地址(R0=50H → 地址50H)
- 结果:
50H = 00H
5. MOVA, #25H
- 操作:将立即数25H传入A
- 结果:
A = 25H
6. MOV51H, A
- 操作:将A的值(25H)存入内存地址51H
- 结果:
51H = 25H
7. MOV52H, #70H
- 操作:将立即数70H存入内存地址52H(本题未要求,但需注意题目未问52H)