当前位置:首页 > 单片机历年常考考试题目
(SP)←(SP)-1 (PC7—0)←((SP)) (SP)←(SP)-1
7、请简述一条单片机指令的执行过程。
答:单片机的指令执行过程为:在控制电路的控制下,首先从程序存储器中取出指令送指令寄存器保存,然后送指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑电路产生各种定时信号和控制信号,再送到系统的各个部件去进行相应的操作。
8、堆栈是什么?请简述MCS-51单片机堆栈的功能,为什么说堆栈需要有足够的容量? 答:堆栈是一种数据结构,对于MCS-51单片机而言,堆栈只能开辟在芯片内部数据存储区中。堆栈的第一功能是保存断点地址,因为在单片机执行中断服务程序或进行子程序调用后,都将返回到断点处继续执行程序,为此应预先将断点地址保存在堆栈中,这一入栈、出栈过程是CPU自动完成的。第二种功能是保护现场,即对于在主程序和中断程序、子程序中使用的同一个寄存器在进入中断程序和子程序执行之前要推入堆栈保护并在执行完中断程序和子程序后再加以恢复。这一过程是通过入栈、出栈指令完成的。
由于单片机具有多级中断嵌套和多重子程序调用,所以要求堆栈具有足够的容量。
四、判寻址方式
指出下列各条指令中源操作数的寻址方式(10分)(0701)
1、MOV P1, R7 寄存器寻址 2、MOV 30H, 50H 直接寻址 3、MOV DPTR, #1050H 立即寻址 4、MOV A,@R1 寄存器间接寻址 5、MOVC A,@A+DPTR 变址寻址 6、MOV C,10H 位寻址 7、DJNZ R7,rel 相对寻址 8、XCH A, R7 寄存器直接寻址 9、MOVC A, @A+PC 变址寻址 10、MOV 20H, A 寄存器寻址 11、MOV 30H, C 位寻址 12、ANL A,20H 直接寻址 13、ADDC A,#20H 立即寻址 14、JZ rel 相对寻址 15、CLR C 位寻址 16、RR A 寄存器寻址 17、MOV R6,A 寄存器寻址 18、MOV A,50H 直接寻址 19、JC rel 相对寻址
20、MOVX A,@DPTR 寄存器间接寻址 21、MOVC A,@A+PC 变址寻址 22、MUL AB 寄存器寻址
五、判断改错题(10分)
5
请判断MCS-51单片机的下列各条指令的书写格式是否有错误,如有请说明错误原因。 1、MUL R0 R1 乘法指令应使用A、B寄存器操作
2、ADD 30H, 20H 运算指令中的目的操作数必须为累加器A
3、MOV R1,C 位寻址方式中的源操作数和目的操作数均应为位地址,R1是字节寄存器,这样书写是不对的。 4、MOVX A,@A+DPTR
MOVX指令为对外部数据存储区操作指令,使用的间接寄存器只能是DPTR,使用寄存器间接寻址方式,不可使用变址寻址方式。 5、MOVC B, @A+DPTR
MOVC指令为对程序存储区的操作指令,传送的目的寄存器只能为累加器A,不能传送给其他寄存器。 6、DJNZ rel, R0
错误。寄存器R0与相对转移地址写反了。 3、JMP @A+DPTR 正确
4、LJMP #1000
错误。长转移指令中的操作数为16位转移地址,不能用立即数的形式表达。 5、DJNZ 20H, NEXT 正确 6、MOV A,@R7
错误。间接寄存器使用R7有误,间接寄存器只能使用R0、R1 7、CLR R0
错误,CLR为位操作指令,不可对字节寄存器操作。 8、MOV DPTR,1050H
错误。不能将直接地址1050H送入DPTR,DPTR只能接收立即数。(或答:第二操作数只能为立即数)
9、CJNE A,#50H,NEXT 正确
10、MOV A, #3000H 8位累加器A不能接受16位数据 11、MOVC @A+DPTR, A
MOVC指令为对程序存储区操作指令,累加器的内容不可通过变址方式送如程序存储器,两操作数写反了。
12、JMP @R0+DPTR
错。变址寻址中的变址寄存器只可使用A与DPTR相加的形式完成。 13、XCH A,#00H
错。交换指令只能在寄存器、寄存器与直接地址、间接地址之间进行数据交换,不能与立即数进行数据交换。
14、程序计数器PC的地址为D0H,是可以寻址的专用寄存器( ) 错,PC没有地址,是不可寻址的专用寄存器。
15、转移指令中的偏移量rel是一个无符号的8位二进制数。( ) 错。是一个以补码表示的8位二进制符号数。
16、MCS-51单片机的P3口是一个单一功能的准双向通用I/O口。( )
错。P3口除了可作通用I/O口,P3口线还具有第二功能,为系统提供一些控制信号。 17、堆栈主要是为中断操作以及子程序调用而设立的,其功能主要是保护短点地址和保护现场。( ) 对
6
18、D/A转换是指将一个随时间连续变化的模拟信号转换为计算机所能接受的数字量。( ) 错。D/A转换是将计算机处理后的数字量转换为时间连续的模拟信号。
19、对于需要外扩存储器的单片机系统,P0口主要是作为单片机系统的数据线使用。( ) 错。P0口主要是作为单片机系统的数据线与低8位地址线分时共用口使用。 20、当P1口作为输入口使用时,应先向其所存器写入“0”,使输出驱动电路的场效应管FET截止。( )
错。应先向其锁存器写入“1”
21、程序计数器PC中的数据是当前正在执行的指令的地址。( ) 错。是下一条指令的地址。 22、MCS-51单片机的低8位地址线是由P1口提供的,高8位地址线是由P3口提供的。( ) 错。低8位地址线是由P0口提供,高8位地址线是由P2口提供。
23、A/D转换是将计算机处理后的数字量转化为时间连续的模拟信号输出。( ) 错。A/D转换是将一个随时间连续变化的模拟信号转换为计算机所能接受的数字量。
六、 指令分析题(14分)(0807)
试比较下面每一组中两条指令的区别(可直接在每条指令后写出其区别) 1、 MOVX A,@R1
以R1为地址指针的片外数据存储器的内容传送到累加器A中. 2、MOVX @R1 ,A
累加器A中的内容传送到以P1为地址指针的片外数据存储器中. 3、XCH A,R0
A与R0中的数据交换。 4、XCH A,20H
A与直接地址20H中的数据交换。
七、程序分析题
1、设在MCS-51单片机片内RAM中,(20H)=40H,(22H)= 10H,(40H)= 22H,P1=0CFH,当下列程序执行完毕后,各单元的内容分别为多少?请填入给定的各个寄存器及片内单元中。(0801)(0707) MOV R0,#20H MOV A,@R0 MOV R1, A MOV B, @R1 MOV @R1, P1 MOV P3, P1
(A)= (B)= (R0)= (R1)= (P1)= (P3)= (20H)= (40H)= (A)=40H (B)=22H (R0)=20H (R1)=40H (P1)=0CFH (P3)=0CFH (20H)=40H (40H)=0CFH 2、(16分)(0807)
分析下列程序段,当最后一条指令执行后,A中的结果为多少?CY、AC、OV如何置位?
MOV A,#0C9H MOV B,#8DH SETB C
7
SUBB A,B
(A)= (CY)= (AC)= (OV)= A=3BH CY=0 AC=1 OV=0 3、程序分析题(8分)(0607)(0907) 设在MCS-51单片机内RAM中,(20H)=10H,(40H)=10H,P1=0CFH,P3=0AAH,当下列程序执行至伪指令END处时,各相关单元的内容分别为多少?请填入给定的各个寄存器及片内、片外存储器中。 MOV B,20H MOV A,40H MUL AB MOV P1,A MOV P3,B ADD A,B
MOV DPTR , #2000H MOVX @DPTR,A INC DPTR MOV A,B
MOVX @DPTR A END
(A)= ,(B)= ,(P1)= ,(P3)= (20H)= ,(40H)= ,(片外2000H)= (片外2001H)= 解:(A)=01H (B)=01H (P1)=00H (P3)=01H (20H)=10H (40H)=10H (片外2000H)=01H (片外2001H)=01H
4、程序分析及计算题(15分)(0901)(0607)(0307)
有一单片机系统,现启动了定时器0进行中断方式下的循环定时运行,要求每经过2ms进入一次定时器中断,完成将A中的内容左环移一次并送往P1口,编程的运行程序如下:
ORG 0000H LJMP MAIN ORG 000BH T0INT: MOV TL0,#30H MOV TH0,#0F8H RL A
MOV P1,A RETI
ORG 0100H
MAIN: MOV TMOD,#01H MOV TL0,#30H MOV TH0,#0F8H MOV A,#01H SETB TR0
8
共分享92篇相关文档