全国自考(微型计算机原理与接口技术)模拟试卷10
-
43. 使用89C51和ADC0809的接口,采集2通道10个数据,存入内部RAM的50H~59H单元,下面是查询方式程序段。请完成填空。(IN2的地址为7FFAH,P1.0查询转换结束信号)
ORG 0100H
MOV R7, ①
MOV R0,#50H
MOV ② ,#7FFAH
NEXT:MOVX @DPTR, ③
JB ④ ,$
MOVX A, ⑤
MOV ⑥ ,A
INC ⑦
DJNZ RT ⑧
SJMP $
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
42. 编程查找在内部RAM的30H~3FH单元中出现0AH的次数,并将查找的结果存入50H单元。
-
41. 下面程序是查找在内部RAM的30H~50H单元中出现______的次数,并将查找的结果存入______单元。
MOV 51H,#00H
MOV R1,#30H
MOV R7,#21H
LOOP: CJNE @R1,#0FFH,NEXT
INC 51H
NEXT: INC R1
DJNZ R7,LOOP
SJMP $
-
40. 设单片机的晶振频率为fosc=6MHz,使用T1工作于工作方式0,下面程序用查询的方式在______端输出周期为______的连续等宽方波。
MOV TMOD,#00H
MOV TH1,#0FCH
MOV TL1,#03H
MOV IE,#00H
SETB TR1
LOOP: JBC TF1,LOOP1
AJMP LOOP1
LOOP1:MOV TH1,#0FCH
MOV TL1,#03H
CPL P1.0
CLR TF1
SJMP LOOP
-
39. 下列程序段把片外RAM从8100H开始的10个存储单元的内容移到片内RAM 40H开始的单元。
PUSH A
MOV R7,10
MOV R0,#40H
MOV DPTR,#8100H
LOOP:MOV A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R7,LOOP
POP ACC
错误:______
改正:______
-
36. 假设(R0)=30H,(20H)=38H,执行指令MOV R0,20H后(R0)=______。
-
37. 执行如下三条指令后,30H单元的内容是______。
MOV R1,#30H
MOV 40H,#0EH
MOV @R1,40H
-
38. 执行下面三条指令后,30H单元的内容是40H。
MOV R1,#30H
MOV 40H,#0EH
MOV R1,40H
错误:______
改正:______
-
34. 串行口方式3发送的第9位数据要事先写入______寄存器的______位。
-
35. 对8255的C口D3位置1的控制字是:______。
-
32. 单片机程序的入口地址是______,外部中断1的入口地址是______。
-
33. 若采用6MHz的晶体振荡器,则MCS-51单片机的振荡频率为______,机器周期为______。
-
29. 每个苹果0.8元,第一天买两个苹果,第二天开始,每天买前一天的两倍,直到买的苹果个数达到不超过100的最大值。编写程序,求每天平均花多少钱?
-
30. 8051单片机有______条地址线,它寻址的地址范围______。
-
31. MCS-51单片机的一个机器周期是由______个状态构成,一个状态又包含了______节拍。
-
#include"stdio.h"
main()
{int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1){b+=3;continue;}
b- =5;}
printf("%d\n",a);}
程序运行结果是:______
-
#include<math.h>
#include<stdio.h>
main()
{float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(1)
{if(fabs(z)>1.0){x=y;y=z;z=x/y;}
else break;}
printf("%f",y);}
程序运行时,从键盘输入3.6,2.4<回车>,则程序运行结果是:______
-
#include<stdio.h>
main()
{int i,n;
double x,mypow;
scanf(“%lf%d",&x,&n);
mypow:1;
for(i=1;i<=n;i++)
mypow*=x:
printf("%.2f\n",mypow);
}
程序运行时输入2,3<回车>,则程序运行结果是:______
-
#include<stdio.h>
main()
{int a[10]={2,4,0,-5,10,6,-8,9,6,7};
inti,s=0,count=0;
for(i=0;i<10;i++)
if(a[i]>0){s+=a[i],count++;}
else continue;
printf("s=%d,count=%d\n",s,count);
}
程序运行结果是:______
-
24. 下面程序的输入数据的形式是Input number:4.5 2<回车>
main()
{int a;float f;
printf("\nInput number:");
scanf("%f,%d",&f,&a);
printf("\nf=%f,a=%d\n”,f,a);
}
错误:______
改正:______
-
nt ff(int n)
{
static int f=1;
f=f*n:
return f;
}
main()
{int i;
for(i=1;i<=5;i++);
printf("%d\n",ff(i));
}
错误:______
改正:______
-
main()
{
int x=1;y;
y=x++:
printf("y=%d",y);
int z;
z=++x:
printf("z=%d\n",z);
错误:______
改正:______
-
main()
{int s,i;
for(s=0,i=1;i<3;i++,s+ =i)
printf("%d\n",&s);
}
错误:______
改正:______
-
18. 若a=3,b=4,c=5,则表达式a||b+c&&b= =c的值是_______。
-
19. 等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有项的和。请填空。
#include<stdio.h>
main()
{int a,d,sum;
a=2;d=3;sum=0:
do{sum+ =a;
a+ =d:
if(______)printf("%d\n",sum);
}while(sum<200);
}
-
20. 求出2/1,3/2,5/3,8/5,13/8,21/13……这个数列的前20项之和。请填空。
main()
{int n,t,number=20;
floata=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=______;
t=a;a=a+b;b=t;
}
printf("sum is%9.6f\n",s);
}
-
17. int m=5,y=2;则执行表达式y+ =y- =m *=y后的y值是______。
-
16. 执行MOV IE,#81H指令的意义是( )
- A.屏蔽中断源
- B.开放外部中断源0
- C.开放外部中断源1
- D.开放外部中断源0和1
-
15. 设累加器A的内容为OC9H,寄存器R2的内容为54H,CY=1,执行指令SUBB A,R2后结果为( )
- A.(A)=74H
- B.(R2)=74H
- C.(A)=75H
- D.(R2)=75H
-
14. 汇编程序在汇编过程中扫描的次数是( )
- A.1
- B.3
- C.2
- D.4
-
12. 8051定时器/计数器TO工作方式有( )
- A.三利
- B.两种
- C.四利
- D.一种
-
13. 下面不是三态锁存器的是( )
- A.74LS244
- B.74LS373
- C.74LS377
- D.74LS273
-
10. MOVC A,@A+DPTR的寻址方式是( )
- A.相对寻址
- B.寄存器间接寻址
- C.变址寻址
- D.寄存器寻址
-
11. 下面不属于中断功能的是( )
- A.增加CPU处理能力
- B.实现实时处理
- C.故障的紧急处理
- D.人机联系
-
9. MCS-51系列单片机的程序存储器寻址空间是( )
- A.16KB
- B.32KB
- C.64KB
- D.128KB
-
7. MCS-51单片机的定时器位数是( )
- A.16
- B.8
- C.4
- D.10
-
8. MCS-51单片机复位操作的主要功能是把PC初始化为( )
- A.0100H
- B.0000H
- C.2080H
- D.8000H
-
6. fclose函数的正确调用形式是( )
- A.fclose(文件指针名);
- B.fclose(文件名);
- C.fclose(文件变量名);
- D.fclose(变量名);
-
5. int a[5],*p=a;对a数组元素地址的正确引用是( )
- A.p+5
- B.&a[0]
- C.&a+1
- D.*a+1
-
2. C语言中最基本的数据类型是( )
- A.整型、实型、逻辑型
- B.整型、实型、逻辑型、字符型
- C.整型、字符型、逻辑型
- D.整型、实型、字符型
-
4. 对于函数调用,以下说法错误的是( )
- A.出现在执行语句中
- B.出现在一个表达式中
- C.作为一个函数实参
- D.作为一个函数形参
-
3. 以下if语句错误的是( )
- A.if(x<y);
- B.if(x)x+=y;
- C.if(x<y)x++;y++;ELSE x--;y--;
- D.if(x!=y)scanf("%d",&x);else x++;
-
1. 以下属于单片机集成块型号的是( )
- A.386DX
- B.8097JF
- C.8086
- D.80486DX