2012年微型计算机原理与接口技术自考题模拟(4)
-
下面程序是A/D转换应用程序,可实现多路模拟量输入的巡回检测,采样数据被存放在片内RAM单元中。阅读程序完成说明语句。
ORG 0000H
AJMP MAIN
ORG 0013H ;该地址是①地址
AJMP INT1
MAIN:MOV R0,#78H ;78是②地址
MOV R2,#08H ;
SETB IT1 ;该指令的作用是③
SETB EA
SETB EX1 ;允许INT1中断
MOV DPTR,#6000H;#6000H是④地址
MOV A,#00H ;A的内容对转换结果⑤影响
LOOP:MOVX @DPTR,A ;该指令的作用是⑥
HERE:SJMP HERE
DJNZ R2,LOOP
INT1:MOVX A,@DPTR ;当⑦时,程序将运行到此处。
MOV @R0,A
INC DPTR ;DPTR加1的目的是⑧
INC R0
RET1
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______;
-
RAM中60H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R6中。
-
下面程序段是将ROM 3000H单元内容送R7。
MOV DPTR,#3000H
CLR A
MOVC A,@R7+DPTR
MOV R7,A
错误:______
改正:______
-
以下是8051单片机定时/计数器的初始化程序(设单片机晶振频率是6MHz):T0作为定时,定时时间为______,T1作为计数,记满______溢出。
ORG 0000H
LJMP 0050H
ORG 0050H
MOV TMOD,#20H
MOV TH0,#63H
MOV TL0,#18H
MOV TH1,#9CH
MOV TL,#9CH
SETB EA
SETB TR0
SETB TR1
SJMP $
-
下面程序是将片内RAM______开始的单元内10个二进制数,找出其中最大值并存于单元中。
START: MOV R0,#40H
MOV R7,#09H
MOV A,@R0
LOOP: INC R0
MOV 30H,@R0
CJNE A,30H,NEXT
NEXT: JNC BIE1
MOV A,30H
BIE1: DJNZ R7,LOOP
MOV 50H,A
RET
-
下面程序段是将片外RAM20H~25H单元清零。
MOV R0,#20H
MOV R7,#06H
CLR A
LOOP: MOV @R0,A
INC R0
DJNZ,#3000H
错误:______
改正:______
-
某8031单片机时钟频率为12MHz,现将T0设置为定时方式1,定时时间为1毫秒,其计数器中的时间常数初值应为______。(写成四位十六进制数)
-
-
8031单片机内部数据RAM中的位寻址区的地址范围是______。
-
执行下面一段程序后,(A)=______,(B)=______。
MOV SP,#60H
MOV A,#10H
MOV B,#01H
PUSH A
PUSH B
POP A
POP B
-
MUL AB的执行结果是存储高8位在______中,低8位在______中。
-
8051单片机内有______个16位的定时/计数器,______有四种工作方式。
-
MCS-51的存储器空间配置从功能上可分为四种类型:______、内部数据存储器、______、外部程序存储器。
-
8255A属于可编程的______I/0接口芯片,8255A的A通道有______种工作方式。
-
每个苹果0.8元,第一天买两个苹果,第二天开始,每天买前一天的两倍,直到买的苹果个数达到不超过100的最大值。编写程序,求每天平均花多少钱?
-
#include<stdio.h>
main()
{int n,sum=0;
scanf("%d",&n);
do{sum=sum+(n%10)*(n%10);
n=n/10;}while(n);
printf("sum=%d",sum);
}
程序运行时,从键盘输入2345<回车>,运行结果是:______
-
#include<stdio.h>
main()
{int x,sum;
scanf("%d",&x);
sum=0;
while(x>0)
{if(x%2==0)sum+=x;
scanf("%d",&x);}
printf("%d\n",sum);
}
程序运行时输入1 9 3 4 0<回车>,则程序运行结果是:______
-
#include"stdio.h"
main()
{int i;
for(i=1;i<=5;i++)
{if(i%2)printf("*");
else continue;
printf("#");}
printf("#");}
程序运行结果是:______
-
#include<stdio.h>
#define N 6
void main()
{int a[N]={4,5,8,3,6,1};
int j,i,t;
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(j=0;j<N;j++)printf("%5d",a[j]);
程序运行结果是:______
-
main()
{char s[]="9876",*p;
*p=s:
printf("%s",p);
}
错误:______
改正:______
-
下面程序的功能是将大写字母改成小字母,小字母改成大写字母。
main()
{char ch;
scanf("%c",&ch);
if(ch>='A'||ch<='Z')ch=ch+32;
elseif(ch>='a'&&ch<='z')ch=ch-32;
printf("%c",ch);
}
错误:______
改正:______
-
main()
{
float a[10]={0.0};
int i
for(i=0;i<3;i++)scanf("%d",&a[1]);
for(i=0;i<10;i++)a[0]=a[0]+a[i];
printf("%d\n",a[0]);
}
错误:______
改正:______
-
#include<stdio.h>
#include<conio.h>
main()
{
int i,j;
char ch;
while(ch=getchar()!='\r')
{
i++:
printf("%c",ch);
}
printf("you type%d characters\n",i);
}
错误:______
改正:______
-
以下程序的功能是计算字符串的长度。请填空。
#include<stdio.h>
main()
{char str[100],*sp=str;
int nlen=0;
scanf("%s",str);
for(;*sp!='\0';sp++)______;
printf("%d",nlen);
}
-
以下程序的功能是对10个整数从小到大排序。请填空。
#include<stdio.h>
sort(int arr[],int n);
main()
{int a[10],*p,i;
printf("input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\nthe original array is:");
for(p=a;P<a+10;p++)
printf("%d",*p);
sort(a,10);
printf("\nthe present array is:");
for(P=a;P<a+10;P++)
printf("%d",*p);
}
sort(int arr[],int n)
{int*p1,*p2,temp;
for(p1=arr;p1<arr+(n-1);p1++)
for(p2=p1+1;p2<arr+n;p2++)
if(______)
{temp=*p1;*p1=*p2;*p2=temp;}
}
-
若a=1,b=4,c=3,则表达式!(a<b)||!c&&1的值是______。
-
8255是一个可编程的:I/O接口芯片,“可编程”是( )
- A.有14位可控定时器/计数器
- B.芯片内包含有256字节的RAM
- C.只能使用中断编程的方法进行I/O数据传送
- D.使用命令字以程序方法设置I/O数据传送的方式
-
inta,b,c;则表达式a=(b=4)+(c=2)的值是______。
-
8031的定时器T0作计数方式,用模式1(16位计数器),则应用初始化编程指令是( )
- A.MOV TMOD,#01H
- B.MOV TMOD,10H
- C.MOV TMOD,#05H
- D.MOV TCON,#05H
-
8031的定时器T1作计数方式,模式2的方式控制字是( )
- A.60H
- B.02H
- C.06H
- D.20H
-
共阴极显示管点亮时输入电平是( )
- A.低电平
- B.低电压
- C.低阻态
- D.高电平
-
单片机上电复位后,堆栈区的最大允许范围的单元是( )
- A.64
- B.120
- C.128
- D.256
-
8051单片机的VCC(40)引脚是( )
- A.主电源+5V引脚
- B.接地引脚
- C.备用电源引脚
- D.访问片外存贮器引脚
-
不是MCS-51单片机I/O的数据传送方式的是( )
- A.无条件传送
- B.随机传输
- C.查询方式
- D.中断方式
-
8051/8031型单片机提供中断源的个数是( )
- A.3
- B.4
- C.6
- D.5
-
以下定义,使p指向data和a域的赋值语句是( )
struct stuclent
{int a;float b;}data,*p;
- A.p=&a;
- B.p=data.a;
- C.*p=data.a;
- D.p=&data.a;
-
不是伪指令关键字的是( )
- A.ORG
- B.START
- C.EQU
- D.DATA
-
下面不是运算器完成的主要任务是( )
- A.算术运算
- B.位运算
- C.数据处理
- D.指令译码
-
从循环体内某一层跳出,继续执行循环外的语句是( )
- A.return语句
- B.break语句
- C.continue语句
- D.空语句
-
执行下面程序段后,正确的结果是( )
int x=0,y=0;
while(x<15)y++,x+ =++y;
- A.x=8
- B.y=20
- C.x=20
- D.y=12
-
以下使用后缀表日月十六进制数的是( )
- A.B
- B.H
- C.D
- D.O
-
以下集成块型号中不属于8位系列单片机型号的是( )
- A.83C152JC
- B.83C52JA
- C.83C51FB
- D.8097JF
-
以下说法正确的是( )
- A.计算机能直接执行C的源程序
- B.后缀是EXE的文件是二进制文件
- C.后缀是OBJ和EXE的文件是可执行文件
- D.后缀是OBJ的文件是二进制文件