1、微型计算机原理与接口技术自考题-20 及答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1.以下集成块型号中属于 MCS 一 51 系列单片机型号的是_ A.8052AH B.80C198 C.80C196KB D.80196KC(分数:1.00)A.B.C.D.2.如果 A=125,B=-78,则A+B 补 是_ A.00101110 B.01101111 C.00101111 D.00100111(分数:1.00)A.B.C.D.3.算式 (分数:1.00)A.B.C.D.4.下列字符数组长度为 5 的是_ A.char a10=h
2、,a,b,c,d; B.char b=h,a,b,c,d,/O; C.char c=h,a,b,c,d; D.char d6=h,a,b,c,/O(分数:1.00)A.B.C.D.5.对下列结构体变量 stu 的成员引用不正确的是_struct student int m;float n;stu,*p; A.Pstun B.P 一m C.(*p).m D.stu.n(分数:1.00)A.B.C.D.6.以下表述错误的是_ A.ASCII 码文件是文本文件 B.ASCII 码文件占用内存较少 C.二进制文件占用内存较多 D.语语 FILE fp;定义一个名为 fp 的文件指针(分数:1.00)A
3、.B.C.D.7.MCS-51 外部数据总线组成是_ A.P0 B.P1 C.P2 D.P3(分数:1.00)A.B.C.D.8.定义位地址的伪指令是_ A.DS B.DB C.BIT D.DW(分数:1.00)A.B.C.D.9.8051/8031 型单片机中断标志位的个数是_ A.6 B.5 C.4 D.7(分数:1.00)A.B.C.D.10.MCS-51 单片机 I/O 接口寻址方式是_- A.独立寻址 B.相对寻址 C.存储器映射 D.绝对寻址(分数:1.00)A.B.C.D.11.共阳极显示管点亮时输入电平是_ A.高电平 B.低电平 C.低电压 D.接地(分数:1.00)A.B.
4、C.D.12.PSW 中的 RS1 和 RS0 用来_ A.选择工作寄存器区号 B.指示复位 C.选择定时器 D.选择工作方式(分数:1.00)A.B.C.D.13.P0 口作数据线和低 8 位地址线时_ A.应外接上拉电阻 B.不能作 I/O 口 C.能作 I/O 口 D.应外接高电平(分数:1.00)A.B.C.D.14.8031 单片机的定时器 T0 用作计数方式时是_ A.由内部时钟频率定时,一个时钟周期加 1 B.由内部时钟频率定时,一个机器周期加 1 C.由外部计数脉冲计数,正跳变加 1 D.由外部计数脉冲计数,一个机器周期加 1(分数:1.00)A.B.C.D.15.在用接口传信
5、息时,如果用一帧来表示一个字符,且每一帧中有一个起始位、一个结束位和若干个数据位,该传送属于_ A.串行传送 B.并行传送 C.同步传送 D.连续传送(分数:1.00)A.B.C.D.16.芯片 8255A 在方式 1 输出时,它和外设间的联络信号是_ A 和 IBF B 和 C 和 IBF D 和 (分数:1.00)A.B.C.D.二、B填空题/B(总题数:4,分数:8.00)17.int a=6;则表达式 a+=a-=a*a 的值是 1。(分数:2.00)填空项 1:_18.若 a=2,b=4,则表达式!(x=a)|(y=b) scanf(“%d%d“, if(mn)_ r=m%n; wh
6、ile(r) m=n;n=r;r=m%/n; printf(“%d/n“,n); (分数:2.00)填空项 1:_20.下面程序的功能是将字符串 S 中所有的字符 a 删除。请填空。 #include stdio.h void main() char s80; int i,j=0; gets (s); for(i=0;sif=/0;i+) if(si!=a)_; sj=/0; puts(s);(分数:2.00)填空项 1:_三、B改错题/B(总题数:4,分数:8.00)21.#include stdio.h #include conio.h main() int i,j; int sum,k=
7、0; for(i=0;i5;i+); printf(“input a number:“); scanf(“%d“,k); sum+=k; printf(“the sum is%d“,sum); 错误:_ 改正:_(分数:2.00)填空项 1:_22.以下程序运行时从键盘输入字符串 ABCDE 按回车键结束输入,使输入字符串中的 A 和 B 转换为字符#输出,其他字符输出为*。 #include “stdio.h“ main() char c; while(c = getchar()!=/0) switch(c) caseA; caseB:putchar(#);break; default:pu
8、tchar(*); 错误:_ 改正:_(分数:2.00)填空项 1:_23.以下程序计算 12310 的和。 #include “stdio.h“ main() int i,s=1; do s=s+i;i+; while(i=10) printf(“%d/n“,s); 错误:_ 改正:_(分数:2.00)填空项 1:_24.输入 10 个整数存入一维数组,再按逆序重新存放后再输出。 #include stdio.h main() int i,j,a10,k; for(i=0;i=9;i+) scanf(“%d“, for(i=0,j=9;i=4;i+,j-) k=ai;ai=aj;aj=k;
9、for(i=0;i=9;i+) printf(“%d“,a); 错误:_ 改正:_(分数:2.00)填空项 1:_四、B程序阅读题/B(总题数:4,分数:16.00)25.#include stdio.h int fun(char *s) char *p=s; while(*P!=/0)p+; return(p-s); main() printf(“%d/n“,fun(“hello world“); 程序运行结果是:_(分数:4.00)填空项 1:_26.#include stdio.h main() int i,index,n; int a10; scanf(“%d“, for(i=0;in
10、;i+) scanf(“%d“, index=0; for(i=1;in;i+) if(aiaindex) index=i; printf(“min=%d,index=%d/n“,aindex,index); 程序运行时输入 5 7 9 5回车,则程序运行结果是:_(分数:4.00)填空项 1:_27.#include stdio.h int add(int a,int b) int c; c=a+b; return c; void print(int t) printf(“z=%d/n“,t); main() int x,y,z; x=1;y=2; z=add(x,y); print(z);
11、 程序运行结果是:_(分数:4.00)填空项 1:_28.#include stdio.h struct mine int qa,qb,qc; main() struct mine s2=1,2,3,4,5,6; int answer; answer=s0.qa*s1.qb; printf(“%d/n“,answer); 程序运行结果是:_(分数:4.00)填空项 1:_五、B程序设计题/B(总题数:1,分数:8.00)29.编写程序,从键盘输入 6 名学生的 5 门成绩,分别统计出每个学生的平均成绩并输出。(分数:8.00)_六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)
12、30.8051 单片机有_条地址线,它寻址的地址范围_。(分数:2.00)填空项 1:_31.MCS-51 单片机的一个机器周期是由_个状态构成,一个状态又包含了_节拍。(分数:2.00)填空项 1:_32.单片机程序的入口地址是_,外部中断 1 的入口地址是_。(分数:2.00)填空项 1:_33.若采用 6MHz 的晶体振荡器,则 MCS-51 单片机的振荡频率为_,机器周期为_。(分数:2.00)填空项 1:_34.串行口方式 3 发送的第 9 位数据要事先写入_寄存器的_位。(分数:2.00)填空项 1:_35.对 8255 的 C 口 D3 位置 1 的控制字是: 1。(分数:2.0
13、0)填空项 1:_36.假设(R0)=30H,(20H)=38H,执行指令 MOV R0,20H 后(R0)= 1。(分数:2.00)填空项 1:_37.执行如下三条指令后,30H 单元的内容是_。 MOV R1,#30H MOV 40H,#0EH MOV R1,40H(分数:2.00)填空项 1:_七、B改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.下面子程序是从串行接口接受一个字符。 START: MOV TMOD,20H ;定时器 T1 工作于模式 2 MOV TH1,#0E8H ;设置波特率为 1200b/s MOV TL1,#0E8H SETB TR1 ;启动 T1
14、 MOV SCON,#50H ;串行接口工作于方式 1,允许接收 L1: JNB RI,L1 ;等待接收数据,未接收到数据,继续等待 CLR RI ;接收到数据,清RI MOV A,SBUF ;接收到数据送 A RET 错误:_ 改正:_(分数:2.00)填空项 1:_39.片内 RAM40H 开始的单元内有 10 字节的二进制数,下面程序是完成找出其中最大值并存于 50H 单元中。START: MOV R0,#40H ;数据块首地址送 R0 MOV R7,#09H ;比较次数送 R7 MOV A,R0 ;取数送 A LOOP: INC R0 MOV 30H,R0 ;取数送 30H CJNE
15、A,30H,NEHT ;(A)与(30H)相比 NEXT: JNC BIE1 ;(A)(30H)转BIR1 MOV A,30H ;(A)(30H),大数送 A BIE1: DJNZ R7,L00P ;比较次数减 1,不为 0,继续比较 MOV 50H,A ;比较结束,大数送 50H RET 错误:_ 改正:_(分数:2.00)填空项 1:_八、B程序阅读题-单片机原理与接口技(总题数:2,分数:8.00)40.下面程序的功能是_。 ORG 4000h MOV R0,#20H MOV R7,#0AH MOV A,R0 DEC R7 LOOP: INC R0 MOV 40H,R0 CJNE A,4
16、0H,NEXT NEXT: JC LOOP1 MOV A,40H LOOP1: DJNZ R7,LOOP MOV 41H,A HERE: SJMP $ END(分数:4.00)填空项 1:_41.下面程序的功能是_。 BTOD1: MOV A,R2 MOV B,#100 DIV AB MOV R6,A MOV A,#10 XCH A,B DIV AB SWAP A ADD A,B MOV R5,A RET(分数:4.00)填空项 1:_九、B程序设计题-单片机原理与接口技(总题数:1,分数:8.00)42.用 89C51 的 P1 口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)
17、。(分数:8.00)_十、B十、应用题/B(总题数:1,分数:8.00)如下图所示,用 8255A 芯片扩展单片机的 I/O 口,8255 的 A 口作输入,A 口的每一位接一个开关,用 B 口作为输出,输出的每一位接一个发光二极管。现要求某个开关接高电平(为 1)时,相应位上的发光二极管就亮(输出低电平 0)。设8255 的 A 口地址为 70H,B 口地址为 71H,C 口地址为 72H,控制口地址为73H。完成下面程序填空。(分数:8.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_微型计算机原理与接口技术自考题-20
18、 答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1.以下集成块型号中属于 MCS 一 51 系列单片机型号的是_ A.8052AH B.80C198 C.80C196KB D.80196KC(分数:1.00)A. B.C.D.解析:2.如果 A=125,B=-78,则A+B 补 是_ A.00101110 B.01101111 C.00101111 D.00100111(分数:1.00)A.B.C. D.解析:解析 A=125=0111110lB,B=-78=-01001110,B 补=10110010,A+B=01111101+10
19、110010=00101111,因此A+B=00101111,正数的补码就是其本身,即A+B补 =00101111。3.算式 (分数:1.00)A. B.C.D.解析:解析 注意 C 语言的数学公式的表达。4.下列字符数组长度为 5 的是_ A.char a10=h,a,b,c,d; B.char b=h,a,b,c,d,/O; C.char c=h,a,b,c,d; D.char d6=h,a,b,c,/O(分数:1.00)A.B.C. D.解析:解析 注意是字符数组的长度,不是字符串的长度。5.对下列结构体变量 stu 的成员引用不正确的是_struct student int m;flo
20、at n;stu,*p; A.Pstun B.P 一m C.(*p).m D.stu.n(分数:1.00)A. B.C.D.解析:解析 没有这种表达。6.以下表述错误的是_ A.ASCII 码文件是文本文件 B.ASCII 码文件占用内存较少 C.二进制文件占用内存较多 D.语语 FILE fp;定义一个名为 fp 的文件指针(分数:1.00)A.B.C.D. 解析:解析 A、B 说法错误,D 是定义了文件类型的数据。7.MCS-51 外部数据总线组成是_ A.P0 B.P1 C.P2 D.P3(分数:1.00)A. B.C.D.解析:8.定义位地址的伪指令是_ A.DS B.DB C.BIT
21、 D.DW(分数:1.00)A.B.C. D.解析:9.8051/8031 型单片机中断标志位的个数是_ A.6 B.5 C.4 D.7(分数:1.00)A. B.C.D.解析:10.MCS-51 单片机 I/O 接口寻址方式是_- A.独立寻址 B.相对寻址 C.存储器映射 D.绝对寻址(分数:1.00)A.B.C. D.解析:11.共阳极显示管点亮时输入电平是_ A.高电平 B.低电平 C.低电压 D.接地(分数:1.00)A.B.C. D.解析:12.PSW 中的 RS1 和 RS0 用来_ A.选择工作寄存器区号 B.指示复位 C.选择定时器 D.选择工作方式(分数:1.00)A. B
22、.C.D.解析:13.P0 口作数据线和低 8 位地址线时_ A.应外接上拉电阻 B.不能作 I/O 口 C.能作 I/O 口 D.应外接高电平(分数:1.00)A.B.C. D.解析:14.8031 单片机的定时器 T0 用作计数方式时是_ A.由内部时钟频率定时,一个时钟周期加 1 B.由内部时钟频率定时,一个机器周期加 1 C.由外部计数脉冲计数,正跳变加 1 D.由外部计数脉冲计数,一个机器周期加 1(分数:1.00)A.B.C. D.解析:15.在用接口传信息时,如果用一帧来表示一个字符,且每一帧中有一个起始位、一个结束位和若干个数据位,该传送属于_ A.串行传送 B.并行传送 C.
23、同步传送 D.连续传送(分数:1.00)A. B.C.D.解析:16.芯片 8255A 在方式 1 输出时,它和外设间的联络信号是_ A 和 IBF B 和 C 和 IBF D 和 (分数:1.00)A.B.C.D. 解析:二、B填空题/B(总题数:4,分数:8.00)17.int a=6;则表达式 a+=a-=a*a 的值是 1。(分数:2.00)填空项 1:_ (正确答案:-60)解析:解析 注意先乘除后加减。18.若 a=2,b=4,则表达式!(x=a)|(y=b) scanf(“%d%d“, if(mn)_ r=m%n; while(r) m=n;n=r;r=m%/n; printf(
24、“%d/n“,n); (分数:2.00)填空项 1:_ (正确答案:r=m;m=n;n=r;)解析:解析 如果输入的数据 mn,交换 m 和 n,否则无法进行。20.下面程序的功能是将字符串 S 中所有的字符 a 删除。请填空。 #include stdio.h void main() char s80; int i,j=0; gets (s); for(i=0;sif=/0;i+) if(si!=a)_; sj=/0; puts(s);(分数:2.00)填空项 1:_ (正确答案:sj+=si)解析:解析 该算法是当 si中是 a 则在下一次 si不为 a 的字母覆盖。三、B改错题/B(总题
25、数:4,分数:8.00)21.#include stdio.h #include conio.h main() int i,j; int sum,k=0; for(i=0;i5;i+); printf(“input a number:“); scanf(“%d“,k); sum+=k; printf(“the sum is%d“,sum); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:scanf(“%d“,k); 改正:将其修改为 scanf(“%d“,)解析:解析 seanf 函数格式错误22.以下程序运行时从键盘输入字符串 ABCDE 按回车键结束输入,使输入字符
26、串中的 A 和 B 转换为字符#输出,其他字符输出为*。 #include “stdio.h“ main() char c; while(c = getchar()!=/0) switch(c) caseA; caseB:putchar(#);break; default:putchar(*); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:while(c=getchar()!=/0) 改正:将其修改为while(c=getchar()!=/n))解析:解析 根据题意循环条件逻辑错误23.以下程序计算 12310 的和。 #include “stdio.h“ main(
27、) int i,s=1; do s=s+i;i+; while(i=10) printf(“%d/n“,s); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:s=s+i; 改正:将其修改为 s=s*i;)解析:解析 根据题意算术表达式错误24.输入 10 个整数存入一维数组,再按逆序重新存放后再输出。 #include stdio.h main() int i,j,a10,k; for(i=0;i=9;i+) scanf(“%d“, for(i=0,j=9;i=4;i+,j-) k=ai;ai=aj;aj=k; for(i=0;i=9;i+) printf(“%d“,a
28、); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:printf(“%d“,a); 改正:将其修改为printf(“%d“,ai);)解析:解析 printf 函数格式错误四、B程序阅读题/B(总题数:4,分数:16.00)25.#include stdio.h int fun(char *s) char *p=s; while(*P!=/0)p+; return(p-s); main() printf(“%d/n“,fun(“hello world“); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:11)解析:解析 该程序是计算在主函数中输入字符串
29、中字母的个数。26.#include stdio.h main() int i,index,n; int a10; scanf(“%d“, for(i=0;in;i+) scanf(“%d“, index=0; for(i=1;in;i+) if(aiaindex) index=i; printf(“min=%d,index=%d/n“,aindex,index); 程序运行时输入 5 7 9 5回车,则程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:min=5,index=0)解析:解析 该程序是找出数组 a=5,7,9,5中第一次出现最小的元素及其下标。27.#includ
30、e stdio.h int add(int a,int b) int c; c=a+b; return c; void print(int t) printf(“z=%d/n“,t); main() int x,y,z; x=1;y=2; z=add(x,y); print(z); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:z=3)解析:解析 该程序是将 1+2 的结果放入 z 中并输出。28.#include stdio.h struct mine int qa,qb,qc; main() struct mine s2=1,2,3,4,5,6; int answer;
31、answer=s0.qa*s1.qb; printf(“%d/n“,answer); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:5)解析:解析 该程序是将结构体数组 s0.qa=1 和 s1.qb=5 相乘并输出结果。五、B程序设计题/B(总题数:1,分数:8.00)29.编写程序,从键盘输入 6 名学生的 5 门成绩,分别统计出每个学生的平均成绩并输出。(分数:8.00)_正确答案:(#include stdio.h main() int i,j; float grade,sum,ave; for(i=1;i=6;i+)sum=0; for(j=1;j=5;j+) sc
32、anf(“%f“, sum+grade; ave=sum/5; printf(“NO.%d ave=%5.2f/n“,i,ave); )解析:六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)30.8051 单片机有_条地址线,它寻址的地址范围_。(分数:2.00)填空项 1:_ (正确答案:16 64KB)解析:解析 216=65536B=64KB。31.MCS-51 单片机的一个机器周期是由_个状态构成,一个状态又包含了_节拍。(分数:2.00)填空项 1:_ (正确答案:6 2)解析:32.单片机程序的入口地址是_,外部中断 1 的入口地址是_。(分数:2.00)填空项
33、1:_ (正确答案:0000H 0013H)解析:33.若采用 6MHz 的晶体振荡器,则 MCS-51 单片机的振荡频率为_,机器周期为_。(分数:2.00)填空项 1:_ (正确答案:0.5MHz 2s)解析:解析 振荡频率=晶体频率/12=6MHz/12=0.5MHz。机器周期=1/振荡频率=21s。34.串行口方式 3 发送的第 9 位数据要事先写入_寄存器的_位。(分数:2.00)填空项 1:_ (正确答案:SCON TB8)解析:35.对 8255 的 C 口 D3 位置 1 的控制字是: 1。(分数:2.00)填空项 1:_ (正确答案:00000111B)解析:36.假设(R0
34、)=30H,(20H)=38H,执行指令 MOV R0,20H 后(R0)= 1。(分数:2.00)填空项 1:_ (正确答案:38H)解析:解析 20H 前没有#号,指的是 20H 中的内容。37.执行如下三条指令后,30H 单元的内容是_。 MOV R1,#30H MOV 40H,#0EH MOV R1,40H(分数:2.00)填空项 1:_ (正确答案:0EH)解析:解析 最后一句的意思是将 40H 单元中内容送入 30H 单元中去。40H 中是 0EH。七、B改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.下面子程序是从串行接口接受一个字符。 START: MOV TM
35、OD,20H ;定时器 T1 工作于模式 2 MOV TH1,#0E8H ;设置波特率为 1200b/s MOV TL1,#0E8H SETB TR1 ;启动 T1 MOV SCON,#50H ;串行接口工作于方式 1,允许接收 L1: JNB RI,L1 ;等待接收数据,未接收到数据,继续等待 CLR RI ;接收到数据,清RI MOV A,SBUF ;接收到数据送 A RET 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:MOV TMOD,20H 改正:MOV TMOD,#20H)解析:解析 20H 是地址39.片内 RAM40H 开始的单元内有 10 字节的二进制
36、数,下面程序是完成找出其中最大值并存于 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,L00P ;比较次数减 1,不为 0,继续比较 MOV 50H,A ;比较结束,大数送 50H RET 错误:_ 改正:_(分数:2.00)填
37、空项 1:_ (正确答案:错误:MOV A,R0 改正:MOV A,R0)解析:解析 这里 R0 作为间接寻址八、B程序阅读题-单片机原理与接口技(总题数:2,分数:8.00)40.下面程序的功能是_。 ORG 4000h MOV R0,#20H MOV R7,#0AH MOV A,R0 DEC R7 LOOP: INC R0 MOV 40H,R0 CJNE A,40H,NEXT NEXT: JC LOOP1 MOV A,40H LOOP1: DJNZ R7,LOOP MOV 41H,A HERE: SJMP $ END(分数:4.00)填空项 1:_ (正确答案:求存放在片内 20H 单元开
38、始的 10 个无符号数中最小值。)解析:41.下面程序的功能是_。 BTOD1: MOV A,R2 MOV B,#100 DIV AB MOV R6,A MOV A,#10 XCH A,B DIV AB SWAP A ADD A,B MOV R5,A RET(分数:4.00)填空项 1:_ (正确答案:二进制数到 BCD 码间的转换。)解析:九、B程序设计题-单片机原理与接口技(总题数:1,分数:8.00)42.用 89C51 的 P1 口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。(分数:8.00)_正确答案:(ORG 0100H ABC: SETB P1.0 SETB P
39、1.7 JB PI.7.$ JNB P1.7,$ CLR P1.0 MOV R2.#0 DAY: NOP NOP DJNZ R2,DAY SJMP ABC)解析:十、B十、应用题/B(总题数:1,分数:8.00)如下图所示,用 8255A 芯片扩展单片机的 I/O 口,8255 的 A 口作输入,A 口的每一位接一个开关,用 B 口作为输出,输出的每一位接一个发光二极管。现要求某个开关接高电平(为 1)时,相应位上的发光二极管就亮(输出低电平 0)。设8255 的 A 口地址为 70H,B 口地址为 71H,C 口地址为 72H,控制口地址为73H。完成下面程序填空。(分数:8.00)填空项 1:_ (正确答案:#72H)解析:填空项 1:_ (正确答案:90H)解析:填空项 1:_ (正确答案:DPTR)解析:填空项 1:_ (正确答案:#70H)解析:填空项 1:_ (正确答案:DPTR)解析:填空项 1:_ (正确答案:A)解析:填空项 1:_ (正确答案:DPTR)解析:填空项 1:_ (正确答案:A)解析: