2012年微型计算机原理与接口技术自考题模拟(1)
-
一个由AT89C51单片机与一片ADC0809组成的数据采集系统,ADC08的地址为7FF8H~7FFFH。硬件逻辑电路图如下,下面程序是利用中断方式,分别对8路模拟信号轮流采样一次,转换结果依次存放在首址为30H的片外数据RAM中。完成中断服务程序填空。
ORG 0000H
AJMP MAIN
ORG 0013H
AJMP INT1
MAIN: MOV R1,#30H
MOV R7,#08H
MOV DPTR,#07FF8H
SET IT1
SET EX1
SET EA
HERA: SJMP HERE
中断服务程序:
INT1: MOVX A, ①
MOVX ② ,A
③ R1
INC ④
DJNZ ⑤ ,READ
⑥
⑦ :MOVX ⑧ ,A
RET1
-
片外RAM2000H开始的单元中有5BH的数据,编程将它们传送到片内RAM20H开始的单元中去。
-
2506H M5: MOV SP,#58H
2509H MOV 10H,#0FH
250CH MOV 11H,#0BH
………
250FH ACALL XHD;PC+2→PC,
MOV 20H,11H
2514H M5A:SJMP M5A
XHD:PUSH 10H
PUSH 11H
POP 10H
POP 11H
RET
执行M5A:SJMPM5A后,(SP)=______(20H)=______
-
设在31H单元存有#23H,执行下面程序:(41H)=______(42H)=______
MOV A,31H
ANL A,#0FH
MOV 41H,A
MOV A,31H
ANL A,#0F0H
SWAP A
MOV 42H,A
-
下列程序要完成16位无符号数相加,两数分别存于30H,31H和40H,41H(低位在前),并把和存于30H,31H中(设和无进位输出)。请指出错误,并改正之。
MOV A,30H
ADD A,40H
MOV 30H,A
MOV A,31H
ADD A,41H
MOV 31H,A
错误:______
改正:______
-
某8031单片机时钟频率12MHz,T1为工作方式1,2毫秒定时中断,其部分初始化程序如下,请指出错误,并改正之。
MOV TMOD,#01H
MOV TH1,#0F8H
MOV TL1,#30H
MOV IP,#8
MOV IE,#88H
……
错误:______
改正:______
-
MCS-51内部的SFR共有______个。
-
设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=______。
ORL A,#27H
ANL A,28H
XCHD A,@R0
-
设定T1为计数器方式,工作方式2,则TMOD中的值为______。
-
已知(31H)=21H,(32H)=04H,执行下列指令组后(31H)=______,(32H)=______。
PUSH 31H
PUSH 32H
POP 31H
POP 32H
-
假设两个一字节的十六进制数9FH,81H相加的和为8位二进制数,那么相加后其进位标志为______,溢出标志为______。
-
MCS-51单片机的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的______和______。
-
MCS-51的堆栈只可设置在______,其最大容量为______。
-
执行下列程序段后,(A)=______,(CY)=______。
MOV A,#C5H
RL A
-
请编一个函数int fun(float s[ ],int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组s中存放n位学生的成绩。数组s的值由主函数从键盘读入,用-1来结束输入。
-
#include<stdio.h>
main()
{int k=0;
char c='A':
do
{switch(c++)
{case'A':k++;break;
case'B':k--;
case'C':k+ =2;break;
case'D':k=k%2;break;
case'E':k=k*10;break;
default:k=k/3;}
k++;}
while(c<'G');
printf("k=%d",k);}
程序运行结果是:______
-
#include<stdio.h>
main()
{int x;
scanf("%d",&x);
if(x>=60)printf("pass");
else printf("fail");
}
程序运行时输入60<回车>,则程序运行结果是:______
-
#include<stdio.h>
main()
{int i,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b-->=0)k++;}
printf("%d,%d",k,b);
}
程序运行结果是:______
-
#include"stdio.h"
main()
{int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d",a,b);
}
程序运行结果是:______
-
main()
{char s[4]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
错误:______
改正:______
-
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);
}
错误:______
改正:______
-
main()
{
int a b;
a=2;
b=3;
c=a*b
printf("c=%c",c);
}
错误:______
改正:______
-
下面程序的功能是计算1+2+3……+50的和。
main()
(int i,sum;
for(i=1;i<=50;i++)
sum+ =i;
printf("%d",sum);
}
错误:______
改正:______
-
等差数列的第一项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);
}
-
求出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);
}
-
一个EPROM的地址有A0-A11引脚,它的容量是( )
- A.2KB
- B.4KB
- C.11KB
- D.12KB
-
若a=3,b=4,c=5,则表达式a||b+c&&b= =c的值是_______。
-
int m=5,y=2;则执行表达式y+ =y- =m *=y后的y值是______。
-
地址指针DPTR是( )
- A.4位的专用寄存器
- B.8位的专用寄存器
- C.16位的专用寄存器
- D.32位的专用寄存器
-
若设串行控制寄存器SCON=40H,则串行口的工作方式是( )
- A.方式0
- B.方式1
- C.方式2
- D.方式3
-
执行下列3条指令后,30H单元的内容是( )
MOV R0,#30H
MOV 40H,#0EH
MOV @R0,40H
- A.40H
- B.30H
- C.0EH
- D.FFH
-
MOV C,00H指令中源操作数的寻址方式是( )
- A.位寻址
- B.直接寻址
- C.立即寻址
- D.寄存器寻址
-
控制串行口工作方式的寄存器是( )
- A.TCON
- B.PCON
- C.SCON
- D.TMOD
-
在扩展系统中,能够提供地址信号的高8位的端口是( )
- A.P0口
- B.P1口
- C.P2口
- D.P3口
-
MCS-51外部中断1固定对应的中断入口地址为( )
- A.0003H
- B.000BH
- C.0013H
- D.001BH
-
单片机的指令地址存放在( )
- A.PSW
- B.DPTR
- C.SP
- D.PC
-
打开文件语句fp=fopen("a.dat","r");中fp的类型是( )
- A.File *
- B.file
- C.File
- D.FILE *
-
8051与8751的区别是( )
- A.内部数据存储器的数目不同
- B.内部数据存储器的类型不同
- C.内部程序存储器的类型不同
- D.内部的寄存器的数目不同
-
变量的指针是( )
- A.变量的首地址
- B.变量的值
- C.变量的名
- D.变量的一个标志
-
已知char ch='B';则以下表达式的值是( )
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
- A.A
- B.a
- C.b
- D.Z
-
用8位(bit)二进制能够表示的有符号数的范围是( )
- A.-127~+128
- B.-128~+127
- C.-127~+127
- D.-128~+128
-
以下集成块型号中,不属于MCS-51系列单片机型号的是( )
- A.8094BH
- B.83C452
- C.80C32
- D.8051AH
-
下列选项中,合法的C语言关键字是( )
- A.default
- B.get
- C.integer
- D.VAR