最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机-第三章答案

来源:动视网 责编:小OO 时间:2025-09-30 13:39:48
文档

单片机-第三章答案

思考题:【3-1】汇编语言与C语言哪种语言的可读性和可移植性强?在对速度和时序敏感的场合应该使用什么语言?对于复杂的单片机系统一般采用C与汇编混合编程的形式这句话对吗?【3-2】二进制机器语言与C和汇编语言两者之间是什么关系?用C或汇编编制的程序在ROM中是以编译后的二进制代码的形式存放这句话对吗?【3-3】80C51系列单片机指令的格式包含哪几个部分?各部分之间的间隔符是什么?四个部分中哪个部分是必须存在的,哪几个部分是可有可无的?标号的格式和代表的意义是?【3-4】80C51系列单片机有哪
推荐度:
导读思考题:【3-1】汇编语言与C语言哪种语言的可读性和可移植性强?在对速度和时序敏感的场合应该使用什么语言?对于复杂的单片机系统一般采用C与汇编混合编程的形式这句话对吗?【3-2】二进制机器语言与C和汇编语言两者之间是什么关系?用C或汇编编制的程序在ROM中是以编译后的二进制代码的形式存放这句话对吗?【3-3】80C51系列单片机指令的格式包含哪几个部分?各部分之间的间隔符是什么?四个部分中哪个部分是必须存在的,哪几个部分是可有可无的?标号的格式和代表的意义是?【3-4】80C51系列单片机有哪
思考题:

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

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

【3-46】如图3-12所示,这是由ATC51构建的最小系统,外部连接了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的整个KB地址空间。

【3-10】解答:地址。

【3-11】解答:

(1)80C51单片机变址寻址方式中是以DPTR或PC作基址寄存器,以累加器A作变址寄存器。

(2)是的。@A+PC,@A+DPTR寻址所找到的操作数是在ROM中。

【3-12】解答:正确。80C51单片机凡是指令中带有rel相对偏移量的指令,其PC的改变都是相对的。

【3-13】解答:若访问特殊功能寄存器,只可以采用直接寻址。

【3-14】解答:若访问外部RAM单元,只可以使用寄存器间接寻址方式。

【3-15】解答:若访问内部RAM单元,可使用直接寻址、寄存器寻址、寄存器间接寻址和位寻址。

【3-16】解答:若访问内外程序存储器,可使用变址寻址方式。

【3-17】解答:

(1)还包含内部RAM的20H-2FH,共16个字节,16*8=128个位,每一位都有一个位地址,对应位地址00H-7FH。

(2)位地址是00H、08H、22H、7FH、D0H、E0H对应的字节地址分别是20H、21H、24H、2FH、D0H、E0H。

【3-18】解答:R0←30H,(R0)=30H

A←((R0)),(A)=40H

R1←(A),(R1)=40H

B←((R1)),(B)=10H

(R1)←(P1),((R1))=(40H)=EFH

P2←(P1),(P2)=EFH

10H←20H,(10H)=20H

30H←(10H),(30H)=20H

结果:(R0)=30H,(A)=40H,(R1)=40H,(B)=10H,(40H)=EFH,(P2)=EFH,(10H)=20H,(30H)=20H  

【3-19】解答:因为寄存器间接寻址方式中R0或R1的内容是操作数的RAM地址,内部RAM的寻址范围是00H~7FH。

【3-20】解答:外部数据传送指令有4条:MOVX  A,@DPTR;MOVX @DPTR,A;MOVX    A,@Ri;MOVX    @R,A。

(1)都是访问片外RAM,但二者寻址范围不同。前1条指令是对片外RAM低256个单元的“读”操作;后1条指令是对片外RAM KB空间的“读”操作。

(2)访问空间相同,但数据传送方向不同。前1条指令是对片外RAMKB空间的“读”操作;后1条指令是对片外RAMKB空间的“写”操作。

(3)访问空间不同。前1条指令是对片内RAM低128个单元的“写”操作; 后1条指令是对片外RAM低256个单元的“写”操作。

(4)二者访问的空间不同,寻址方式不同。前1条指令是变址寻址方式,对ROM操作;后1条指令是寄存器间接寻址方式,对片外RAM操作。

【3-21】解答:1031H。

【3-22】解答:ROM;ROM和外部RAM。

【3-23】解答:

(1)由于在工作寄存器与工作寄存器之间不能直接传送数据,所以需要借助累加器A。

            MOV    A,R1

            MOV    R0,A

(2)片外RAM向片内RAM传送数据,不能直接进行,需要借助累加器A。由于片外RAM是60H单元,地址小于FFH,所以间址寄存器使用Ri即可。

            MOV        R1,#60H

            MOVX    A,@R1

            MOV        R0,A

(3)        MOV        R1,#60H

            MOVX    A,@R1

            MOV        40H,A

(4)片外数据不能直接送入片外单元,需要先将片外数据读入累加器,然后再送到片外。

            MOV        DPTR,#1000H

            MOVX    A,@DPTR

            MOV        R1,#40H

            MOVX    @R1,A

【3-24】解答:片外RAM与片内RAM之间的数据传送不能直接进行,需要借助累加器A。数据交换需要使用数据交换指令XCH。

            MOV        DPTR,#1000H

            MOVX    A,@DPTR

            XCH        A,60H

            MOVX    @DPTR,A

【3-25】解答:D。

【3-26】解答:3CH;5FH;50H。

【3-27】解答:30H;70H。

【3-28】解答:50H;52H;30H;50H;5030H。

【3-29】解答:

(1)结果:(A)←→(R1),(A)=40H,(R1)=5BH,(PSW)=81H

(2)结果:(A)←→(40H),(A)=C3H,(40H)=5BH,(PSW)=80H

(3)结果:(A)←→((R1)),(A)=C3H,((R1))=(40H)=5BH,(PSW)=80H

(4)结果:(A)0~3←→((R1))0~3,(A)=53H,((R1))=(40H)=CBH,(PSW)=80H

(5)结果:(A)0~3←→(A)4~7,(A)=B5H,(PSW)=81H

(6)结果:A←(A)+(R1),(A)=9BH,(PSW)=05H

(7)结果:A←(A)+(40H),(A)=1EH,(PSW)=80H

(8)结果:A←(A)+40H,(A)=9BH,(PSW)=05H

(9)结果:A←(A)+(40H)+CY,(A)=1FH,(PSW)=81H

(10)结果:A←(A)-(40H)-CY,(A)=97H,(PSW)=85H

(11)结果:A←(A)- 40H - CY,(A)=1AH,(PSW)=01H

【3-30】解答:

(1)该组指令执行后(A)=00H,不影响CY位。

(2)该组指令执行后(A)=00H,影响CY位。

说明:单独执行INC指令,只影响奇偶标志位P,不影响半进位标志位AC和进位位CY位。执行ADD指令后,将影响CY、AC和P位。

【3-31】解答:DA  A指令的作用是对A中刚进行的两个BCD码的加法结果进行修正,即继续使BCD码加法运算的结果保持为BCD码。使用时,DA  A指令只能使用在加法指令后,即ADD指令和ADDC指令。

【3-32】解答:A←(A)∧23H,(A)=03H

42H←(42H)∨(A),(42H)=37H

A←(A)((R0)),(A)=34H

A←(),(A)=CBH

结果:(A)=CBH

【3-33】解答:

(1)ANL  A,#87H

(2)ANL  A,#0C3H

(3)ORL  A,#0CH

【3-34】解答:0CBH。

【3-35】解答:00H;0AAH。

【3-36】解答:ANL    A,B

ORL    A,C

MOV    F,C

【3-37】解答:

(1)MOV DPTR,#1000H

     MOVX A,@DPTR

     CPL A

     MOVX @DPTR,A

(2)MOV R0,#60H

     MOVX A,@R0

     ANL A,#3FH

     XRL A,#03H

     MOVX @R0,A

【3-38】解答:   

(1)MOV C,10H        

     ANL C,P1.0          

(2)ORL C,18H 

MOV  PSW.1,C

【3-39】解答:

(1)正确。

(2)错误。原因:清零指令只能用于累加器ACC和位操作,而本题中E0H只能是字节地址(位地址的范围是00H~7FH),所以该条指令错误。

(3)错误。原因:ACC是直接字节地址,不能用于清零指令。

(4)正确。ACC.0是一个位,可以应用到清零指令中。

(5)正确。

(6)错误。原因:取反指令只能用于累加器ACC和位操作,而本题中E0H只能是字节地址(位地址的范围是00H~7FH),所以该条指令错误。

(7)错误。原因:ACC是直接字节地址,不能用于取反指令。

(8)正确。ACC.0是一个位,可以应用到取反指令中。

【3-40】解答:指令LJMP addr16是长转移指令,指令中提供了16位目的地址,寻址范围是KB。

指令AJMP addr11是绝对转移指令,指令中11位目的地址,其中a7~a0在第二字节,a10~a8则占据第一字节的高3位,寻址范围是与PC当前值(本指令所在地址+本条指令所占用的字节数2)在同一个2K的区域内。

【3-41】解答:

(1)    MOV  P1,#0CAH            ;P1←CAH,P1=CAH=11001010B

         MOV  A,#56H            ;A←56H,A=56H=01010110B

         JB     P1.2,L1            ;若P1.2=1,则转移至L1

         JNB  ACC.3,L2            ;若ACC.3=0,则转移至L2

            …

L1:…

L2:…

执行完本段程序后将转移至L2,因为P1.2=0,ACC.3=0,所以转至L2。

(2)   MOV  A,#43H            ;A←43H,A=43H=01000011B

        JB     ACC.2,L1            ;若ACC.2=1,则转移至L1

        JBC  ACC.6,L2            ;若ACC.6=1,则转移至L2,同时将ACC.6清零

            …

L1:    …

L2:    …

执行完本段程序后将转移至L2,因为ACC.2=0,ACC.6=1,所以转至L2,并且将ACC.6清零。

【3-42】解答:

(1)错误。可以做间接寄存器的只有R0和R1,不包括R2。

(2)错误。

(3)错误。

(4)错误。CLR的操作数只能是C或bit。

(5)错误。CPL的操作数只能是C或bit。

(6)错误。两个寄存器间不能直接进行数据传送。

(7)错误。PUSH指令时字节操作指令。

(8)正确。

(9)错误。位传送指令只进行C和位地址间的数据互送。

(10)正确。

(11)正确。位操作指令。

(12)错误。RLC指令的操作数只能是A。

【3-43】解答:

(1)FF:MOV R7,A 

(2)C0:PUSH direct 

(3)E0:MOVX A,@DPTR

(4)E5:MOV A,direct  

(5)F0:MOVX @DPTR,A

【3-44】解答:C。

【3-45】解答:

(1)MOV  A,#00H

MOV  P1,A

(2)MOV  A,#0FFH

MOV  P1,A

(3)MOV  A,#AAH(或是55H)

MOV  P1,A

(4)       MOV        A,#0FEH

LOOP:      MOV        P1,A

            RL        A

            LCALL    DELAY

            SJMP    LOOP

DELAY:     MOV        R7,#01H

DELAY1:    MOV        R6,#01H

            DJNZ    R6,$

            DJNZ    R7,DELAY1

            RET

【3-46】解答:

(1)       MOV        A,P1

            CPL        A

            ANL        A,#0F0H

            SWAP    A

            MOV        P1,A

(2)LOOP:    JNB        P1.4,L1            

            JNB        P1.5,L2            

            JNB        P1.6,L3            

            JNB        P1.7,L4            

            LJMP    LOOP                

L1:    MOV        P1,#01H            

            LJMP    LOOP                

L2:    MOV        P1,#02H            

            LJMP    LOOP                

L3:    MOV        P1,#03H            

            LJMP    LOOP                

L4:    MOV        P1,#04H            

            LJMP    LOOP                

文档

单片机-第三章答案

思考题:【3-1】汇编语言与C语言哪种语言的可读性和可移植性强?在对速度和时序敏感的场合应该使用什么语言?对于复杂的单片机系统一般采用C与汇编混合编程的形式这句话对吗?【3-2】二进制机器语言与C和汇编语言两者之间是什么关系?用C或汇编编制的程序在ROM中是以编译后的二进制代码的形式存放这句话对吗?【3-3】80C51系列单片机指令的格式包含哪几个部分?各部分之间的间隔符是什么?四个部分中哪个部分是必须存在的,哪几个部分是可有可无的?标号的格式和代表的意义是?【3-4】80C51系列单片机有哪
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top