1、2009 年 4 月全国自考(微型计算机原理与接口技术)真题试卷及答案与解析一、单项选择题1 无符号的数 10111011B 所对应的十进制数是 ( )(A)186D(B) 187D(C) 188D(D)189D2 二进制数 11111111 与二进制数 00000000 进行按位“与” 运算的结果是 ( )(A)00000000 (B) 11111111(C) 10000000(D)000000013 计算机的外部设备(键盘、显示器、打印机等)与 CPU 相连接的方式是 ( )(A)直接相连(B)通过电缆线(C)通过虚拟设备(D)通过 I/0 接口4 正数用原码和补码表示时,其最高位是符号位
2、,则该符号位的值分别是 ( )(A)1,1(B) 1,0(C) 0,1(D)0,05 表达式 3+7.2+A的运算结果是 ( )(A)75.2(B) 10.2A(C) A10.2(D)107.26 语句 FILE*filePtr=fopen(“myFile.dat“,“a“);打开文件后的作用是 ( )(A)从文本文件读数据(B)向文本文件写数据(C)向文本文件末尾追加数据(D)向二进制文件末尾追加数据7 MCS-51 系列单片机扩展外部存储器时,有一个 I/O 口作为低 8 位地址和数据线的分时复用口,此:I/O 口是( )(A)P3 口(B) P2 口(C) P1 口(D)P0 口8 80
3、51 单片机内部具有定时器/计数器的个数和位数分别是 ( )(A)1 个,16 位(B) 2 个,16 位(C) 2 个,8 位(D)3 个,8 位9 MCS-51 系列单片机的一个机器周期包含时钟周期的个数是 ( )(A)8 个(B) 10 个(C) 12 个(D)16 个10 程序计数器 PC 和堆栈指针 SP 两个寄存器的位数分别为 ( )(A)PC-8 位 SP-8 位(B) PC-8 位 SP-16 位(C) PC-16 位 SP-8 位(D)PC-16 位 SP-16 位11 执行 MOV A,#98H:及 ADDA,#81 两条指令后,累加器 A 及进位标志 CY的内容分别为(
4、)(A)(A)=19H ,(CY)=0(B) (A)=19H,(CY)=1(C) (A)=79H,(CY)= 0(D)(A)=79H ,(CY)=112 已知(SP)=40H ,片内 RAM(60H)=0FH,执行 PUSH 60H 和 POP 50H 两条指令后,SP 及 50H 中内容各为 ( )(A)(SP)=39H ,(50H)=23H(B) (SP)=40H,(50H)=0FH(C) (SP)=41H,(50H)=0FH(D)(SP)=40H ,(50H)=60H13 已知(CY)=1,(A)=0FH,要使结果为(CY)=1,(A)=1EH,则需执行指令 ( )(A)RLC A(B)
5、 RRC A(C) RL A(D)RR A14 PSW.4 位和 PSW.3 位是工作寄存器区的选择位。执行下列指令组后,选择的工作寄存器组是 ( ) CLR PSW.4 SETB PSW.3(A)0 组(B) 1 组(C) 2 组(D)3 组15 某半导体存储器有 8 根数据线,13 根地址线,则它的存储容量是 ( )(A)8K8 位(B) 16K8 位(C) 32K8 位(D)64K8 位16 RS232 接口,表示逻辑 1 的信号电平是 ( )(A)1OV(B) 2V(C) 0V(D)-10V二、填空题17 微处理器是微型计算机的核心芯片,是将计算机中的运算器和控制器集成在一个很小的硅片
6、上制成的集成电路,通常用英文字母简写为_。18 执行了 printf(“The file name is d:datadb“);语句,将输出 _。19 执行 scanf(“%d/%d/%d“,&x,&y,&z) ;语句时,希望把三个数据 2008、1 和1 分别输给整型变量 x、y、z,则应该在键盘键入_。20 如果把数组名作为实参传递给对应的形参,则实际上传递的是该数组的_。三、改错题21 本程序在运行时从键盘输入 2 个整数,如果输入的第一个数大于第二个数,则两数互换,否则不互换。 #includestdio.h main() ( int num1,num2,x; scanf(“%d%d“
7、,&numl ,&num2); if(num1num2) x=Bum1;numl=num2;num2=x; printf(“%d %dn“,num1,num2); 错误:_ 改正:_22 以下程序的功能是:求 30 个学生某门课程的平均成绩。 #includestdio main() int n=30,i=0,t ; float aver=0; while(in)scanf(“%d“,&t); aver=aver+t; aver=aver/n; printf(“平均成绩为:%5.1fn“,aver); 错误:_改正:_23 以下程序的功能是:把键盘输入的 10 个整数显示在屏幕上。 #incl
8、udestdio.h main() int a10,i; for(i=0;i 10;+i) scanf(“%d“,ai) ; for(i=0;i 10;+i) printf(“%d“,ai); 错误:_改正:_24 #includestdio.h #includestring.h struct number int i;float x; char c50; num=(1954,“University“,7.98 ; main() ( struct number numl; num1i=999; num1x=123.123 : strcpy(num1c ,“Beijing“); pfintf(“
9、%d, %f,%sn“, humi,numx,num c); pfintf(“%d, %f,%sn“, numli,num1x,num1c) ; 错误:_ 改正:_四、程序阅读题25 #include stdiohmain() int num,s; scanf(“%d“,&num); if(Bum=0&num =100) s=num/10; switch(S) case 6:printf(“%d- - -及格 n“,num);break; case 7:printf(“%d- - - 中n“ ,nun) ;break ; case 8:printf(“%d- - - 良n“ ,Bum);bre
10、ak; case 9: case 10:printf(“%d- - - 优n“ ,num) ;break ; default:pfintf(“%d- - -差 n“,Bum); 程序运行两次,第一次输入值为 85,第二次输入值为 45。 则程序第一次运行结果为: 程序第二次运行结果为:26 #include stdiohmain() int a=0,b,c=0 ,i; for(i=0;i =4;i+=2) a+=i; b=i+1: c+=b: printf(“a=%dn“,a); printf(“C=%dn“,c); 程序运行结果为:27 #include stdiohmain() ( int
11、 a6=1,2,3,4, 5,6 ,i; float aver=0,t=0 ; for(i=0;i 6;i+) t=t+ai;aver=1.0*t/6: printf(“%4.1fn“.aver); for(i=0;i 6;i+) if(aiaver) printf(“%dn“,ai); 程序运行结果为:28 #include stdiohmain() (inta=100, b=200,c=300,d,*p1=&a,*p2=&b,*p3=&c; d=*p1+*p2: printf(“d=%dn“,d) ; p1=&d: d=a+c; printf(“d=%dn“,*p1) ; p1=p2=&c
12、: a=*p1+*p2: printf(“a=%dn“,a); c=a+b: printf(“c=%dn“,*p3); 程序运行结果为:五、程序设计题29 下面的程序是利用公式 求 的近似值,直到最后一项的值小于 10-7 为止;最后输出 的近似值。请根据题义编写计算 的函数。 #includestdio.h #includemath.h double fpi(); main() double pi ,n; printf(“请输入计算精度“) ; scanf(“%lf“,&n); pi=fpi(n) ; printf(“=%fn“ ,pi) ; /* 以下为定义函数部分*/六、填空题-单片机原
13、理与接口技术30 8051 单片机共有_个中断源,可以设置_个中断优先级。31 片内 RAM 的位寻址区的地址范围为_H _H。32 两条指令 MOV 15H,R1 及 MOV 15H,R1 源操作数的寻址方式,前者为_,后者为_。33 执行下列指令组后,程序计数器 PC 的内容为_H。 2301H ANL A, #00H 2303H JZ rel; rel 为 30H 2305H 34 执行调用子程序指令 LCALL addr 时,其断点地址存放在_中。35 已知累加器 A 中存放一个十进制数的 ASCII 码,要将其转换为 BCD 码,可执行一条逻辑运算指令_。36 8031 单片机时钟频
14、率 12MHz,如将 T1 设定为方式 2,定时时间 100S,则TH1 应为 _。37 8031 单片机 IE=9DH,IP=06H 时,CPU 能响应的优先权最高的中断源是_。七、改错题-单片机原理与接口技术38 下列程序段欲重复执行 LOOP 开始的程序段 50 次。 MOV A, #32H LOOP: DEC A DJNZ ACC,LOOP 错误:_ 改正:_39 8031 单片机时钟频率 12MHz,T1 为工作方式 2,50S 定时,允许中断。试指出以下初始化程序的错误并改正。 MOV TMOD,#20H MOV TH1,#206 MOV TL1,TH1 SETB TR1 MOV
15、IE,#82H 错误:_改正:_八、程序阅读题-单片机原理与接口技术40 如 8031 单片机时钟频率 6MHz,在 P1.0 口接一个红外 LED 发光二极管,P1.0低电平时亮。运行以下程序后,INT0 每中断一次(两次中断间隔时间足够大),LED 将发送宽度为 _ms 的光脉冲_个。 0RG 0000H LJMP BEG ORG 0003H ;外中断 0 中断入口 MOV R7,#20 SETB TR1 RETI ORG 001BH ;定时器 1 中断入口 CPL P1.0 DJNZ R7,RRT CLR TR1 SETB P1.0 RT: RETI BEG: MOV TMOD,#20H
16、 MOV TH1,#56 MOV TL1,#56 MOV IE,#89H SJMP $41 已知:(30H)=37H ,(31H)=21H,(50H)=75H,(51H)=10H 执行以下子程序: MOV R0,#30H MOV R1,#50H MOV R7,#2CLR C LOOP:MOV A,R0 ADDC AR1 DA A MOV R0A INC R0 INC R1 DJNZ R7,LOOP RET 则结果为:(30H)=_H ,(31H)=_H ,(R1)=_H,(R7)=_H。九、程序设计题-单片机原理与接口技术42 累加器 A 中的数,如大于等于 50H 则减去 20H 后,差值存
17、于片内 RAM 40H 中,如该数小于 50H 则加 20H 后,其和存于片内 RAM 40H 中。请接着以下指令,补全缺少的部分。 CJNE A,#50H,NEXT SJMP $十、微型计算机原理与接口技术-应用题43 交通灯控制实验电路如题 43 图所示,875l 单片机时钟频率 6MHz,P1.5P1.0经电阻接六个发光二极管,其中红 1、黄 1、绿 1,为南北向指示灯;红 2、黄 2、绿 2,为东西向指示灯。以下程序用定时器 TD 产生 0.1 秒中断为计时标准,按以下四种状态,交替循环。(1)红 1、绿 2,亮 20 秒;(2)红 1、黄 1、黄 2,亮 1 秒;(3)绿 1、红 2
18、 亮 15 秒;(4)黄 1、红 2、黄 2 亮 1 秒。试填满程序中的缺少部分。 题 43 图 ORG 0000H AJMP START ORG ;定时器 T0 入口地址 MOV TL0,#0B0H MOV TH0, #3CH DJNZ 30H, MOV A,R7 INC A ANL A,# H MOV R7,A ADD A,#T0_5-1D_1 MOVC T0_1: MOV P1 ,A MOV 30H,#10 ;第 2 和第4 种状态的计数次数 CJNE R7,#0,T0_2 MOV 30H,# ;第 1 种状态的计数次数 SJMP T0_3 T0_2: CJNE R7,#2,TD_3 M
19、OV 30H,# ;第 3 种状态的计数次数 T0_3: RETI T0_5: DB 0DEH , H,0F3H,0E5H ;每种状态的显示代码(没用到的引脚输出应为“1”) START: MOV TMOD,#01H MOV TL0,#0BOH MOV TH0,#3CH MOV 30H, #200 MOV R7,#0 MOV IE,#82H SETB MOV P1,#0DEH LOOP: SJMP LOOP _; _; _; _; _; _; _;_。 附:有关特殊功能寄存器各位内容: 2009 年 4 月全国自考(微型计算机原理与接口技术)真题试卷答案与解析一、单项选择题1 【正确答案】 B
20、2 【正确答案】 A3 【正确答案】 D4 【正确答案】 D5 【正确答案】 A6 【正确答案】 C7 【正确答案】 D8 【正确答案】 B9 【正确答案】 C10 【正确答案】 C11 【正确答案】 B12 【正确答案】 B13 【正确答案】 C14 【正确答案】 B15 【正确答案】 A16 【正确答案】 D二、填空题17 【正确答案】 CPU(Central Processing Unit) 或者 MP(Micro Processing)18 【正确答案】 The file name is d:data.db19 【正确答案】 3944820 【正确答案】 起始地址 或者:地址 或者:首
21、地址 或者:第一个元素的地址三、改错题21 【正确答案】 错误:x=num1;num1=hum2 ;num2=x ; 改正:x=num1;num1=num2;num2=x;22 【正确答案】 错误:while(in)改正:while(i+n)或在循环体内增加语句 i+;23 【正确答案】 错误:scanf(“%d“,ai) ; 改正:scanf(“%d“ ai);或 scanf(“%d“,a+i);24 【正确答案】 错误:num=1954,“University“,7.98; 改正:num=1954,7.98,“University“;四、程序阅读题25 【正确答案】 85 - - -良 4
22、5- - -差26 【正确答案】 a=6 c=927 【正确答案】 3.5 4 5 628 【正确答案】 d=300 d=400 a=600 c=800五、程序设计题29 【正确答案】 double fpi(n) double n; double x=1,sum=0; int i=1; while(xn) x=1.0/(i*i); sum=sum+x: i+: sum=sqrt(6*sum); return sum; 六、填空题-单片机原理与接口技术30 【正确答案】 5 231 【正确答案】 20 2F32 【正确答案】 寄存器寻址 寄存器间接寻址33 【正确答案】 233534 【正确答案
23、】 堆栈 或者 栈顶35 【正确答案】 ANL A,#OFH 或:XRL A,#30H36 【正确答案】 156 或 9CH37 【正确答案】 外中断 1七、改错题-单片机原理与接口技术38 【正确答案】 错误:DJNZ ACC,LOOP 改正:JNZ LOOP 或去掉 DEC A39 【正确答案】 错误:MOV IE,#82H 改正:MOV IE,#88H八、程序阅读题-单片机原理与接口技术40 【正确答案】 0.4;1041 【正确答案】 12;32;52;0九、程序设计题-单片机原理与接口技术42 【正确答案】 MOON:CLR C SUBBA,#20H SJMP COM NEXT:JNC MOON ADD A,#20H COM:MOV 40H,A十、微型计算机原理与接口技术-应用题43 【正确答案】 43.000BH44.T0_345.0346.A,A+PC47.20048.15049.0EC50.TR0