全国自考(微型计算机原理与接口技术)模拟试卷7
-
43. 下面程序是动态显示程序,请分析程序完成说明。
MOV DPTR,#4400H
MOV A,#03H
MOVX @DPTR,A
SETB RS0 ;使用第1组工作寄存器
MOV R2,#08H
MOV R0,#30H
CLR A
L1: MOV @R0,A
INC R0
INC A
DJNZ R2,L1
DISP: MOV R0,#30H ;显示缓冲区首址送R0
MOV R1,#00H
MOV R2,#08H ;R2中的08H表示①
MOV R3,#7FH ;选中最右端LED
DISP1:MOV A,@R0 ;第2次执行时A=②
MOV DPTR,#TAB ;指向字形表首址
MOVC A,@A+DPTR ;第2次执行时A=③
MOV DPTR,#4402H ;4402H表示④
MOVX @DPTR,A ;该条指令的作用是⑤
MOV A,R3 ;第2次执行时A=⑥
MOV DPTR,#4401H ;指向位选口
MOVX @DPTR,A ;位码送PA口
DJNZ R1,$ ;
DJNZ R1,$ ;该指令的作用是⑦
RR A ;位选字移位
MOV R3,A ;移位后的位选字送R3
INC R0 ;在本程序中,R0最大取值为⑧
MOV A,@R0 ;缓冲区数据送A
DJNZ R2,DISP1 ;未扫描完,继续循环
SJMP DISP
TAB: DB 3FH,06H,5BH,4FH,66H;共阴极LED字形表
DB 6DH,7DH,07H,7FH,6FH
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
41. 下面程序是将片内RAM______开始的单元内10个二进制数,找出其中最大值并存于单元中。
START:MOV R0,#40H
MOV R7,#09H
MOV A,@R0
LOOP: INC R0
MOV 30H,@R0
CJNE A,30H,NEXT
NEXT: JNC BIE1
MOV A,30H
BIE1: DJNZ R7,LOOP
MOV 50H,A
RET
-
42. 用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。
-
40. 以下是8051单片机定时/计数器的初始化程序(设单片机晶振频率是6MHz):T0作为定时,定时时间为______,T1作为计数,记满______溢出。
ORG 0000H
LJMP 0050H
ORG 0050H
MOV TMOD,#20H
MOV TH0,#63H
MOV TL0,#18H
MOV TH1,#9CH
MOV TL,#9CH
SETB EA
SETB TR0
SETB TR1
SJMP $
-
39. 下列指令组要完成重复执行LOOP开始的程序20次。
MOV A,#14H
L00P:MOV R1,#01H
DEC A
JNC LOOP
错误:______
改正:______
-
38. 已知在累加器A中存放一个BCD(0~9),下面子程序实现一个查平方表。
SQR: INC A
MOVC A,A+PC
RET
TAB: DB 0,1,4,9,16
DB 25,36,49,64,81
错误:______
改正:______
-
36. MCS-51指令系统中direct表示的含义是:______。
-
37. 如果(P0)=65H,当执行下列程序段后执行后(P0)=______。
CPL P0.2
SETB C
MOV P0.4,C
-
34. 若IT1=0,当引脚______为低电平的时候,INT0的中断标志位______才能复位。
-
35. 片内RAM可进行位寻址的空间位地址范围是______。
-
33. 下列程序段执行后,(7EH)=______,(7FH)=______。
MOV R0,#7EH
MOV 7EH,#0FFH
MOV 7FH,#40H
INC @R0
INC R0
INC @R0
-
31. MCS-51的P0~P3口中,______为真正的双向口,______为准双向口。
-
32. 执行完下列段指令后(A)=______,(B)=______
MOV A,#08H
MOV B,#45H
PUSH A
PUSH B
POP A
POP B
-
30. MCS-51堆栈寄存器SP是______位寄存器,存放______。
-
29. 请编一个函数int fun(float s[ ],int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组s中存放n位学生的成绩。数组s的值由主函数从键盘读入,用-1来结束输入。
-
#include "string.h"
main()
{int i,j,n;
scanf("%d",&n);
for(i=n;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
程序运行时从键盘输入1<回车>,则运行结果是:_________
-
main()
{char n;
scanf("%e",&n);
switch(++n)
{default:printf("error");break;
ease'a':case'A':ease'b':case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':ease'D':printf("warn");}
}
程序运行时从键盘输入字母c<回车>,则运行结果是:_________
-
main()
{int n1,n2;
scanf("%d",&n2);
while(n2 !=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);}
}
程序运行时从键盘上输入1298<回车>,则输出结果是:_________
-
main()
{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
{z=(*(ptr+y)<y)?*(ptr+y):x;
printf("%d\n",z);}
}
程序运行结果是:_________
-
main()
{int x;
x=3;
do
{printf("%d",x--);
}while(!x);}
错误:______
改正:______
-
23. 程序输入1,输出One,输入其他,输出Other。
main()
{scanf("%d",&a);
if(a=1)printf("One\n");
else printf("Other\n");
}
错误:______
改正:______
-
main()
{int n;
float s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
printf("%6.1f\n",s);
}
错误:______
改正:______
-
20. 下列程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值:t=1-1/(2×2)-1/(3×3)-…-1/(m×m)请填空。
-
#include"stdio.h"
void fact(int k)
{
int i,s;
s=s*i:
return(s);
}
错误:______
改正:______
-
18. 当a=5,b=4,c=2时,表达式a>b!=c的值是______。
-
19. 以下程序是求数组a中偶数的个数和偶数的平均值。请填空。
main()
{int a[10]={1,15,16,18,14,17,24,23,12};
int k,i,j;float ave;
for(k=i=j=0;j<10;j++)
{if(a[j]%2!=0)continue;
i+=______;
k++;}
if(k!=0){ave=i/j;printf("%d,%f\n",k,ave);}
}
-
17. intx=12,n=5;则表达式x%=(n%=2)的值是______。
-
16. 8051单片机串行口用工作方式0时( )
- A.数据从RDX串行输入,从TXD串行输出
- B.数据从RDX串行输出,从TXD串行输入
- C.数据从RDX串行输入或输出,同步信号从TXD输出
- D.数据从TXD串行输入或输出,同步信号从RXD输出
-
15. 当定时器T0发出中断请求后,中断响应的条件是( )
- A.SETB ET0
- B.SETB EX0
- C.MOV IE,#82H
- D.MOV IE,#61H
-
13. 单片机中PUSH和POP指令常用来( )
- A.保护断点,恢复断点
- B.保护现场
- C.保护现场,恢复现场
- D.保护断点
-
14. MCS-51寻址方式,操作数Ri加前缀“@”的寻址方式是( )
- A.寄存器间接寻址
- B.寄存器寻址
- C.基址加变址寻址
- D.立即寻址
-
11. MCS-51单片机I/O的数据是( )
- A.同步传输
- B.异步传输
- C.随机传输
- D.实时传输
-
12. 共阴极显示管点亮时输入电平是( )
- A.低电平
- B.低电压
- C.低阻态
- D.高电平
-
10. 8051/8031型单片机提供中断源的个数是( )
- A.3
- B.4
- C.6
- D.5
-
9. 不是伪指令关键字的是( )
- A.ORG
- B.START
- C.EQU
- D.DATA
-
8. 下面不是运算器完成的主要任务是( )
- A.算术运算
- B.位运算
- C.数据处理
- D.指令译码
-
7. 对于8031来说,EA脚总是( )
- A.接地
- B.接电源
- C.悬空
- D.不用
-
6. fopen打开新的二进制文件,既能读又能写的方式字符串是( )
- A.ab+
- B.rb+
- C.wb+
- D.ab
-
5. 下面程序段执行的结果是( )
char*p="abcde";
p+=3;
printf("%d",p);
- A.cde
- B.de
- C.bcde
- D.c
-
4. C语言中while和do-while循环的主要区别是( )
- A.do-while的循环体至少无条件执行一次
- B.while的循环控制条件比do-while的循环控制条件严格
- C.do-while允许从外部转到循环体内
- D.do-while循环体不能是复合语句
-
2. 字符'H'的ASCII码值是( )
- A.72
- B.73
- C.74
- D.75
-
3. 为表示关系x大于等于y且大于等于z,C语言表达式是( )
- A.(x>=y)&&(y>=z)
- B.(x>=y)AND(y>=z)
- C.(x>=y)&&(x>=z)
- D.(x>=y)&(y>=z)
-
1. 以下集成块型号中属于16位系列单片机型号的是( )
- A.8051
- B.8051AH
- C.8094BH
- D.8052BH