全国自考(微型计算机原理与接口技术)模拟试卷6
-
43. 如下图所示,用8255A芯片扩展单片机的I/O口,8255的A口作输入,A口的每一位接一个开关,用B口作为输出,输出的每一位接一个发光二极管。现要求某个开关接高电平(为1)时,相应位上的发光二极管就亮(输出低电平0)。设8255的A口地址为70H,B口地址为71H,C口地址为72H,控制口地址为73H。完成下面程序填空。
START:MOV DFTR, ①
MOV A, ②
MOVX ③ ,A
MOV DPTR, ④
MOVX A, ⑤
CPL ⑥
INC ⑦
MOVX @DPTR, ⑧
AJMP START
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
42. RAM中60H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R6中。
-
以下程序是将存于外部RAM______开始的50H数据传送到______的区域。
MOV DPTR,#8000H
MOV R0,#10H
MOV R2,#50H
L00P:MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R2,LOOP
RET
-
40. 下面程序是在______中存放一个压缩的BCD码,将它拆成二个BCD字节,结果存于______开始的单元中(低位在前)
MOV R0,#SUM
MOV A,R2
ANL A,#0FH
MOV @R0,A
MOV A,R2
ANL A,#0F0H
SWAP A
INC R0
MOV @R0,A
RET
-
已知:(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20H,执行程序后,(R0)=35H,(A)=7FH,(4BH)=20H,(40H)=7FH
MOV A,@R0
MOV @R0,40H
MOV 40H,ACC
MOV R0,#35H
错误:______
改正:______
-
下面程序将片内40H-46H单元内容的高位清零,保持低位不变。
ORG 1000H
MOV R7,#07H
MOV R0,40H
L00P: MOV A,@R0
ANL A,@0FH
MOV @R0,A
INC R0
DJNZ R7,LOOP
SJMP $
END
错误:______
改正:______
-
37. MCS-51内部的SFR共有______个。
-
36. 设定T1为计数器方式,工作方式2,则TMOD中的值为______。
-
34. 已知(31H)=21H,(32H)=04H,执行下列指令组后(31H)=______,(32H)=______。
PUSH 31H
PUSH 32H
POP 31H
POP 32H
-
35. 设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=______。 ORL A,#27H ANL A,28H XCHD A,@R0
-
33. 假设两个一字节的十六进制数9FH,81H相加的和为8位二进制数,那么相加后其进位标志为______,溢出标志为______。
-
31. MCS-51单片机的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的______和______。
-
32. 执行下列程序段后,(A)=______,(CY)=______。
MOV A,#C5H
RL A
-
29. 输入三个整数x,y,z,请把这三个数由小到大输出。
-
#include<stdio.h>
int f(int x,int y)
{return(x>y)?x:y);}
main()
{int a,b;
scanf("%d,%d",&a,&b);
printf("%d\n",f(a,b));
}
程序运行时,从键盘输入9,8<回车>,则运行结果是:______
-
30. MCS-51的堆栈只可设置在______,其最大容量为______。
-
#include<stdio.h>
main()
{int c;
while((c=getchar())!='\n')
{switch(c-'2')
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
case 4:putchar(c+2);break;}}
printf("\n");
}
程序运行时,输入2743<CR>,则运行结果是:______
-
main()
{int i=3,*p1;
int a[3]={15,30,45},*p2;
pl=&i;p2=a;
pl=p2+2:
printf("%d,%d\n",*p1,*p2);
}
程序运行结果是:______
-
24. 下面程序是求1+2+3……+100的和。
main()
{int sum,k;
sum=0;k=1;
while(k<=100)
sum=sum+k;k++;
printf("sum=%d\n",sum);}
错误:______
改正:______
-
#include<stdio.h>
main()
{int i,j;
inta[5]={2,4,6,9,12},b[6]={2,3,4,6,8,9};
for(i=0;i<5;i++)
for(j=0;j<6;j++)
if(*(a+i)==*(b+j)printf("%d",*(a+i));
printf("\n");
}
程序运行结果是:______
-
23. 程序的功能是计算1~100之间的奇数和与偶数和。
main()
{intsum1=0,sum2=0,a;
for(a=1;a<=100;a++)
if(a%2=0)sum1+ =a;
else sum2+ =a;
printf("%d,%d",sum1,sum2);
}
错误:______
改正:______
-
22. 以下程序是给数组a所有元素赋值。
main()
{int a[10],i;
for(i=1;i<10;i++)
scanf("%d",&a[i]);}
错误:______
改正:______
-
#include"stdio.h"
main()
{int a,b;
scanf("%d,%d"a,b);
printf("%d\t%d\n",a,b);
}
错误:______
改正:______
-
20. 下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数。请填空。
main()
{intn,k=1,s=0,m;
for(n=1;n<=100;n++)
{k=1;s=0;m=n;
while(m)
{k*=m%10;S+ =m%10;
______;}
if(k>S)printf("%d",n);}
}
-
19. 下面程序的功能是,输出100以内能被3整除且个位数为6的所有整数。请填空。
main()
{int i,j;
for(i=0;i<10;i++)
{j=i*10+6:
if(______)continue;printf("%d",j);}
}
-
18. 若a=7.5,b=2,c=3.6;表达式a>b&&c>a||a<b&&!c>b的值是______。
-
17. intx=5,n=5;则表达式x+ =n++的值是______。
-
15. 在MCS-51指令中,下列指令中无条件转移指令是( )
- A.LCALL addr16
- B.DJNZ direct.rel
- C.SJMP rel
- D.ACALL addr11
-
16. 下列指令能使R0低4位不变,高4位置F的是( )
- A.ANL R0,#0F0H
- B.ORL R0,#0F0H
- C.ORL 0,#0FH
- D.ORL 00H,#0F0H
-
14. 单片机的堆栈指针SP始终是指示( )
- A.堆栈底
- B.堆栈顶
- C.堆栈地址
- D.堆栈中间位置
-
13. 对于8031单片机,其内部RAM( )
- A.只能位寻址
- B.既可位寻址又可字节寻址
- C.只能字节寻址
- D.少部分只能位寻址
-
12. 单片机8031的ALE引脚是( )
- A.输出高电平
- B.输出矩形脉冲,频率为fosc的1/6
- C.输出低电平
- D.输出矩形脉冲,频率为fosc的1/2
-
11. 共阴极显示管显示字型“F”编码是( )
- A.86H
- B.71H
- C.90H
- D.FFH
-
10. 不是MCS-51单片机:I/O的数据传输方式的是( )
- A.无条件
- B.查询
- C.中断
- D.DMA
-
9. 下面表示中断允许控制寄存器的是( )
- A.TCON
- B.IE
- C.IP
- D.SCON
-
8. 不是常用的汇编语言程序结构的是( )
- A.顺序
- B.分支
- C.循环
- D.随机
-
7. MCS-51单片机只具备单一功能的I/O接口是( )
- A.P0
- B.P1
- C.P2
- D.P3
-
6. 对下面说明叙述正确的是( )
typedef struct stu {
int n;char ch[8];
}student;
- A.student是结构体类型名
- B.student是结构体变量
- C.typedef struct是结构体类型
- D.struct是结构体类型名
-
4. 若int a[10];则对数组正确引用的是( )
- A.a[10-10]
- B.a[10]
- C.a[2*5]
- D.a[9-10]
-
3. 下面输入整型变量格式的语句是( )
- A.scanf("%f",&b);
- B.scanf("%d",&b);
- C.scanf("%c",&b);
- D.scanf("%s",&b);
-
5. 下列程序段的执行结果是( )
int x=3:
while(x<=5) {
printf("%d",x-3);x++;}
- A.0
- B.112
- C.123
- D.12
-
2. 字符'9'的ASCII码值是( )
- A.55
- B.54
- C.56
- D.57
-
1. 以下集成块型号中属于MCS-96系列单片机型号的是( )
- A.83C51FB
- B.80C196KR
- C.83C52
- D.83C51FA