1、微型计算机原理与接口技术自考题-7 及答案解析(总分:93.00,做题时间:90 分钟)一、单项选择题(总题数:16,分数:16.00)1.微处理器用 13条地址线寻址,其寻址范围为( )A1KB B2KBC4KB D8KB(分数:1.00)A.B.C.D.2.以下集成块型号中不属于单片机型号的是( ) A8051AH B83C52JA C8096BH D80486DX(分数:1.00)A.B.C.D.3.关于传送指令的性质,以下说法中,不正确的是( ) A片内外 ROM数据传送,均用 MOVC指令 B片内外 RAM数据传送,均用 MOVX指令 C传送指令一般不影响 PSW中标志位,只有改变累
2、加器 A的值时除外 D堆栈操作指令和数据交换指令,均属数据传送类指令(分数:1.00)A.B.C.D.4.下列指令能使 R0低 4位不变,高 4位置 F的是( ) AANL R 0,#0F0H BORL R 0,#0F0H CORL 0,#0FH DORL 00H,#0F0H(分数:1.00)A.B.C.D.5.若定义 char s10;不表示 s1的地址的是( ) As+1 Bs+ Cs0+1 Ds1(分数:1.00)A.B.C.D.6.8086/8088CPU的寄存器中,在内存操作时不可用作寄存器间接寻址的寄存器是( )ASI BBXCDI DDX(分数:1.00)A.B.C.D.7.80
3、86/8088CPU的寄存器中,能在 I/O操作时用作端口地址寄存器的是( )AAX BBXCCX DDX(分数:1.00)A.B.C.D.8.8086CPU中,EU 的组成主要包括( )A通用寄存器、段寄存器、算术逻辑部件 B通用寄存器、标志寄存器、算术逻辑部件C地址控制逻辑、总线控制逻辑、指令队列 D通用寄存器、标志寄存器、指令队列(分数:1.00)A.B.C.D.9.在堆栈中压入一个数据时( ) A先压栈,再令 SP+1 B先令 SP+1,再压栈 C先压栈,再令 SP-1 D先令 SP-1,再压栈(分数:1.00)A.B.C.D.10.执行以下循环语句后,正确的结果是( ) i=0: w
4、hile(i+5); Ai=0 Bi=4 Ci=5 Di=6(分数:1.00)A.B.C.D.11.对下面说明叙述正确的是( ) typedef struct stu int n;char ch8; student; Astudent 是结构体类型名 Bstudent 是结构体变量 Ctypedef struct 是结构体类型 Dstruct 是结构体类型名(分数:1.00)A.B.C.D.12.在扩展系统中,能够提供地址信号的高 8位的端口是( ) AP0 口 BP1 口 CP2 口 DP3 口(分数:1.00)A.B.C.D.13.指令周期是指( )ACPU 从主存取出一条指令的时间BCP
5、U 执行指令的时间CCPU 从主存取出一条指令加上执行这条指令的时间D时钟周期时间(分数:1.00)A.B.C.D.14.MCS-51系列单片机扩展外部存储器时,有一个 I/O口作为低 8位地址和数据线的分时复用口,此:I/O 口是( )AP3 口 BP2 口 CP1 口 DP0 口(分数:1.00)A.B.C.D.15.执行如下三条指令后,30H 单元的内容是( ) MOV R1,#30H MOV 40H,#0EH MOV R1,40HA40H B0EH C30H DFFH(分数:1.00)A.B.C.D.16.在 8086 CPU中,CS=1000H,DS=2000H,SS=3000H,I
6、P=4000H,SP=5000H,则下一条执行的指令字节地址为( )A14000H B25000HC5000H D8000H(分数:1.00)A.B.C.D.二、填空题(总题数:4,分数:8.00)17.以下程序的功能是对 10个整数从小到大排序。请填空。 #includestdio.h sort(int arr,int n); main() int a10,*p,i; printf(“input 10 numbers:“); for(i=0;i10;i+) scanf(“%d“,ai); printf(“/nthe original array is:“); for(p=a;Pa+10;p+
7、) printf(“%d“,*p); sort(a,10); printf(“/nthe present array is:“); for(P=a;Pa+10;P+) printf(“%d“,*p); sort(int arr,int n) int*p1,*p2,temp; for(p1=arr;p1arr+(n-1);p1+) for(p2=p1+1;p2arr+n;p2+) if(_) temp=*p1;*p1=*p2;*p2=temp; (分数:2.00)填空项 1:_18.表达式 7+82d=3;sum=0:dosum+ =a; a+ =d: if(_)printf(“%d/n“,su
8、m); while(sum200); (分数:2.00)填空项 1:_20.如果把数组名作为实参传递给对应的形参,则实际上传递的是该数组的_。(分数:2.00)填空项 1:_三、改错题(总题数:4,分数:8.00)21.main() int a3=0,1,2; int i; scarf(“%d“,a); for(i=1;i3;i+)a0=a0+ai; printf(“a 0=%d/n“,a0); 错误:_ 改正:_(分数:2.00)填空项 1:_22.struct stud char num6; int s4; double ave=0.0; a; main() int i; for(i=0;
9、i4;i+)scanf(“%d“,a.si); for(i=0;i4;i+)a.ave+ =a.si; printf(“%f“,a.ave); 错误:_ 改正:_(分数:2.00)填空项 1:_23.#include“stdio.h“ main() int i,s; s=0; for(i=0;i=10;i+;s=s+i) printf(“%d“,s); 错误:_ 改正:_(分数:2.00)填空项 1:_24.# include “stdio.h“ siruct student int number; char name10=“ “; ; main() stmct student s; s.nu
10、mber=12345; printf(“%d/n“,s.number); 错误 _改正 _(分数:2.00)填空项 1:_四、程序阅读题(总题数:4,分数:16.00)25.#include stdiohmain() (inta=100,b=200,c=300,d,*p1=d=3;sum=0:dosum+ =a; a+ =d: if(_)printf(“%d/n“,sum); while(sum200); (分数:2.00)填空项 1:_ (正确答案:sum%4= =0)解析:解析 整除表达式的使用。20.如果把数组名作为实参传递给对应的形参,则实际上传递的是该数组的_。(分数:2.00)填空
11、项 1:_ (正确答案:起始地址 或者:地址 或者:首地址 或者:第一个元素的地址)解析:三、改错题(总题数:4,分数:8.00)21.main() int a3=0,1,2; int i; scarf(“%d“,a); for(i=1;i3;i+)a0=a0+ai; printf(“a 0=%d/n“,a0); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:scanf(“%d“,a); 改正:将其修改为 scanf(“%d“,a0);)解析:解析 scanf 函数格式错误,a 是数组名,不是数组元素22.struct stud char num6; int s4; d
12、ouble ave=0.0; a; main() int i; for(i=0;i4;i+)scanf(“%d“,a.si); for(i=0;i4;i+)a.ave+ =a.si; printf(“%f“,a.ave); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:double ave=0.0; 改正:将其修改为 double ave;)解析:解析 结构体成员不能在声明时初始化23.#include“stdio.h“ main() int i,s; s=0; for(i=0;i=10;i+;s=s+i) printf(“%d“,s); 错误:_ 改正:_(分数:2.
13、00)填空项 1:_ (正确答案:错误:for(i=0;i=10;i+;s=s+i) 改正:将其修改为 for(i=0;i=10;i+,s=s+i))解析:解析 for 循环语句格式错误24.# include “stdio.h“ siruct student int number; char name10=“ “; ; main() stmct student s; s.number=12345; printf(“%d/n“,s.number); 错误 _改正 _(分数:2.00)填空项 1:_ (正确答案:char name10=“ “;/error:在结构体的声明中不能对成员进行初始化
14、改正:char name10;)解析:四、程序阅读题(总题数:4,分数:16.00)25.#include stdiohmain() (inta=100,b=200,c=300,d,*p1=&a,*p2=&b,*p3=&c; d=*p1+*p2: printf(“d=%d/n“,d); p1=&d: d=a+c; printf(“d=%d/n“,*p1); p1=p2=&c: a=*p1+*p2: printf(“a=%d/n“,a); c=a+b: printf(“c=%d/n“,*p3); 程序运行结果为:(分数:4.00)填空项 1:_ (正确答案:d=300 d=400 a=600 c
15、=800)解析:26.#includestdio.h main() float a,b scanf(“%f“,a); if(a10.0)b=1.0/2; elseif(a0.5)(a!=2.0)b=1.0/(a+2.0); else if(a10.0)b=1.0/2; else b=10.0; printf(“%f/n“,a); 程序运行时输入 2.0回车,则程序的输出结果是:_(分数:4.00)填空项 1:_ (正确答案:0.500000)解析:解析 注意嵌套条件语句。27.#includestdio.h int f(t) int t; int x; if(t=1)x=1; else x=t
16、*f(t-1); return x; main() int t,x; t=4;x=f(t); printf(“t=%d“,t); printf(“x=%d/n“,x); 程序运行结果为:(分数:4.00)填空项 1:_ (正确答案:t=4 x=24)解析:28.#includestdio.h #define N 6 void main()int aN=4,5,8,3,6,1; int j,i,t; for(i=0;iN-1;i+) for(j=0;jN-1-i;j+) if(ajaj+1)t=aj;aj=aj+1;aj+1=t; for(j=0;jN;j+)printf(“%5d“,aj);
17、程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:1 3 4 5 6 8)解析:解析 双循环语句是排序过程。五、程序设计题(总题数:1,分数:8.00)29.自定义一个函数,函数的形参为字符数组 s1和 s2,函数功能是将字符串 s1中的所有数字字符取出,存入另一字符数组 s2中,使 s2成为一个新的字符串,并在函数中将字符串 s2输出。(分数:8.00)_正确答案:(void fun(char s1,char s2) int i,j=0; for(i=0;sli;i+) if(s1i=0s1i=9) s2j+=s1i; s2j=/0; puts(s2); )解析:六、填空题-单
18、片机原理与接口技术(总题数:8,分数:16.00)30.8031单片机内部数据 RAM中的位寻址区的地址范围是 1。(分数:2.00)填空项 1:_ (正确答案:20H2FH)解析:31.MCS-51单片机中的堆栈是在 1 区中开辟的一个区域,其数据的存取遵守 2 的原则。(分数:2.00)填空项 1:_ (正确答案:片内 RAM)填空项 1:_ (正确答案:先进后出)解析:32.EPROM中的信息可采用 1 照射的方法擦除。(分数:2.00)填空项 1:_ (正确答案:紫外线)解析:33.指令 MOV A,#41H,其源操作数的寻址方式为 1。指令 MOV A,41H 其源操作数的寻址方式为
19、 2。(分数:2.00)填空项 1:_ (正确答案:立即数寻址)填空项 1:_ (正确答案:直接寻址)解析:34.MCS-51单片机外部中断请求信号有电平方式和_,在电平方式下,当采集到 INT0或 INT1的有效信号为_时,激活外部中断。(分数:2.00)填空项 1:_ (正确答案:脉冲方式 低电平)解析:解析 电平方式也称为低电平有效方式,脉冲方式也称其为下降沿有效。35.假设两个一字节的十六进制数 9FH,81H 相加的和为 8位二进制数,那么相加后其进位标志为_,溢出标志为_。(分数:2.00)填空项 1:_ (正确答案:1 1)解析:36.MCS-51系列单片机片内部数据存储器工作寄
20、存器区 32个字节被均匀地分为 4个组:其中第 2组工作寄存器,地址为_;第 3组工作寄存器,地址为_。(分数:2.00)填空项 1:_ (正确答案:10H17H 18H1FH)解析:37.串行控制寄存器 SCON的单元地址是 1。(分数:2.00)填空项 1:_ (正确答案:98H)解析:七、改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.设单片机的 fosc=6MHz,下面程序是 100ms延时的子程序。 DELAY: MOV R7,#64H A0: MOV R6,#0FAH DJNZ R6,$ DJNZ R7DELAY RET 错误:_ 改正:_(分数:2.00)填空项
21、1:_ (正确答案:错误:DJNZ R7,DELAY 改正:DJNZ R7,A0)解析:解析 DELAY 是子程序的入口地址,A0 是循环入口地址39.下面程序段是将 ROM 3000H单元内容送 R7。 MOV DPTR,#3000H CLR A MOVC A,R7+DPTR MOV R7,A 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:MOVC A,R7+DPTR 改正:MOVC A,A+DPTR)解析:解析 R7 不能作变址寻址八、程序阅读题-单片机原理与接口技术(总题数:2,分数:8.00)40.已知:(30H)=23H,(31H)=13H,(40H)=72H
22、,(41H)=08H 执行: MOV A,30H ADD A,40H DA A MOV 30H,A MOV A,31H ADDC A,41H DA AMOV 31H,A 则结果为:(30H)=_H,(31H)=_H,(40H)=_H,(CY)=_。(分数:4.00)填空项 1:_ (正确答案:95;21;72;0)解析:41.以下是 8051单片机定时/计数器的初始化程序(设单片机晶振频率是 6MHz):T0 作为定时,定时时间为_,T1 作为计数,记满_溢出。 ORG 0000H LJMP 0050H ORG 0050H MOV TMOD,#20H MOV TH0,#63H MOV TL0,
23、#18H MOV TH1,#9CH MOV TL,#9CH SETB EA SETB TR0 SETB TR1 SJMP $(分数:4.00)填空项 1:_ (正确答案:10ms100)解析:解析 TOMD=20H,说明设置,T0 为定时,方式 0,T1 为计数,方式 2。所以:T1 计数初值9CH=10011100B=156,256-156=100 即满 100溢出。T0 的初值为6318H=0110001111000B=3192,2 13=8192,8192-3192=5000,机器周期为12/6MHz=2s,2s5000=10000s=10ms。九、程序设计题-单片机原理与接口技术(总题
24、数:1,分数:8.00)42.累加器 A中的数,如大于等于 50H则减去 20H后,差值存于片内 RAM 40H中,如该数小于 50H则加20H后,其和存于片内 RAM 40H中。请接着以下指令,补全缺少的部分。 CJNE A,#50H,NEXT SJMP $(分数:8.00)_正确答案:(MOON:CLR C SUBBA,#20H SJMP COM NEXT:JNC MOON ADD A,#20H COM:MOV 40H,A)解析:十、十、应用题(总题数:1,分数:1.00)43.8051单片机实验装置中的扫描式数字显示部分如图所示,6 个共阳极 LED的段驱动由 P2口经 8路反相驱动器提
25、供,位驱动由 P1.5P1.0 口经 6路同相驱动器提供。以下程序段,使用定时器 TD产生 2ms中断(时钟频率 12MHz),将缓冲区 40H45H(对应 LED从左到右)的低 4位中的 16进制数,转换成显示代码,在 LED上扫描显示。 ORG 0000H AJMP START ORG 000BH MOV TL0,# H ;定时器 11D时间常数 MOV TH0,# H MOV AR0 LCALL LDCODE MOV P2, MOV P1, TNC R0MOV AR7 RR A MOV R7.A JNB ,T0_2 MOV R0,#4OH MOV R7,#20H T0_2:RETI ST
26、ART:MOV TMOD,# H MOV TL0,# H MOV THO,# H MOV R0,#40H MOV R7,#20H MOV IE,#82H SETB LOOP: SJMP LOOP LDCODE: ANL A,#0FH INC A MOVC RET DB 3FH,06H,5BH,4FH,66H,; 显示代码 _;_;_;_; _;_;_;_。 附:有关特殊功能寄存器各位内容: 中断允许控制寄存器(IE) 中断优先级寄存器(IP) 定时器控制寄存器(TCON) 定时器方式寄存器(TMOD) (分数:1.00)填空项 1:_ (正确答案:30 0F8 A R7 ACC.7 01 TR0 A,A+PC)解析: