单片机原理与应用课后习题参考题答案1~6章

- - .. --

堆栈指针SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动。 2-12 什么是时钟周期、机器周期和指令周期?

答:(1)时钟周期(又称为振荡周期)是指振荡器产生一个振荡脉冲信号所用的时间,是振荡频率的倒数,称为拍节。

(2)机器周期是指CPU完成某一个规定操作所需的时间,8051单片机的一个机器周期包含6个状态,并依次表示为S1~S6,每个状态分为2个节拍。因此一个机器周期包含12个时钟周期(振荡周期),依次表示为:S1P1、S1P2、S2P1、…、S6P1、S6P2。

(3)指令周期是指CPU执行一条指令所需要的时间称为指令周期。MCS-51单片机指令周期根据指令的不同,可包含有1或2或4个机器周期。

第三章 MCS-51单片机指令系统

3-1 指出下列每一条指令的寻址方式及其完成的操作。 MOV 2FH,#40H MOV A,2FH MOV R1,#2FH MOV A,@R1 累加器A

MOV 2FH,A 答:直接寻址:

间接寻址:

;隐含寻址,将累加器A中的值移入片内2FH单元 MOV R1,4FH MOV R1,#4FH

3-2 内部RAM的4FH单元,可用哪几种寻址方式?分别举例说明。

;立即寻址,将40H移入片内2FH单元 ;直接寻址,将片内2FH单元的数移入累加器A ;立即寻址,将2FH移入当前寄存器组的R1单元 ;寄存器间接寻址,将寄存器R1中所存地址中的值移入

寄存器间接寻址: MOV A,@R1 3-3 指出下列各条指令中,45H代表什么? MOV A,#45H MOV A,45H MOV 45H,46H MOV 45H,#45H MOV C,45H 条指令的执行结果:

答:PSW的各位为11110000,即Cy=1,AC=1,F0=1,RS1=1,RS0=0,OV=0,P=0 (1)SUBB A,30H

结果:(A)=D4H,CY=1,AC=0,OV=1,P=0 (2)SUBB A,#30H

word 可编辑.

;数值 ;源地址 ;目标地址 ;目标地址和数值 ;源地址

3-4 已知:(A)=7AH,(R0)=30H,(30H)=0A5H,(PSW)=80H,请写出下列各

- - .. --

结果:(A)=49H,CY=0,AC=0,OV=0,P=1 (3)ADD A,R0

结果:(A)=AAH,CY=0,AC=0,OV=1,P=0 (4)ADD A,30H

结果:(A)=1FH,CY=1,AC=0,OV=0,P=1 (5)ADD A,#30H

结果:(A)=AAH,CY=0,AC=0,OV=1,P=0 (6)ADDC A,30H

结果:(A)=20H,CY=1,AC=1,OV=0,P=1 (7)SWAP A

结果:(A)=A7H,对标志位无影响 (8)XCHD A,@R0

结果:(A)=75H,(30H)=AAH,(R0)=AAH,P=1 (9)XCH A,30H

结果:(A)=0A5H,(30H)=7AH,P=0 (10)XCH A,R0

结果:(A)=30H,(R0)=7AH,P=0 (11)MOV A,@R0 结果:(A)=0A5H,P=0 (12)XCH A,@R0

结果:(A)=0A5H,(30H)=7AH,P=0 3-5 试分析以下程序段的执行结果: MOV SP,#3AH MOV A,#20H MOV B,#30H PUSH ACC PUSH B POP ACC POP B

结果:(SP)=3AH,(A)=30H,(B)=20H,(3BH)=20H,(3CH)=30H 3-6 指出下列指令的执行结果,并写出每条指令的机器码。 MOV 30H,#52H MOV A,#70H MOV A,30H

;(30H)=52H ;(A)=70H ;(A)=52H

01110101(753052H) 01110100(7470H) 11100101(E530H)

word 可编辑.

- - .. --

MOV R0,#30H MOV A,@R0 MOV A,#70H MOVX @DPTR,A MOV 30H,#40H MOV R0,#30H MOV A,@R0

;(R0)=30H ;A=52H ;(A)=70H ;(2030H)=70H ;(30H)=40H ;(R0)=30H ;(A)=40H

10101000(7830H) 11100010(E6H) 01110100(74H) 10010000(90H) 11110000(F0H) 01110101(75H) 01111000(78H) 11100110(E6H)

3-7 分析下列指令的执行结果,并写出每条指令的机器码。 MOV DPTR,#2030H ;(DPTR)=2030H

3-8 设R0的内容为32H,A的内容为48H,内部RAM的32H单元内容为80H,40单元内容为08H,指出在执行下列程序段后上述各单元内容的变化。

MOV A,@R0 MOV @R0,40H MOV 40H,A MOV R0,#35H

结果:(R0)=35H,(A)=80,(32H)=08H,(40H)=80H

3-9 已知:(A)=81H,(R0)=20H,(20H)=35H,指出执行完下列程序段后A的内容。

ANL A,#17H ORL 20H,A XRL A,@R0 CPL A 结果:(A)=CBH

3-10 用指令实现下述数据传送:

(1)内部RAM20H单元送内部RAM40H单元。 答:MOV 40H,20H

(2)外部RAM20H单元送R0寄存器。 答:MOV R1,#20H MOVX A,@R1 MOV R0,A (3)外部RAM20H单元送内部RAM20H单元 答:MOV R1,#20H MOVX A,@R1 MOV 20H,A (4)外部RAM1000H单元送内部RAM20H单元 答:MOV DPTR,#1000H MOVX A,@DPTR MOV 20H,A (5)外部ROM1000H单元送内部RAM20H单元。

答:MOV DPTR,#1000H MOV A,#00H MOVC A,@A+DPTR MOV 20H,A

;(A)=00000001 ;(20H)=00110101 ;(A)=00110100 ;(A)=11001011

word 可编辑.

- - .. --

(6) 外部ROM1000H单元送外部RAM20H单元。

答:MOV DPTR,#1000H MOV A,#00H MOVC A,@A+DPTR MOV R1,#20H MOVX @R1,A

3-11 已知16位二进制数的高8位和低8位分别存放在20H和21H单元,请编写将其右移一们的程序。

CLR C MOV A,20H RRC A MOV 20H,A MOV A,21H RRC A MOV 21H,A

3-12 编程实现内部RAM R0~R7的内容传递到20H~27H单元。

3-13 试编程进行两个16位数的减法,6F5DH-13B4H,结果存入内部RAM的30H和31H单元,30H存放差的低8位。

CLR C MOV A,#5DH SUBB A,#B4H MOV 30H,A MOV A,#6FH SUBB A,13H MOV 31H,A

3-14 编写程序,若累加器A的内容分别满足下列条件时,程序则至LABEL存储单元,设A中存放的是无符号数。

①A>=10 CJNE A,#10H,LAB LAB:JNC LABEL ...... LABEL:

②A>0 JNZ LABEL ...... LABEL:

③(A)<=10 MOV R0,A MOV A,#10 CJNE A,R0,LAB LAB:JNC LABEL ...... LABEL:

3-15 已知(SP)=25H,(PC)=2345H,(24H)=12H,(25H)=34H,(26H)=56H.问此时执行“RET”指令后,(SP)=?,(PC)=?

答:(SP)=23H,(PC)=3412H

word 可编辑.

联系客服:779662525#qq.com(#替换为@)