2012年微型计算机原理与接口技术自考题模拟(10)
-
下面程序的功能是信号灯控制程序,利用P1口控制八个发光二极管的亮与灭(设输出低电平时,对应发光二极管被点亮)。阅读程序完成说明语句。
ORG 0000H
AJMP MAIN ;转主程序
ORG 001 BH ;该地址是①的地址
AJMP CONT ;当出现②时,才会执行到该指令
ORG 0100H
MAIN: MOV TMOD,#10H ;执行该指令的目的是③
MOV TH1,#3CH ;置50ms定时初值
MOV TL1,#OBOH ;此时堆栈指针SP的内容是④
SETB EA ;执行该指令前,EA的初始值是⑤
SETB ET1 ;定时器T1开中断
SETB TR1 ;执行该指令的目的是⑥
CLR 08H ;清1s计满标志位
MOV R3,#14H ;置50ms循环初值
DISP: MOV R2,07H
MOV A,#0FEH
NEXT:MOV P1,A ;第2次执行完该指令后,对应⑦灯被点亮
JNB 08H,$ ;查询1s时间到否
CLR 08H ;清标志位
RL A
DJNZ R2,NEXT
MOV R2,#07H
NEXT1:MOV P1,A
JNB 08H,$
CLR 08H
RR A
DJNZ R2,NEXT1
SJMP DISP
CONT: MOV TH1,#3CH ;程序执行到此处时,堆栈指针SP的内容是⑧
MOV TL1,#OBOH
DJNZ R3,EXIT ;判1s定时到否
MOV R3,#14H ;重置50ms循环初值
SETB 08H ;标志位置1
EXIT: RETI ;该指令的功能是将堆栈的内容送至PC
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
RAM中60H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R6中。
-
晶振6MHz,下面中断初始化程序是使用T1,工作方式_______,在P1.0引脚输出等宽矩形波周期为______微秒的。
MOV TMOD,#20H
MOV TL1.#06H
MOV TH1.#06H
SETB EA
SETB ET1
SETB YR0
SJMP $
-
已知单片机的晶振频率为6MHz,下面程序用单片机内部定时器T0工作在方式1下,从P1.0输出周期为______的方波脉冲信号,时间常数为______。
ORG 3000H
START:MOV TMOD, #01H
MOV TL0,#OCH
MOV THO, #OFEH
SETB TR0
LOOP: JBC TFO,DONE
SJMP LOOP
DONE:MOV TL0,#OCH
MOV THO,#OFEH
CPL P1.0
SJMP LOOP
-
8051的中断向量表在______、000B H和0013H、001BH、23H。
-
下面程序段实现双字节加法运算(R1)(R0)+(R7)(R6)送入(31H)(30H)。
MOV A,R0
ADD A,R6
MOV 30H,A
MOV A,R1
ADD A,R7
MOV 31H,A
SJMP $
错误:______
改正:______
-
下面程序段是将ROM2000H单元的内容送外部RAM1000H单元。
MOV DPTR, #2000H
CLR A
MOVC A.@A+DPTR
MOV DPTR,#1000H
MOV @DPTR,A
错误:______
改正:______
-
使用8031单片机要将引脚接低电平,因为其内部无______。
-
共阴极LED和共阳极LED的字段码互为______。
-
指令DA A是______调整指令,它跟在______的加法指令后。
-
PCON寄存器中与串行通信有关的只有D7位(SMOD),该位为波特率倍增位。当SMOD=_______时,串行口波特率增加一倍;当SMOD=______时,串行口波特率为设定值。
-
已知A=87H,(30H)= 76H,执行XRLA,30H后,A=______(30H)=______。
-
MCS-51系列单片机片内部数据存储器工作寄存器区32个字节被均匀地分为4个组:其中第2组工作寄存器,地址为______;第3组工作寄存器,地址为______。
-
MCS-51单片机的最大程序寻址空间是______,地址范围是______。
-
输人三个整数X,Y,Z,请把这三个数由小到大输出。
-
#include
main()
{int i,j,n;
scanf("%d",&n);
for(i=n;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
程序运行时从键盘输入1<回车
designtimesp=16728>,则运行结果是:
-
main()
{char n;
scanf("%e",&n);
switch(++n)
{default:printf("error");break;
ease'a':case'A':ease'b':case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':ease'D':printf("warn");}
}
程序运行时从键盘输入字母C<回车
designtimesp=16719>,则运行结果是:
-
main()
{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
{z=(*(ptr+y)<Y)?*(PTR+y):x;
printf("%d\n",z);}
}
程序运行结果是:_________
-
main()
{int n1,n2;
scanf("%d",&n2);
while(n2 !=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);}
}
程序运行时从键盘上输入1298<回车
designtimesp=16708>,则输出结果是:
-
struct abc
{char a[20]={0};
char b;}
main()
{struct abc studl[10];
int a;
for(a=0;a<10;a++)
scanf("%s",a);
}
错误:______
改正:______
-
#include"stdio.h"
main()
{FILE*I=fp;char ch;
if((tp=fopen("test.txt","W"))==NULL)
{printf("cannot open file\n");exit(0);}
ch=getchar();
while(ch!='$')
{fputc(ch,fp);putchar(ch);
ch=getchar();}
fclose(*fp);
}
错误:______
改正:______
-
求1到n的自然数之和的函数。
#include"stdio.h"
int sum(int n)
{int k,s=0;
for(k=1;k<10;k++)
s=s+k:
return s;
}
错误:______
改正:______
-
下面程序的功能是统计在16~31岁之间的学生人数。请填空。
main()
{int a[30],n,age,i;
for(i=0;i<30;i++)a[i]=0;
printf("Enter the number of thestudents(<30)\n");
scanf("%d",&n);
printf("Enter the age of each student:\n");
for(i=0;i<n;I++)
{scanf("%d",&age);_______;}
printf("the result is\n");
printf("age number\n");
for(i=16;i<32;i++)
printf("%d%d\n",i,a[i-16]);
-
main()
{int a[10],i;
for(i=1;i<=10;i++)
Scanf("%d",a[i]);
for(i=10;i>=0;i- -)
printf("%d",a[i]);
}
错误:______
改正:______
-
以下函数用于统计一行字符串中的单词个数,单词之间用空格分隔,请填空。int word_num(char strl[ ])
{inti,num=0,word=0;
for(i=0;strl[i]l='\0';i++)
if(______= =¨)word=0;
else if(word= =0){word=1;num++;}
return(num);
}
-
表达式7+8>2&&25%5的结果是______。
-
int x=2,y;则表达式y=x+5,x+y的值是______。
-
执行MOV IE,#81H指令的意义是( )
- A.屏蔽中断源
- B.开放外部中断源0
- C.开放外部中断源1
- D.开放外部中断源0和1
-
设累加器A的内容为OC9H,寄存器R2的内容为54H,CY=1,执行指令SUBB A,R2后结果为( )
- A.(A)=74H
- B.(R2)=74H
- C.(A)=75H
- D.(R2)=75H
-
下面不是三态锁存器的是( )
- A.74LS244.
- B.74LS373
- C.74LS377
- D.74LS273
-
汇编程序在汇编过程中扫描的次数是( )
- A.1
- B.3
- C.2
- D.4
-
8051定时器/计数器TO工作方式有( )
- A.三利
- B.两种
- C.四利
- D.一种
-
MOVC A,@A+DPTR的寻址方式是( )
- A.相对寻址
- B.寄存器间接寻址
- C.变址寻址
- D.寄存器寻址
-
下面不属于中断功能的是( )
- A.增加CPU处理能力
- B.实现实时处理
- C.故障的紧急处理
- D.人机联系
-
MCS-51单片机复位操作的主要功能是把PC初始化为( )
- A.0100H
- B.0000H
- C.2080H
- D.8000H
-
MCS-51系列单片机的程序存储器寻址空间是( )
- A.16KB
- B.32KB
- C.64KB
- D.128KB
-
int a[5],*p=a;对a数组元素地址的正确引用是( )
- A.p+5
- B.&a[0]
- C.&a+1
- D.*a+1
-
fclose函数的正确调用形式是( )
- A.fclose(文件指针名);
- B.fclose(文件名);
- C.fclose(文件变量名);
- D.fclose(变量名);
-
MCS-51单片机的定时器位数是( )
- A.16
- B.8
- C.4
- D.10
-
对于函数调用,以下说法错误的是( )
- A.出现在执行语句中
- B.出现在一个表达式中
- C.作为一个函数实参
- D.作为一个函数形参
-
以下if语句错误的是( )
- A.if(x<y);
- B.if(x)x+=y;
- C.if(x<y)x++;y++;ELSE x--;y--;
- D.if(x!=y)scanf("%d",&x);else x++;
-
以下属于单片机集成块型号的是( )
- A.386DX
- B.8097JF
- C.8086
- D.80486DX
-
C语言中最基本的数据类型是( )
- A.整型、实型、逻辑型
- B.整型、实型、逻辑型、字符型
- C.整型、字符型、逻辑型
- D.整型、实型、字符型