单片机,第三章答案解析

思考题:

【3-1】汇编语言与C语言哪种语言的可读性和可移植性强?在对速度和时序敏感的场合应该使用什么语言?对于复杂的单片机系统一般采用C与汇编混合编程的形式这句话对吗?

【3-2】二进制机器语言与C和汇编语言两者之间是什么关系?用C或汇编编制的程序在ROM中是以编译后的二进制代码的形式存放这句话对吗? 【3-3】80C51系列单片机指令的格式包含哪几个部分?各部分之间的间隔符是什么?四个部分中哪个部分是必须存在的,哪几个部分是可有可无的?标号的格式和代表的意义是? 【3-4】80C51系列单片机有哪几种寻址方式?

【3-5】80C51单片机中立即数是存放在ROM中还是RAM中? 【3-6】判断下列说法是否正确。

(1)立即数寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中。( ) (2)指令周期是执行一条指令的时间。( ) (3)指令中直接给出的操作数称为直接寻址。( ) (4)内部寄存器Rn(n=0~7)可作为间接寻址寄存器。( ) 【3-7】80C51单片机可以进行直接寻址的区域是? 【3-8】80C51单片机可以进行寄存器寻址的范围是?

【3-9】80C51单片机可以进行寄存器间接寻址的寄存器是?寻址的范围是?

【3-10】在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的( )。

【3-11】80C51单片机变址寻址方式中可以作基址的寄存器是?可以作变址的寄存器是?@A+PC,@A+DPTR所找到的操作数是在ROM中对吗?

【3-12】80C51单片机相对寻址改变的是PC的当前值,即改变的CPU执行指令的顺序这句话对否? 【3-13】若访问特殊功能寄存器,只可以采用那种寻址方式? 【3-14】若访问外部RAM单元,只可以使用哪种寻址方式? 【3-15】若访问内部RAM单元,可使用哪些寻址方式? 【3-16】若访问内外程序存储器,可使用哪些寻址方式? 【3-17】80C51单片机可以进行位寻址的字节单元范围除11个可位寻址的特殊功能寄存器外还包括哪个区域?分别找出位地址是00H、08H、22H、7FH、D0H、E0H对应的字节地址? 【3-18】已知(30H)=40H,(40H)=10H,(10H)=32H,(P1)=0EFH,试写出执行以下程序段后有关单元的内容。 MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@Ri MOV @R1,P1 MOV P2,P1

MOV 10H,#20H

MOV 30H,10H

【3-19】为什么对基本型的51子系列单片机(片内RAM为128B),其寄存器间接寻址方式(例如MOV A,@R0)中,规定R0或R1的内容不能超过7FH?

【3-20】外部RAM数据传送指令有几条?试比较下面每一组中两条指令的区别? (1)MOVX A,@R1 MOVX A,@DPTR (2)MOVX A,@DPTR MOVX @DPTR,A (3)MOV @R0,A MOVX @R0,A

(4)MOVC A,@A+DPTR MOVX A,@DPTR 【3-21】假定累加器A中的内容为30H,执行指令 1000H:MOVC A,@A+PC 后,把程序存储器( )

单元的内容送入累加器A中。

【3-22】在AT89S51中,PC和DPTR都用于提供地址,但PC是为访问( )提供地址,而DPTR是为访问( )和( )提供地址。

【3-23】试写出完成以下数据传送的指令序列。 (1)R1的内容传送R0;

(2)片外RAM 60H单元的内容送入R0;

(3)片外RAM 60H单元的内容送入片内RAM 40H单元;

(4)片外RAM 1000H单元的内容送入片外RAM 40H单元。

【3-24】试编程,将外部RAM 1000H单元中的数据与内部RAM 60H单元中的数据相互交换。 【3-25】对程序存储器的读操作。只能使用( )。

A)MOV指令 B)PUSH指令 C)MOVX指令 D)MOVC指令 【3-26】(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后,(DPH)=( ),(DPL)=( ),(SP)=( )。 POP DPH POP DPL POP SP 【3-27】假定,(SP)=60H,(A)=30H,(B)=70H,执行下列指令后,SP的内容为( ),61H单元的内容为( ),62H单元的内容为( )。 PUSH Acc PUSH B

【3-28】已知程序执行前有(A)=02H,(SP)=52H,(51H)=FFH,(52H)=FFH。下述程序执行后,(A)=( ),(SP)=( ),(51H)=( ),(52H)=( ),(PC)=( )。 POP DPH POP DPL

MOV DPTR,#4000H RL A MOV B,A

MOVC A,@A+DPTR PUSH Acc MOV A,B INC A MOVC A,@A+DPTR PUSH Acc RET

ORG 4000H

DB 10H,80H,30H,50H,30H,50H

【3-29】已知(A)=5BH,(R1)=40H,(40H)=C3H,(PSW)=81H,试写出各条指令的执行结果,并说明程序状态字的状态。

(1)XCH A,R1 (2)XCH A,40H (3)XCH A,@R1 (4)XCHD A,@Rl (5)SWAP A

(6)ADD A,R1 (7)ADD A,40H (8)ADD A,#40H (9)ADDC A,40H (10)SUBB A,40H (11)SUBB A,#40H

【3-30】试分析下面两组指令的执行结果有何不同?

(1)MOV A,#0FFH (2)MOV A,#0FFH INC A ADD A,#O1H 【3-31】DA A指令有什么作用?怎样使用?

【3-32】已知(A)=87H,(R0)=42H,(42H)=24H,请写出执行下列程序段后A的内容。 ANL A,#23H

ORL 42H,A

XRL A,@R0 CPL A

【3-33】写出完成如下要求的指令.但是不能改变未涉及位的内容。 (1)把Acc.3,Acc.4,Acc.5和Acc.6清0 。 (2)把累加器A的中间4位清0。 (3)把Acc.2和Acc.3置1。 【3-34】假定(A)=83H,(R0)=17H,(17H)=34H,执行以下指令后,(A)=( )。 ANL A,#17H ORL 17H,A XRL A,@R0 CPL A

【3-35】假设(A)=55H,(R3)=0AAH,在执行指令“ANL A,R3”后,(A)=( ),(R3)=( )。 【3-36】已知组合逻辑关系式为F=AB+C,请编写模拟其功能的程序。设A、B、C、F均代表位地址。 【3-37】编程完成下述操作。

(1)将外部RAM 1000H单元的所有位取反;

(2)将外部RAM 60H单元的高2位清零,低两位变反,其余位保持不变。

【3-38】试用位操作指令实现逻辑操作: P1.0=(10H∨P1.0),PSW.1=(18H∨CY)。 【3-39】仔细辨析下列指令的意义,找出错误的指令,并简要说明原因。

(1)CLR A (2)CLR EOH

(3)CLR ACC (4)CLR ACC.0

(5)CPL A (6)CPL EOH

(7)CPL ACC (8)CPL ACC.0

【3-40】指令LJMP addrl6和AJMP addrl1的区别是什么?

【3-41】试分析以下两段程序中各条指令的作用,程序执行完将转向何处? (1)MOV p1,#0CAH MOV A,#56H JB P1.22,L1 JNB ACC.3,L2 …… L1: : L2: :

(2)MOV A,#43H

JB ACC.2,L1

JBC ACC.6,L2 …… L1: : L2: :

【3-42】判断以下指令的正误。

(1)MOV 28H,@R2; (2)DEC DPTR; (3)INC DPTR; (4)CLR R0; (5)CPL R5

(6)MOV R0,R1; (7)PUSH DPTR; (8)MOV F0,C; (9)MOV F0,Acc.3;

(10)MOVX A,@R1; (11)MOV C,30H; (12)RLC R0

【3-43】借助指令表(附录B),对如下指令代码(十六进制)进行手工反汇编。 FF C0 E0 E5 F0

【3-44】以下指令中,属于单纯读引脚的指令是( )。 A)MOV P1,A

B)ORL P1,#0FH C)MOV C,Pl.5 D)ANL P1,#0FH

【3-45】用AT89S51单片机的P1口做输出,经驱动电路接8个发光二极管,见图3-11所示。当输出位为“0”时,发光二极管点亮;输出为“1”时,发光二极管为暗。试编制程序①将8个发光二极管全部点亮;②将8个发光二极管全部熄灭;③将8个发光二极管隔一个点亮一个;④每次亮一个,循环左移,一个一个地亮,循环不止。

图3-11 单片机P1口驱动发光二极管

【3-46】如图3-12所示,这是由AT89C51构建的最小系统,外部连接了4个按键S1~S4及4个发光二极管LEDl-LED4,P1口的高4位用于接收按键的输入状态,而低4位用于驱动发光二极管。请结合图示,编写程序,完成以下要求。

(1)若Sl闭合,则发光二极管LEDl点亮;若S2闭合,则发光二极管.LED2点亮……。以此类推,即发光二极管实时反映按键状态。

(2)用4个发光二极管实现对按键键值的BCD编码显示。即若Sl闭合,键值为1,编码为0001,LEDl点亮;若S2闭合,键值为2,编码为0010,LED2点亮;若S3闭合,键值为3,编码为0011,LEDI、LED2同时点亮;若S4闭合,键值为4,编码为0100,LED3点亮。

图3-12

第三章思考题答案: 【3-1】解答:

(1)C语言那种语言的可读性和可移植性强,例如对于用C语言编制的51单片机程序,只需要稍作修改就可以移植到PIC类型的单片机上。

(2)汇编语言适用于对速度和时序敏感的场合。 (3)正确。 【3-2】解答:

(1)C语言与汇编语言经过编译后将是二进制的机器语言。 (2)正确。 【3-3】解答:

(1)一条完整的汇编语言指令包括标号、操作码、操作数和注释四部分。

(2)其中标号与操作码用冒号分隔,操作码和操作数之间用空格,多个操作数之间用逗号分隔,注释用冒号开头。

(3)四个部分中操作码是必须存在的,其他三部分在有的指令中可以不出现。 (4)标号是一种符号地址。标号以字母开头,由1-8个字母或数字组成。

【3-4】解答:80C51系列单片机提供了七种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址(基址寄存器+变址寄存器间接寻址)、相对寻址、位寻址。 【3-5】解答:立即寻址寻址方式中的立即数是存放在ROM中。 【3-6】解答:(1)正确 (2)正确 (3)错误 (4)错误

【3-7】解答:直接寻址方式可访问以下存储空间:①内部RAM低128个字节单元,指令中直接地址以单元地址的形式给出。②特殊功能寄存器。

【3-8】解答:寄存器寻址中规定的寄存器有:①工作寄存器R0~R7。②累加器A。③双字节AB。④数据指针DPTR。 【3-9】解答:

(1)能用于间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。 (2)采用R0、R1作为间址寄存器,可寻址内部RAM的低128个单元和外部RAM低256个单元单元;采用16位的DPTR作为间址寄存器,可寻址外部RAM的整个64KB地址空间。 【3-10】解答:地址。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4