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
 
 
          
