第三四章 指令及汇编语言程序设计部分测试题
题量:28    满分:100.0 分 显示答案
一.单选题(共10题,40.0分)
1、指令MOVX寻址空间是
A、
片外ROM
B、
片外RAM
C、
片内RAM
D、
片内ROM
正确答案: B 
2、下列MCS-51指令语法及格式正确的有
A、
  MOV      A,DPTR         
B、
  RL        A
 
C、
 MOVC  A,@ DPTR   
D、
  ADD  R2,#30H
正确答案: B 
3、执行指令MOVX A,﹫DPTR时,/WR,/RD脚的电平为
A、
  /WR高电平,/RD低电平     
B、
  /WR低电平,/RD高电平 
   
C、
 /WR高电平,/RD高电平     
D、
 /WR低电平,/RD低电平
正确答案: A 
4、对AT89C51单片机的堆栈进行出栈操作时,其操作规程是
A、
先SP加1,再弹出数据;
 
B、
先弹出数据,再SP加1;
 
C、
先SP减1,再弹出数据;
D、
先弹出数据,再SP减1;
正确答案: D 
5、若51单片机初始化时未改变SP的内容,第一个入栈的单元地址为
A、
07H
B、
08H
C、
30H
D、
00H
正确答案: B 
6、假定设置堆栈指针 SP 的值为 37H ,在进行子程序调用时把断点地址进行堆栈保护后, SP 的值为
A、
36H
B、
38H
C、
39H
D、
35H
正确答案: C 
7、一主程序中有一句LP:SJMP LP,功能指令为等待中断,当发生中断且中断返回后,返回到( )。
A、
返回到主程序开始处         
B、
返回到该句的下一条指令处
C、
返回到该句的上一条指令处 
D、
返回到该句
正确答案: D 
8、一中断子程序的最后一句不是RETI而是RET,中断返回后
A、
返回到主程序中ACALL或LCALL的下一句 
B、
返回到主程序中响应中断时一句的下一句
C、
返回到主程序开始处 
D、
返回到0000H处
正确答案: A 
9、 下列计算机语言中,能被8051CPU直接识别的是 ( )
A、
自然语言
B、
高级语言如C51
C、
51汇编语言
D、
 机器语言
正确答案: D 
10、执行LACLL  4000H指令时, MCS-51所完成的操作是(  )
A、
保护PC
B、
4000H存入PC
C、
保护现场
D、
.PC+3入栈, 4000H存入PC
正确答案: D 
二.判断题(共15题,30.0分)
1、 对数据指针DPTR的内容入栈,要用指令PUSH DPTR
正确答案: 错误
2、指令MOV  A,@R2格式正确
正确答案: 错误
3、指令MOV  R1,R7格式正确
正确答案: 错误
4、指令 RLC  R1格式正确
正确答案: 错误
5、内部寄存器Rn(n=0~7)均可作为间接寻址寄存器。
正确答案: 错误
6、指令字节数越多,执行时间越长。
正确答案: 错误
7、指令DEC  DPTR格式正确
正确答案: 错误
8、指令CPL  R5格式正确
正确答案: 错误
9、MCS-51指令集中无“程序结束”指令,一般在程序末尾用原地踏步指令构成死循环或在最后附加一条LJMP  0000H,由软件返回监控状态即可。
正确答案: 正确
10、移和调用指令本质上都是通过修改程序计数器PC的值实现转移。
正确答案: 正确
11、指令MOV P0,#30H和MOV 80H,#30H是相互等价的,原因是51单片机的每一个寄
存器都和内部RAM中的一个存储单元一一对应,访问内部RAM单元就像访问寄存器一样,不用进行外部三总线操作。
正确答案: 错误
12、设堆栈指针(SP)=61H,片内RAM中的(61H)=32H,(60H)=10H。执行RET指令后,(SP)=59H, (PC)=3210H
正确答案: 错误
13、、
子程序调用时自动保护断点和现场。(    )
正确答案: 错误
14、主程序初始化工作完成后,通常在指令SJMP $处等待中断
正确答案: 正确
15、END表示指令执行到此结束
正确答案: 错误
END是伪指令,表示汇编程序汇编过程到此结束
三.简答题(共3题,30.0分)
1、汇编程序在延时方面比C51要更加精准。①设晶振频率fosc=24MHZ, 计算延时程序的延时时间(要有计算过程)
②如果改用高级语言(如C51)的延时函数来延时,和延时汇编程序相比,你觉得哪个延时更精准?
延时程序如下:
          机器周期数
  DELAY:    MOV  R1,#5          1
  LOOP:      MOV  R3,#2          1
              DJNZ  R3,$          2
              DJNZ  R1,LOOP     2
              RET                2
计算该段延时程序的延时时间(要有计算过程)
正确答案: 
①设晶振频率fosc=24MHZ, 计算延时程序的延时时间(要有计算过程)
②如果改用高级语言(如C51)的延时函数来延时,和延时汇编程序相比,你觉得哪个延时更精准?
延时程序如下:
          机器周期数
  DELAY:    MOV  R1,#5          1汇编指令有多少个
  LOOP:      MOV  R3,#2          1
              DJNZ  R3,$          2
              DJNZ  R1,LOOP     2
              RET                2
计算该段延时程序的延时时间(要有计算过程):
答:①t=(1+(1+2*2+2)*5+2)*12/24MHz
=    38*0.5us=19 us =0.019ms≈0.02 ms
②汇编更精准。汇编指令和机器码一一对应,代码执行效率高。:当延时时间较短(比如微秒级时)汇编更精准.因为采用高级语言延时时,编译的结果受函数嵌套调用、优化等级等多方面因素干扰,在精准延时中误差较大,通常做法是嵌入汇编代码
2、设:A=0AAH和P1=0FFH,试编程把累加器A中低4位送入P1口低4位,P1口高4位不变
正确答案: 
 
解:    ORG    0100H     
MOV    R0,  A          ;A中内容暂存R0     
ANL    A,  #0FH  ;取出A中低4位,高4位为0     
ANL    P1, #0F0H  ;取出P1口中高4位,低4位为0     
ORL    P1,  A          ;字节装配     
MOV    A,    R0        ;恢复A中原数     
SJMP  $                    ;停机     
END

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。