一、填空
1、若外接晶振为6MHz,则8031单片机的振荡周期为 1/6μs ,时钟周期为 1/3μs ,机器周期为 2μs ,指令周期最短为 2μs ,最长为 8μs 。
2、SP是 堆栈指针寄存器,PC是 指令指针寄存器 ,DPTR是 数据指针寄存器 。
3、外接程序存储器的读信号为 OE* 低有效 ,外接数据存储器的读信号为 OE* 。
4、程序中“LOOP:SJMP rel”的相对转移以转移指令所在地址为基点向前(大地址方向)最大可偏移 +127 个单元地址,向后(小地址方向)最大可偏移 -128 个单元地址。
5、“MOVC A, @A+DPTR”指令为 基址加变址寻址或变址寻址 寻址方式。
6、单片机寻址方式是指寻找 操作数所在地址 或 转移目标地址 的方式,常用的寻址方式有 立即寻址 、 直接寻址 、 寄存器寻址 、 寄存器间接寻址 、 变址寻址 等。
7、8031单片机内存20H的第7位,它的位地址为 07H 。
8、循环结构程序中循环控制的实现方法有 DJNZ 和 CJNE 。
9、循环结构程序中,当循环次数已知时,应采用 DJNZ 控制法,循环次数未知时,应采用 CJNE 控制法。
10、80C51单片机的位寻址区包括 20H-2FH 和 可按位寻址的SFR 。
11、由8031组成的单片机系统在工作时,EA引脚应该接 地 (我查过课本,这个是正确的) 。
12、LJMP的跳转范围是 KB ,AJMP的跳转范围是 2KB ,SJMP的跳转范围是 -128B-+127B 。
13、若A中的内容为68H,那么P标志位为 1 。
14、单片机上电复位时PC= 0000H ,SP= 07H ;而工作寄存器则缺省采用第
0 组,这组寄存器的地址范围是 00H-07H 。
15、JZ rel 的操作码地址为1000H,rel=20H,它转移的目标地址为 1022H 。
16、8051内部有 4个8位的 并行口,P0口直接作输出口时,必须外接 上拉电阻 ;并行口作输入口时,必须先 置1 ,才能读入外设的状态。
17、MCS-51的堆栈只可设置在片内RAM ,其最大长度为 128 ,存取数据的原则是 先进后出 。堆栈寄存器SP是 8 位寄存器,用来存放 栈顶指针 。
18、假定(SP)=40H , (39H)=30H,(40H)=60H。执行下列指令:
POP DPH
POP DPL
后,DPTR的内容为 6030H ,SP的内容是 38H 。
19、CJNE <目的字节>,<源字节>,rel属于五大类指令中的__控制转移 _ ______类指令,其操作码助记符含义是__比较不等则转移_ __________。
二、选择题
1、8031单片机的( )口的引脚,还具有外部中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P3
2、下列指令中不影响标志位CY的指令有( )。
a)ADD A,20H b)CLR C c)RRC A d)INC A
3、当需要从MCS-51单片机程序存储器取数据时,采用的指令为( )。
a)MOV A, @R1 b)MOVC A, @A + DPTR
c)MOVX A, @ R0 d)MOVX A, @ DPTR
4、8031单片机中既可位寻址又可字节寻址的单元是( )
a)20H b)30H c)00H d)70H
5、下列哪条指令是正确的( )
a) PUSH R2 b) ADD R0,A
c) MOV A,@DPTR d) MOV @R0,A
6、执行中断返回指令时,从堆栈顶部弹出的内容送给( ).
(A) A (B) CY (C)PC (D) DPTR
7、A7H和5BH两个立即数相加后,和为( ),(CY)是( )。
(A)1CH,0 (B) C1H,0
(C) 02H,1 (D) C1H,1
8、若(A)=86H,(PSW)=80H,则执行RRC A指令后,A的内容是( )。
(A)C3H (B) B3H (C) 0DH (D) 56H
9、如果(P0)=65H ,则当
CPL P0.2
SETB C
MOV P0.4 ,C
执行后(P0)=( )
(A)61H (B) 75H (C) 71H (D) 17H
10、若片内(60H)=8H,(R0)=60H,A=7H,则执行指令 后,片内(60H)=7H.
(A)MOV R0,A; (B)MOVX R0,A;
(C)DEC @R0; (D)DEC R0;
11、MCS--51单片机在执行MOVX A,@DPTR指令时,将发出 信号。
(A)地址信号和RD信号;(B)数据信号和RD信号;
(C)地址信号和WR信号;(D)数据信号和WR信号;
12、调用指令ACALL 的调用范围是 。
(A)2K (B)K (C)256 (D)512
13、SJMP ﹩ 指令跳转的偏移量范围为: 。
(A)-128~127; (B)0~256; (C)0~2047; (D)0~65535;
14、执行MOV PSW,#08H指令后,被选中的当前工作寄存器R0~R7是: 。
(A)第0组 (B)第1组 (C)第2组 (D)第3组
15、复位后执行PUSH 00H,是把: 。
(A)R0压入08单元 (B)00H压入07H单元
三、判断题(对者打√,错者打×)
1、 MCS-51系列芯片复位后堆栈设置成从07H单元开始使用。×
2、 MCS-51中工作寄存器R7的实际物理地址与PSW中内容有关。
3、 DA A指令只能用在减法指令之后起到十进制调整的作用。×
4、使用8031的MCS-51系统其EA引脚必须接地。×
5、中断服务程序的最后一条指令是RET。×
6、P2口既可以作为I/O使用,又可以作地址/数据复用口使用。×
7、MOV A,30H的源操作数为立即寻址方式。×
8、MOV A,@A+DPTR是一条查表指令。×
9、MUL AB的执行结果是高8位在A中,低8 位在B中。×
10、AJMP跳转空间最大可达到KB 。×
11、DPTR是由DPH和DPL两个8位特殊寄存器组成的。
12、汇编语言源程序中的伪指令汇编成目标程序时不产生机器码。
13、MCS-51系列芯片特殊寄存器区按字节寻址时可以采用间接寻址。×
14、8051单片机的算术逻辑部件能完成带借位和不带借位的减法运算。×
15、在MCS-51中,为使准双向的I/O口工作在输入方式,必须先预置为1。
四、改错
请判断下列各条指令的书写格式是否有错,如有错说明原因:
1.MUL R0R1;乘法指令的操作数只能用AB
2.MOV A,@R7;寄存器间接寻址不能使用R7
3.MOV A,#3000H;A是8位的,#3000H是个十六位的立即数,字长不匹配
4.MOVC @A+DPTR, A;该指令只读不写
5.LJMP #1000H;该指令的操作数是转移地址而不能是立即数
6. MOVX @R0,B ;片外RAM的数据传送必须借助累加器A
7. MOV A,30H
8. MOVX A,30H ;片内RAM的数据传送只能通过MOV指令
9. ADDC A,R7
10. SUB A,R2 ;51系列的减法指令助记符是SUBB
11. ANL #99H ,36H ;该指令的目的操作数只能是A或直接地址,而不能是立即数
12. MOV C,ACC.0
13. ORL P1.0,P3.1 ;逻辑位操作指令的两个操作数不能同时是直接地址
14. JBC P0,LL1 ;该指令的第一个操作数是针对位地址的,而不是字节地址
15. ACALL PROC
16. MOV 20H , R1 ( )
17. ADDC A , 2030H (直接寻址的地址必须是片内RAM的地址 )
18. CLR A ( )
19. MOVX 40H , #30H( MOVX指令的读写必须借助累加器并且采用寄存器间接寻址方式)
20. ORG 3000H ( )
21. MOVC @A+PC , A( 该指令只读不写)
22. MOVX A ,2000H ( MOVX指令必须使用寄存器DPTR存放片外RAM的地址,采用间接寻址方式)
23. DJNZ #data , rel (该指令不能用立即数做第一个操作数 )
24. INC @R5 ( 寄存器间接寻址的寄存器不能使用R5)
25. DEC DPTR (针对DPTR寄存器只有加1指令没有减1指令 )
26. MOV R1 ,@ R2 (传送指令的两个操作数不能同时为寄存器 )
27. SWAP R1 (该指令只能用累加器A做操作数)
28. SETB 2000H ( 该指令的操作数只能是位地址)
29. JZ A , LOOP (该指令是单操作数指令,累加器A是隐含的操作数 )
30 DA R2 ( 该指令只能用累加器A做操作数 )
五、按题意编写程序并加以注释,加上必要的伪指令。
1、将40H中ASCII码转换为一位BCD码,存入42H的高4位中。
MOV A,40H
CLR C
SUBB A,#30H
SWAP A
MOV 42H,A
END
2、将片内RAM的20H-24H单元中5个压缩BCD码拆开,并转换为10个ASCII码,依次存入2100H-2109H单元中。
MOV R0,#20H
MOV DPTR,#2100H
MOV R7,#5
LOOP1:MOV A,@R0
MOV 30H,A
MOV R2,#2
SWAP A
LOOP:ANL A,#0FH
ADD A,#30H
MOVX @DPTR,A
INC DPTR
MOV A,30H
DJNZ R2,LOOP
INC R0
DJNZ R7,LOOP1
3、请编写多字节加法子程序。入口条件有3个,即字节长度、加数首地址和被加数首地址,累加和存放地址与加数存放单元相同。请标注出口结果。对源程序加注释和伪指令。
JIAFA:CLR C
LOOP:MOV A,@R0
ADDC A,@R1
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOOP
RET
4、在片外数据存储器8000H和8001H单元内各有一个小于0CH的数,请编写源程序求出这两个数的平方之和,要求采用调用查表子程序的方法实现。平方和存放在片内RAM中。对源程序加注释和伪指令。
MOV DPTR,#8000H
MOVX A,@DPTR
MOV 30H,A
INC DPTR
MOVX A,@DPTR
MOV 31H,A
MOV DPTR,#TAB
MOV A,30H
MOVC A,@A+DPTR
MOV 30H,A
MOV A,31H
MOVC A,@A+DPTR
ADD A,30H
MOV 30H,A; 平方和存在30H中
TAB:DB 0,1,4,9,16,25,36,49,,81,100,121
END
6、编写一程序将片外数据存储器中7000H~70FFH单元全部清零。
MOV R7,#0
MOV DPTR,#7000H
CLR A
LOOP:MOVX @DPTR,A
INC DPTR
DJNZ R7,LOOP
END
七、读程序题
1.执行下列程序段后,(P1)=___9BH____。01011101
10011011
MOV P1,#5DH
CPL P1.1
CPL P1.2
CLR P1.6
SETB P1.7
2.执行下列程序段后,(A)=__8BH_____,(C)=_ 0 ___。11000101
MOV A,#C5H
RL A
3.下列程序段执行后,(R0)=__7FH_____,(7EH)=_00H___,(7FH)=_41H______。
MOV R0,#7EH
MOV 7EH,#0FFH
MOV 7FH,#40H
INC @R0
INC R0
INC @R0
4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=_0345H__,(61H)=__25H_____,(62H)= _01H___。
5.阅读下列程序,说明其功能。
MOV R0,#data
MOV A,@R0
RL A
MOV R1,A
RL A
RL A
ADD A,R1
MOV @R0,A
RET 将R0 的内容乘以10
6.阅读程序并填空,形成完整的程序以实现如下功能。
有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H,每个字符串的内容为7位,要求在每个字符串的D7位加上偶校验位。(以调用子程序的方法来实现。)
源程序如下:
ORG 1000H
MOV R0,#40H
MOV R7,#10
NEXT: MOV A, ① @R0
ACALL SEPA
MOV @R0,A
INC R0
DJNZ ②R7 ,NEXT
SJMP $
SEPA: JNB ③ PSW.0,SRET
ORL A, ④ #80H
SRET: ⑤RET下载本文