移目的地址为。
17、设DPTR=2000H,(A)=80H,则MOVC A,@A+DPTR的操作数的实际地址为 。
18、执行当前指令后,PC内容为 。 19、MOV C,20H源寻址方式为 寻址。 20、INC指令 影响CY位。
21、指令LCALL 37B0H,首地址在2000H,所完成的操作是 入栈,37B0H PC。→ 23、ORG 1000H LCALL 4000H ORG 4000H
ADD A, R2 ;执行完LCALL后(PC)= 。
24、通过堆栈操作实现子程序调用,首先要把 的内容入栈,以进行断点保护。调用返回时再进行出栈操作,把保护的断点弹回 。
25、一台计算机的指令系统就是它所能执行的 集合。 26、以助记符形式表示的计算机指令就是它的 语言。
27、在直接寻址方式中,只能使用 位二进制数作为直接地址,因此其寻址对象只限于 。
28、在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的 。
29、在变址寻址方式中,以作变址寄存器,以或 作基址寄存器。 30、假定累加器A的内容为30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器 单元的内容送累加器A中。 31、假定DPTR的内容为8100H,累加器A的内容为4DH,执行下列指令:MOVC A,@A+DPTR后,送入A 的是程序存储器 单元的内容。
32、设(SP)=60H,(ACC)=30H,(B)=70H,执行指令:PUSH ACC;PUSH B后,SP的内容为 ,61H单元的内容为 。62H单元的内容为 。
33、假定(SP)=62H,(61H)=30H,(62H)=70H。执行下列指令:POP DPH;POP DPL后,DPTR的内容为,SP的内容为 。 34、假定(A)=85H,(R0)=20H,(20H)=0AFH。执行指令:ADD A,@R0后,累加器A的内容为,CY的内容为,AC的内容为 ,OV的内容为 。
35、假定(A)=85H,(R0)=20H,(20H)=0AFH。执行指令:ADD A,20H后,累加器A的内容为 ,CY的内容为 ,AC的内容
为,OV的内容为 。
36、假定(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H。执行指令:INC A;INC R3;INC 30H;INC @R0后,A 的内容为,R3的内容为,30H的内容为 ,40H的内容为 。
37、在MCS-51中PC和DPTR都用于提供地址,但PC是为访问 存储器提供地址,而DPTR是为访问 存储器提供地址。 38、在位操作中,能起到与字节操作中累加器作用的是 。 39、累加器A中存放其一个其值小于或等于127的8位无符号数,CY清“0”后执行RLC A指令,则A中数变为原来的 倍。 40、假定(A)=56,(R5)=67。执行指令:ADDA,R5;DA A后,累加器A的内容为 ,CY的内容为 。
41、假定(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH。执行指令: DEC A DEC R7 DEC 30H DEC @R1
后, A内容为,R7内容为,30H内容为 ,40H内容为 。 42、假定(A)=50H,(B)=0A0H。执行指令:MUL AB后,寄存器B的内容为,A 内容为,CY内容为,OV内容为 。 43、假定(A)=0FBH,(B)=12H。执行指令;DIV AB后,累加器A 的内容为 ,寄存器B的内容为 ,CY的内容为 ,OV的内容为 。
44、假定(A)=0C5H。执行指令:SWAP A后,累加器A的内容为 。
45、执行如下指令序列: MOV C,P1.0 ANL C,P1.1 ANL C,/P1.2 MOV P3.0,C
后,所实现的逻辑运算式为 。
46、假定addrll=00100000000B,标号qaz的地址为1030H。执行指令:qaz:AJMP addrll后,程序转移地址 去执行。 47、假定标号qaz的地址为0100H,标号qwe值为0123H(即跳转的目标地址为0123H)。应执行指令:qaz:SJMP qwe该指令的相对偏移量(即指令的第二字节)为 。
48、DPTR是MCS-51中惟一一个16位寄存器,在程序中常用来
作为MOVC指令的访问程序存储器的 使用。
49、在R7初值为00H的情况下,DJNZ R7,rel指令将循环执行 次。 50、欲使P1口的低4位输出0而高4位不变,应执行一条 指令。欲使P1口的高4位输出1而低4位不变,应执行一条指令。 51、MCS-51的两条查表指令是 和 。 填空题参考答案:
1、直接2、位3、MOVC 4、MOV 5、错误6、命令7、对汇编过程进行某种控制8、1 9、0000 10、1022H 11、2073H 12、0 13、2 14、2FF1H 15、不变16、00B7H 17、2080H
18、下一条将要读取的指令码首地址 19、位20、不21、2003H 22、寄存器间接寻址23、4000H 24、PC, PC 25、指令26、汇编27、8 片内RAM 28、地址 29、A, PC, DPTR 30、1031H 31、814DH 32、62H,30H,70H 33、7030H 60H
34、34H,1,1 ,1 35、34H, 1,1, 0 36、00H, 10H, 0F1H, 01H 37、程序,数据38、CY 39、2 40、00100011,1 41、0EH,18H,0FFH,0FEH
42、32H, 00H, 0, 1 43、0DH, 11H, 0, 0 44、5CH
45、P3.0=(P1.0)∧(P1.1) ∧46、1100H 47、0123-0102=21H 2.1P 48、基址寄存器49、256 50、ANL P1, #F0H; ORL P1, #F0H 51、MOVC A, @A+DPTR, MOVC A, @A+PC 二、选择题
1、在中断服务程序中,至少应有一条( )。
(A)传送指令(B)转移指令(C)加法指令(D)中断返回指令
2、要用传送指令访问MCS-51片外RAM,它的指令操作码助记符应是()。
(A)MOV (B)MOVX (C)MOVC (D)以上都行 3、ORG 2000H LCALL 3000H ORG 3000H RET
上面程序执行完RET指令后,(PC)=( )。 (A)2000H (B)3000H (C)2003H (D)3003H 4、JNZ e指令的寻址方式是( )。
(A)立即寻址(B)寄存器寻址(C)相对寻址(D)位寻址 5、执行LCALL 4000H 指令时,MCS-51所完成的操作是( )。 (A)保护PC (B)4000HPC →
(C)保护现场(D)PC+3入栈,4000HPC →
6、MOVX A,@DPTR指令中源操作数的寻址方式是( )。 (A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 7、ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H
当CPU响应外部中断0后,PC的值是( )。
(A)0003H (B)2000H (C)000BH (D)3000H 8、PUSH ACC指令,MCS-51完成的操作是( )。 (A)SP+1SP(ACC)(SP) → → (B)(ACC)(SP)SP-1SP →→ (C)SP-1SP(ACC)(SP) →→ (D)(ACC)(SP)SP+1SP →→
9、把P0口高4位变0,低4位不变,应使用指令( )。 (A)ORL P0,#0FH (B)ORL P0,#0F0H (C)ANL P0,#0F0H (D)ANL P0,#0FH
10、LCALL存于2000H开始的地址单元中,执行完相应子程序中的返回指令后,PC=( )
(A)2000H (B)2001H (D)2002H (D)2003H
11、MCS-51执行完MOV A,#08H后,PSW的哪一位被置位( ) (A)C (B)F0 (C)OV (D)P
12、89C51执行ADD A,20H指令时,首先在P0口上出现的信息是( )
(A)操作码地址(B)操作码(C)操作数(D)操作数地址 13、要访问MCS-51的特殊功能寄存器应使用的寻址方式是( ) (A)寄存器间接寻址(B)变址寻址(C)直接寻址(D)相对寻址
14、下面哪条指令将MCS-51的工作寄存器置成3区( ) (A)MOV PSW,#13H (B)MOV PSW,#18H
(C)SETB PSW.4 CLR PSW .3 (D SETB PSW. 3 CLR PSW . 4 15、MCS-51的相对转移指令的最大负跳距离为( )。(A)2KB (B)128B (C)127B (D)256B 16、MOV C,#00H的寻址方式是( )。
(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址 17、ORG 0000H
ALMP 0040H ORG 040H MOV SP,#00H
当执行完左边的程序后,PC的值是( )。
(A)0040H (B)0041H (C)0042H (D)0043H 18、程序设计的方法一般有( )。 (A)1种(B)2种(C)3种(D)4种
19、MCS-51的并行I/O口信息有两种读取方法,一种是读引脚,还有一种是()。
(A)读锁存器(B)读数据(C)读A累加器(D)读CPU 20、MCS-51的并行I/O口读-改-写操作,是针对该口的( )。 (A)引脚(B)片选信号(C)地址线(D)内部锁存器 21、以下指令中,属于单纯读引脚的指令是( )。 (A)MOV P1,A (B)ORL P1,#0FH (C)MOV C,P1.5 (D)DJNZ P1,short-lable 22、指令AJMP的跳转范围是( )。
(A)256B (B)1KB (C)2KB (D)64KB
23、以下运算中对溢出标志OV没有影响或不受OV影响的运算是( )。
(A)逻辑运算(B)符号数加减法运算 (C)下一条指令的地址(D)除法运算
24、在算术运算中,与辅助进位位AC有关的是( )。
(A)二进制数(B)八进制数(C)十进制数(D)十六进制数 25、在相对寻址方式中,“相对”两字是指跳转( )。 (A)地址偏移量rel (B)当前指令的首地址 (C)当前指令的末地址(D)DPTR值
26、在寄存器间接寻址方式中,指定寄存器中存放的是( )。 (A)操作数(B)操作数地址 (C)转移地址(D)地址偏移量
27、对程序存储器的读操作,只能使用( )。 (A)MOV指令(B)PUSH指令 (C)MOVX指令(D)MOVC指令
28、必须进行十进制调整的十进制运算( )。 (A)有加法和减法(B)有乘法和除法 (C)只有加法(D)只有减法
29、执行返回指令时,返回的断点是( )。 (A)调用指令的首地址(B)调用指令的末地址
(C)调用指令下一条指令的首地址(D)返回指令的末地址 30、可以为访问程序存储器提供或构成地址的有( )。 (A) 只有程序计数器PC (B)只有PC和累加器A
(C)只有PC、A和数据指针DPTR (D)PC、A、DPTR和堆栈指针SP
选择题参考答案:
1、D 2、B 3、C 4、C 5、D 6、B 7、B 8、A 9、D 10、D 11、D 12、A 13、C 14、B 15、B 16、A 17、C 18、D 19、A 20、D 21、C 22、C 23、A 24、C 25、A 26、B 27、D 28、C 29、C 30、C
三、简答题
1、位地址7CH与字节地址7CH如何区别?位地址7CH具体在片内RAM中什么位置?
答:字节地址是片内RAM的单元地址,而位地址是片内RAM单元中的某一位。7CH字节地址为RAMR的7CH单元,而7CH位地址是RAM2FH单元中D4位。
2、程序存储器的0543H和0544H两单元中存有一条AJMP指令。若其代码为E165H,则目的地址等于什么?
答: AJMP指令之目的地址的高5位来自程序计数器PC 的高5位。在把这条指令的两个字节从程序存储器取出并送入指令寄存器IR中去之后,PC内容加2,由原来的0543H变成了0545H。其高5位为00000B,目的地址的低11位为操作码高3位与指令第二个字节的程序组合。指令代码第一个字节是E1H,其最高3位等于111B;第二个字节为65H。因此这条AJMP指令的目的地址等于0765H。
3、读下面一段程序,并以简单方法对它进行改写,限用5条指令。
MOV R0,#21H MOV A,20H ANL A,#0FH MOV @R0,A INC R0 MOV A,20H SWAP A ANL A,#0FH MOV @R0,A
答: 这段程序的任务是把片内RAM20H单元的内容分解成高4位和低4位,低4位存入21H单元,高4位存入22H单元。可以认为这是把20H单元内的数据分成两个十六进制位或两个BCD位。这可用除法进行: MOV A,20H ;取数 MOV B,#10H ;除数为16 DIV AB ;分离十六进制位 MOV 21H,B ;存低位 MOV 22H,A ;存高位
原理:abH=;其中设a为高4位,b为低4位。1b16a16b16a01×+×=×+×4、用一条什么指令可以取代下列4条指令? MOV DPTR,#1234H PUSH DPL PUSH DPH RET
答: 这4条指令的任务是要转移到目的地址1234H去所以可用一条LJMP 1234H指令来取代它们。
5、为什么SJMP指令的rel=0FEH时,将实现单指令的无限循环?答:HERE:SJMP HERE;上述指令的机器码为80FE,即rel=0FEH,此时程序将在原地进行无限循环。在等待中断或程序结束时常用此种办法。
6、片内RAM20H~2FH中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?答:虽然,片内RAM20H~2FH中的128个位地址与直接地址00H~7FH形式完全相同,但是在位寻址操作和直接寻址操作中,这两者的区别是很明显的。位寻址的操作只适用于位指令,而直接地址操作对这些指令是无效的。 四、程序运行分析
1、位地址为M、N、Y,程序如下,求程序功能表达式。 MOV C,M ANL C,N MOV Y,C MOV C,M ANL C,N ORL C,Y MOV Y,C
答:程序功能表达式:(Y)=(M)·()+(M)·(N) N
2、程2000H 2001H 2002H 2003H ?
序存储器空间表格如下: 地址 内容
3FH 06H 5BH 4FH ?
NEXT1: MOV A, #0AAH NEXT2: SJMP CEXT2 则:累加器(A)=( )? (2) MOV A, #0FBH MOV PSW, #10H ADD A, #7FH
若PSW=00,当执行完上述程序段后,将PSW各位值为多少?答(1) MOV R1,#48H ;48HR1 → MOV 48H,#51H ;51H(48H) →
CJNE @R1,#51H,00H ;(R1)值等于51H,顺序执行 JNC NEXT1 ;没借位转,NEXT1 MOV A,#0FFH ;有借位,FFH(A) → SJMP NEXT2
NEXT1: MOV A,#0AAH ;0AAH(A) → NEXT2: SJMP NEXT2 累加器 A=(0AAH) (2) MOV A,#0FBH
MOV PSW,#10H ;0001000PSW → ADD A,#7FH
由程序知道,累加器完成加法运算,即: 11111011 + 01111111 1 01111010
所以,有进位CY=1;C6C7=11=0,OV=0;A中有奇数个1,P=1;有辅助进位位AC=1 ⊕⊕ 当AC F0
RSRSOV F1
P
执1
0
行
完上述程序段后,将PSW各位状态为: CY 1
1
0
1
0
0
0
1
答:下面列出程序中各指令相应的机器码、执行最后一条指令对PSW的影响及A的终值。
机器码 源程序执行每条指令后的结果 74 20 MOV A, #20H ;把立即数20H送入A F5 F0 MOV B, A ;把20H送入B
25 F0 ADD A, B ;A与B中值相加等于40H,送入A 94 10 SUBB A, #10H ;A中值40H减10H等于30H,送入A 84 DIV AB ;A中值与B相除,商01H送A,余数10H送入B 执行此指令后PSW中P=1,OV=0,CY=0。
6、用80C51单片机的P1端口作输出,经驱动电路接8只发光二极管,如图3-2所示。当输出位是“1”时,发光二极管点亮;输出位是“0”时为暗。试分析下述程序执行过程及发光二极管
点亮的工作规
律。
图3-2 P1驱动发光二极管电路 LP: MOV P1, #81H
LCALL DELAY MOV P1, #42H LCALL DELAY MOV P1, #24H LCALL DELAY MOV P1,#18H LCALL DELAY MOV P1,#24H LCALL DELAY MOV P1,#42H LCALL DELAY SJMP LP
DELAY: MOV R2,#0FAH L1: MOV R3,#0FAH L2: DJNZ R3,L2 DJNZ R2,L1 RET
答:上述程序执行过程及发光二极管点亮的工作规律为:首先是第1和第8个灯亮;延时一段时间后,第2和第7个灯亮;延时一段时间后,第3和第6个灯亮;延时一段时间后,第4和第5个灯亮,延时一段时间后,重复上述过程。
7、在第7题中,若系统的晶振频率为6MHz,求子程序DE-LAY的延时时间。若想加长或缩短延时时间,应怎样修改? 答:设系统的晶振频率为6MHz,子程序DELAY的延时时间计算如下:
指令周期数 执行时间
DELAY:MOV R2,#0FAH 1 2sμ L1:MOV R3,#0FAH 1 2sμ L2:DJNZ R3,L2 2 4sμ DJNZ R2,L1 2 4sμ RET 2 4sμ
因为0FAH=250,所以总时间T计算如下: s252.008s4250s)4s4s4250(s4Tμ=μ+×μ+μ+μ×+μ= 若想加长延时时间,可以增加循环次数。
若想缩短延时时间,可以减少循环次数。
8、根据题7所示的线路,试编制灯亮移位程序,即8个发光二极管每次亮一个,循环左移,一个一个地亮,循环不止。