115.(√)MCS-51指令:MOV A,@R0 ;表示将R0指示的地址单元中的内容传送至A中。
116.(√)对于8051单片机,当CPU对内部程序存储器寻址超过4K时,系统会自动在外部程序存储器中寻址。
117.(×)设PC的内容为35H,若要把程序存贮器08FEH单元的数据传送至累加器A,则必须使用指令MOVC A,@A+PC。
118.(√) 8051单片机允许5个中断源请求中断,都可以用软件来屏蔽,即利用中断允许寄存器IE来控制中断的允许和禁止。
119.(√)MCS-1单片机的两个定时器均有两种工作方式,即定时和计数工作方式。
120.(×)MCS-51指令中,MOVC为ROM传送指令。
121.(√)MCS-51的产品8051与8031的区别是:8031片内无ROM。
122.(×)在进行二——十进制运算时,必须用到DA A指令。
123.(√)若要在执行当前中断程序时禁止更高优先级中断,应用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回时再开放中断。
124.(×)MCS-51指令系统中,执行指令ORG 2000H; BCD: DB “A,B,C,D”;
表示将A、B、C、D的ASII码值依次存入2000H开始的连续单元中。
125.(√)用户在编写中断服务程序时, 可在中断入口矢量地址存放一条无条件转移指令,以防止中断服务程序容纳不下。
126.(√)串行口的中断,CPU响应中断后,必须在中断服务程序中,用软件清除相应的中断标志位,以撤消中断请求。
三、简答题
127.各中断源对应的中断服务程序的入口地址是否能任意设定? 如果想将中断服务程序放置在程序存储区的任意区域,在程序中应该作何种设置?请举例加以说明。 答:各中断源的入口地址已经在中断地址区中被定义了,不能任意设定。
如果要将中断服务程序放置在程序存储区的任意区域,在程序中要通过在中断地址区
的对应地址上设置跳转指令才可实现对中断服务程序的执行。
例如:外部中断0的中断服务程序INT0P放置在程序存储区的任意区域,此时,通过以下方式,可实现对中断服务程序的执行: ORG 0003H LJMP INTOP
列举其他中断跳转的例子也可,但叙述的中断源要与中断地址相对应才可得分,如外中断0对应0003H地址。
128.简述动态显示与静态显示的区别及优缺点
答:静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定的导通或截止。这种显示方式每一位都需要有一个8位输出口控制,亮度大,耗电也大。需要的I/O端口较多,如四个七段数码管需要32根口线,适用于显示位数较少的场合。但编程简单。 动态显示,就是一位一位地轮流点亮显示器各个位(扫描),对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。将各显示器的段码同名端边在一起,用一个I/O端口驱动;位码用另一个I/O端口分别控制。如四个七段数码管只需要11根口线。编程较复杂。
129.简述堆栈。
(1)在程序中断或子程序调用时,为了保护返回地址(断点)和保护现场而设立的RAM区。
(2)用MOV SP,#STK指令建立堆栈。 (3)存放数据按“后进先出”原则进行。 (4)利用PUSH、POP指令即可进行进栈、出栈操作。
130.简述MCS-51指令系统的寻址方式及对应的寻址空间。
MCS-51指令系统有7种寻址方式,分别为:1)寄存器寻址,对工作寄存器R0-R7和A,B,C,DPTR进行寻址。2)直接寻址,对片内RAM低128字节及SFR寻址。3)寄存器间接寻址,对片内RAM低128字节,片外RAM寻址。4)立即寻址,对程序存储器寻址。5)相对寻址,对程序存储器256字节范围寻址。6)基址寄存器加变址寄存器间接寻址(变址寻址),对程序存储器寻址。7)位寻址,对片内RAM的20H-2FH字节地址及部分特殊功能寄存器寻址。
131.8051的定时/计数器T0的有几种工作模式,对各工作模式作简单的叙述。 答: 定时/计数器T0的模式: 0:13位计数器; 1:16位计数器; 2:8位循环计数器;
3:2个独立的8位计数器 串行通信模式
132.CPU响应中断的条件有哪些?
答:1、CPU没有处在一个同级或高级的中断服务中 2、查询中断请求的机器周期是当前指令的最后一个机器周期 3、当前指令不是返回指令(RET,RETI)或访问IE、IP的指令。
133.80C51单片机的片内RAM低128单元分哪3个主要部分?各部分的主要功能是什么? 答:80C51单片机的片内RAM低128单元分为:
寄存器区(00H-1FH),共有四个寄存器组,主要为寄存器访问方式,常用数据存储。 位寻址区(20H-2FH),主要用于位数据存放,也可用于存放字节数据。 普通用户RAM区(30H-7FH),只用于存放字节数据。
134.已知一单片机系统的外接晶体振荡器的振荡频率为6MHz,请计算该单片机系统的拍节P、状态S、机器周期所对应的时间是多少?指令周期中的单字节双周期指令的执行时间是多少? 答:已知fosc=6MHZ
则:系统的拍节P=1/fosc=1/(6*106)s=1/6μs=0.167μs 系统的状态S=2P=2*1/6μs=0.33μs 机器周期T=6S=12P=12*1/6μs=2μs 单字节双周期指令的执行时间为2T=2*2μs=4μs
135.简述汇编语言中的标号有什么规定
(1)标号由1—8字符组成,头一个字符必须是字母。 (2)不能使用汇编语言已定义的符号。 (3)标号后必须跟冒号:
(4)同一标号在一个程序中只能定义一次。
136.简述变址寻址方式并举例说明。
(1)变址寻址是以DPTR或PC作基址寄存器,累加器A作变址寄存器以两者内容相加形式的16位地址作为操作数地址。
(2)变址寻址只能对移定存储器寻址,其指令只有三条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR
前二条为查表指令,后一条为无条件转移指令
四、阅读程序题
137.执行下列程序后,(A)=_40H(B)=_01H MOV A,#0AH MOV B,#20H
MUL AB
138.编写一个程序,把片内 RAM 从 30H 开始存放的 16 个数据传送到片外 RAM 从 0000H 开始的单元中。 MOV R0,#30H MOV DPTR,#0000H MOV R1,#10H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R1,LOOP SJMP $
139.将外 RAM 地址从 1000H 开始的 100 个单元清零,试编程实现之。 MOV DPTR,#1000H MOV R1,#100(#64H) CLR A
LOOP: MOVX @DPTR,A INC DPTR DJNZ R1,LOOP SJMP $
140.设两个十进制数分别在内部RAM 40H单元和50H单元开始存放(低位在前),其字节长度存放在内部30H单元中。编程实现两个十进制数求和,并把求和结果存放在40H开始的单元中。 MOV R0,#40H MOV R1,#50H MOV R2,#30H _CLR C________ LOOP:MOV A,@R0 ADDC A,@R1 __DA A_______ MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP RET
编程题
141.执行下列程序后,(A)=_40H__,(B)=__1___。 MOV A,#0AH MOV B,#20H MUL AB
142.已知内部RAM 30H单元开始存放20H个数据,将其传送到外部RAM的0000H单元开始的存储区,请编程实现。 MOV R0,#30H MOV R1,#00H MOV R2,#20H
LOOP: MOV A,@R0;取数 MOV X @R1,A;存数 1NC R0 1NC R1 DJNZ R2,LOOP RET
143.已知(SP)=09H,(DPTR)=4567H,在执行下列指令后,(SP)=__0BH___,内部RAM
(0AH)=__46H___,(0BH)=__45H__ PUSH DPL PUSH DPH
144.请分析下面程序执行后的操作结果,(A)=__40H_,(R0)=__60H_。 MOV A,#60H MOV R0,#40H MOV @R0,A MOV 41H,R0 XCH A,R0
145.内部RAM从list单元开始存放一单字节正数表,表中之数作无序排列,并以-1作结束标志。编程实现表中找出最小值。 MOV R0,#LIST MOV A,@R0 MOV MIN,A LOOP5:INC R0 MOV A,@R0 _JNB ACC.7____,LOOP3 RET
LOOP3:CJNE A,MIN,LOOP1