单片机,第三章答案解析 下载本文

内容发布更新时间 : 2024/11/15 0:39:57星期一 下面是文章的全部内容请认真阅读。

【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 64KB空间的“读”操作。

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

(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),(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位目的地址,寻址范围是64KB。 指令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 CPL ANL SWAP MOV (2)LOOP: JNB JNB JNB JNB LJMP

L1: MOV LJMP

L2: MOV LJMP

L3: MOV LJMP

L4: MOV LJMP

A,P1 A

A,#0F0H A P1,A P1.4,L1 P1.5,L2 P1.6,L3 P1.7,L4 LOOP P1,#01H LOOP P1,#02H LOOP P1,#03H LOOP P1,#04H LOOP