全国自考(微型计算机原理与接口技术)模拟试卷9
一、1.单项选择题
0. 以下不属于单片机集成块型号的是( )
A.80486DX
B.83C51FA
C.8097BH
D.8051
1. 以下所列的C语言常量中,错误的是( )
A.0xFF
B.2L
C.1.2e0.5
D."72"
2. C语言中最基本的数据类型是( )
A.整型、实型、逻辑型
B.整型、实型、逻辑型、字符型
C.整型、字符型、逻辑型
D.整型、实型、字符型
3. 执行intx=2,y=3;后表达式x=(y==3)的值是( )
A.1
B.0
C.2
D.3
4. C语言函数返回值的类型是( )
A.return语句中表达式类型
B.调用该函数时主调函数的类型
C.定义该函数时函数的类型
D.调用函数时系统临时决定
5. 下列程序段执行后,a的值是( ) int*p,a=10,b=1; p=&a;a=*p+b;
A.12
B.13
C.10
D.11
6. MCS-51内部RAM字节数是( )
A.128
B.256
C.107
D.4K
7. 带进位的循环移位指令是( )
A.RL
B.RR
C.CLR
D.RLC
8. 下面不是中断响应条件的是( )
A.CPU处于开中断状态
B.低级中断源
C.高级中断源
D.一条指令执行完毕
9. 8051定时器/计数器T0工作方式0和方式1的区别是( )
A.前者是16位后者是13位
B.前者是16位后者是8位
C.前者是13位后者是8位
D.前者是13位后者是16位
10. 协调CPU与外围设备之间的数据传送的是( )
A.三态门
B.锁存器
C.缓冲器
D.寄存器
11. MCS-51单片机在正常运行程序时RST引脚是( )
A.高电平
B.低电平
C.脉冲输入
D.高阻态
12. MCS-51单片机在访问外部数据存储器时,地址指针是( )
A.DPTR
B.PC
C.PSW
D.SP
13. 下列程序段的执行结果是( ) MOV R0,#30H SETB C CLR A ADDC A,#00H MOV @R0,A
A.(30H)=00H
B.(30H)=01H
C.(00H)=00H
D.(00H)=01H
14. 从地址2132H开始有一条绝对转移指令AJMP addr11,指令可能实现的转移范围是( )
A.2000H—27FFH
B.2132H—2832H
C.2100H—28FFH
D.2000H—3FFFH
15. 在堆栈操作中,当进栈数据全部弹出后,这时SP指向( )
A.栈底单元地址
B.7FH单元
C.栈底单元地址加1
D.栈底单元地址减1
二、2.填空题
0. intx=2,y;则表达式y=x+5,x+y的值是______。
1. 表达式7+8>2&&25%5的结果是______。
2. 以下函数用于统计一行字符串中的单词个数,单词之间用空格分隔,请填空。int word_num(char strl[ ])
{inti,num=0,word=0;
for(i=0;strl[i]l=" ";i++)
if(______= ="")word=0;
else if(word= =0){word=1;num++;}
return(num);
}
3. 下面程序的功能是统计在16~31岁之间的学生人数。请填空。
main()
{int a[30],n,age,i;
for(i=0;i<30;i++)a[i]=0;
printf("Enter the number of thestudents(<30)
");
scanf("%d",&n);
printf("Enter the age of each student:
");
for(i=0;i<n;i++)
{scanf("%d",&age);_______;}
printf("the result is
");
printf("age number
");
for(i=16;i<32;i++)
printf("%d%d
",i,a[i-16]);
三、3.改错题
0. main()
{
int a b;
a=2;
b=3;
c=a*b
printf("c=%c",c);
}
错误:______
改正:______
1. 下面程序的功能是计算1+2+3……+50的和。
main()
(int i,sum;
for(i=1;i<=50;i++)
sum+ =i;
printf("%d",sum);
}
错误:______
改正:______
2. main()
{char s[4]="9876",*p;
for(p=s;p<s+2;p++)printf("%s
",p);
}
错误:______
改正:______
3. struct stud
{char num[6];
int s[4];
double ave=0.0;
}a;
main()
{int i;
for(i=0;i<4;i++)scanf("%d",&a.s[i]);
for(i=0;i<4;i++)a.ave+ =a.s[i];
printf("%f",a.ave);
}
错误:______
改正:______
四、4.程序阅读题
0. #include<stdio.h>
main()
{int y;
for(y=5;y>0;y--)
{if(y%2==0)continue;
printf("%d",y);
}
}
程序运行结果是:______
1. #include<stdio.h>
int main()
{int i,n;
double fact;
scanf("%d",&n);
fact=1;
for(i=1;i<=n;i++)
fact* =i:
printf("%.0f
",fact);
}
程序运行时输入5<回车>,则程序运行结果是:______
2. #include<stdio.h>
main()
{float a,b
scanf("%f",&a);
if(a<10.0)b=1.0/2;
elseif((a<0.5)&&(a!=2.0))b=1.0/(a+2.0);
else if(a<10.0)b=1.0/2;
else b=10.0;
printf("%f
",a);
}
程序运行时输入2.0<回车>,则程序的输出结果是:______
3. #include<stdio.h>
main()
{char c;
int v0=0,v1=0,v2=0;
do{
switch(c=getchar())
{case"a":
case"e":
case"i":
case"o":
case"u":v1+ =1:
default:v0+ =1;v2+ =1;};}
while(c!="
");
printf("v0=%d,v1=%d,v2=%d
”,v0,v1,v2);
}
程序运行时,从键盘输入ADescriptor<回车>,则程序的运行结果是:______
五、5.程序设计题
0. 输入m和n(m≥n≥0)后,计算m!/n!(m-n)!表达式的值并输出。要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。
六、6.填空题-单片机原理与接口技术
0. 8255A属于可编程的______I/0接口芯片,8255A的A通道有______种工作方式。
1. MCS-51的存储器空间配置从功能上可分为四种类型:______、内部数据存储器、______、外部程序存储器。
2. 执行下面一段程序后,(A)=______,(B)=______。
MOV SP,#60H
MOV A,#10H
MOV B,#01H
PUSH A
PUSH B
POP A
POP B
3. 8051单片机内有______个16位的定时/计数器,______有四种工作方式。
4. MUL AB的执行结果是存储高8位在______中,低8位在______中。
5. 8031单片机内部数据RAM中的位寻址区的地址范围是______。
6. 如要选择第2组的工作寄存器交换数据,可先执行指令______。
PSW(地址为DOH)的格为
7. 某8031单片机时钟频率为12MHz,现将T0设置为定时方式1,定时时间为1毫秒,其计数器中的时间常数初值应为______。(写成四位十六进制数)
七、7.改错题-单片机原理与接口技术
0. 下面子程序是从串行接口接受一个字符。
START:MOV TMOD,20H ;定时器T1工作于模式2
MOV TH1,#0E8H ;设置波特率为1200b/s
MOV TL1,#0E8H
SETB TR1 ;启动T1
MOV SCON,#50H ;串行接口工作于方式1,允许接收
L1: JNB R1,L1 ;等待接收数据,未接收到数据,继续等待
CLR R1 ;接收到数据,清R1
MOV A,SBUF ;接收到数据送A
RET
错误:______
改正:______
1. 片内RAM40H开始的单元内有10字节的二进制数,下面程序是完成找出其中最大值并存于50H单元中。
START:MOV R0,#40H ;数据块首地址送R0
MOV R7,#09H ;比较次数送R7
MOV A,R0 ;取数送A
LOOP: INC R0
MOV 30H,@R0 ;取数送30H
CJNE A,30H,NEHT ;(A)与(30H)相比
NEXT:JNC BIE1 ;(A)≥(30H)转BIR1
MOV A,30H ;(A)<(30H),大数送A
BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较
MOV 50H,A ;比较结束,大数送50H
RET
错误:______
改正:______
八、8.程序阅读题-单片机原理与接口技术
0. 下面程序是将字节地址______单元的内容逐一取出减1,然后再放回原处,如果取出的内容为______,则不要减1,仍将0放回原处。
MOV R7,#10H
MOV R1,#30H
L00P:CJNE @R1,#00H,NEXT
MOV @R1,#00H
SJMP NEXT1
NEXT:DEC @R1
NEXT1:INC R1
DJNZ R7,LOOP
SJMP $
END
1. 下面程序是从______单元开始,连续存放10个无符号数,从中找出最大值送入______单元。
ORG 0020H
MOV R0,#40H
MOV B,@R0
MOV R7,#09H
INC R0
L00P:MOV A,B
CLR C
SUBB A,@R0
JNC NEXT
MOV B,@R0
NEXT:INC R0
DJNZ R7,LOOP
MOV 30H,B
SJMP $
END
九、9.程序设计题-单片机原理与接口技术
0. 编程序将片内30H~36H单元内容的高4位清零,保持低4位不变。
十、10.微型计算机原理与接口技术-应用题
0. 4编程实现在P1.0引脚接一驱动放大电路驱动扬声器,利用T1产生1000Hz的音频信号从扬声器输出。设fosc=12MHz。
