2012年微型计算机原理与接口技术自考题模拟(6)
-
下面程序是动态显示程序,请分析程序完成说明。
MOV DPTR,#4400H
MOV A,#03H
MOVX @DPTR,A
SETB RS0 ;使用第1组工作寄存器
MOV R2,#08H
MOV R0,#30H
CLR A
L1: MOV @R0,A
INC R0
INC A
DJNZ R2,L1
DISP: MOV R0,#30H ;显示缓冲区首址送R0
MOV R1,#00H
MOV R2,#08H ;R2中的08H表示①
MOV R3,#7FH ;选中最右端LED
DISP1: MOV A,@R0 ;第2次执行时A=②
MOV DPTR,#TAB ;指向字形表首址
MOVC A,@A+DPTR ;第2次执行时A=③
MOV DPTR,#4402H ;4402H表示④
MOVX @DPTR,A ;该条指令的作用是⑤
MOV A,R3 ;第2次执行时A=⑥
MOV DPTR,#4401H ;指向位选口
MOVX @DPTR,A ;位码送PA口
DJNZ R1,$ ;
DJNZ R1,$ ;该指令的作用是⑦
RR A ;位选字移位
MOV R3,A ;移位后的位选字送R3
INC R0 ;在本程序中,R0最大取值为⑧
MOV A,@R0 ;缓冲区数据送A
DJNZ R2,DISP1 ;未扫描完,继续循环
SJMP DISP
TAB: DB 3FH,06H,5BH,4FH,66H;共阴极LED字形表
DB 6DH,7DH,07H,7FH,6FH
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
下面程序是将字节地址______单元的内容逐一取出减1,然后再放回原处,如果取出的内容为______,则不要减1,仍将0放回原处。
MOV R7,#10H
MOV R1,#30H
L00P:CJNE @R1,#00H,NEXT
MOV @R1,#00H
SJMP NEXT1
NEXT:DEC @R1
NEXT1:INC R1
DJNZ R7,LOOP
SJMP $
END
-
下面程序是从______单元开始,连续存放10个无符号数,从中找出最大值送入______单元。
ORG 0020H
MOV R0,#40H
MOV B,@R0
MOV R7,#09H
INC R0
L00P:MOV A,B
CLR C
SUBB A,@R0
JNC NEXT
MOV B,@R0
NEXT:INC R0
DJNZ R7,LOOP
MOV 30H,B
SJMP $
END
-
使用定时/计数器0以工作方式2实现定时,在P1.0输出周期为200μs的连续方波。已知晶振频率fosc=6MHz。求计数初值,方式控制字,编制相应程序。(查询方式)
-
下列程序段把片外RAM从8100H开始的10个存储单元的内容移到片内RAM 40H开始的单元。
PUSH A
MOV R7,10
MOV R0,#40H
MOV DPTR,#8100H
LOOP:MOV A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R7,LOOP
POP ACC
错误:______
改正:______
-
执行下面三条指令后,30H单元的内容是40H。
MOV R1,#30H
MOV 40H,#0EH
MOV R1,40H
错误:______
改正:______
-
80C51在作并行扩展时,如果采用全地址译码,扩展芯片的地址是______。
-
存储器的地址线有14根,数据线有8根,其存储容量为______。
-
当DAC 0832 D/A转换器的CS接8031的P2.0时,程序中0832的地址指针DPDR寄存器应置为______。
-
设(SP=60H),(ACC=30H),(B=70H)。执行下列指令后,SP的内容为______,61H单元的内容为______。
PUSH ACC
PUSH B
-
执行下列程序后,(42H)=______,(55H)=______。
MOV SP,#40H
MOV 42H,#85H
MOV 55H,#37H
PUSH 42H
PUSH 55H
POP 42H
POP 55H
-
12根地址线可选择______存储单元,32KB存储单元需要______根地址线。
-
使用8031单片机时EA引脚接______电平,因其内部无______存储器。
-
自定义一个函数,函数的形参为字符数组s1和s2,函数功能是将字符串s1中的所有数字字符取出,存入另一字符数组s2中,使s2成为一个新的字符串,并在函数中将字符串s2输出。
-
#include<stdio.h>
#include<string.h>
func(char str[])
{int num=0;
while(*(str+num)!='\0')num++;
retum(num);
}
main()
{char str[10],*p=str;
getchar(p);printf("%d\n",func(p));
}
程序运行时,从键盘上输入ABCDE<回车>,则输出结果是:______
-
一个机器周期包含______个晶振周期。若品振周期的频率为12MHz,则机器周期为______。
-
#include"stdio.h"
main()
{inti,k=0,s[10]={1,2,3,4,5,6,7,8,9,10};
for(i=0;i<10;i++)
if(i%2)k+=s[i];
intfor(i=i-1;i>=0;i--)
if(i%5==0)printf("%d",s[i]);
printf("%d\n",k);
}
程序运行结果为:______
-
main()
{intp[8]={11,12,13,14,15,16,17,18},i=0,k=0;
while(i<8)
{if(p[i]%2)k+=p[i];
i++;}
printf("%d\n",k);
程序运行结果是:______
-
main()
{inta=2,b=3,c;
c=a+b:
b=a++-1:
printf("%d,%d,%d\n",a,b,c);
b=--c+1:
printf("%d,%d,%d\n",a,b,e);
程序运行结果是:______
-
输出100以内能被3整除且个位数为6的所有整数。
#include<stdio.h>
main()
{int i,j;
for(i=0;i<=9;i++)
{j=i*10+6:
if(j%3==0)continue;
printf("%d",j);}
}
错误:______
改正:______
-
以下程序从键盘输入20个整数存入数组,统计输入非负数的个数,并计算输入的非负整数之和。
#include"stdio.h"
main()
{int i,a[20],s,n;
s=n=0:
for(i=0;i<20;i++)scanf("%d",&a[i])
for(i=0;i<20;i++)
{if(a[i]<0)break;
S+=a[i];n++;
}
printf("s=%d\t,n=%d\n",s,n);
}
错误:______
改正:______
-
main()
{inta[3]={3*0},i;
for(i=1;i<3;i++)scanf("%d",a[i]);
for(i=1;i<3;i++)a[0]=a[0]+a[i+1];
printf("%d",a[0]);
}
错误:______
改正:______
-
以下程序是计算10名学生1门课成绩的平均分。请填空。
#include<stdio.h>
float average(float array[10])
{int i;float aver,sum=array[0];
for(i=1;i<10;i++)sum+=______;
aver=sum/10;
return(aver);
}
main()
{float score[10],aver;
int i;
printf("\n input 10 scores:");
for(i=0;i<10;i++)scanf("%f",&score[i]);
aver=average(score);
printf("\n average score is%5.2f\n",aver);
}
-
#include"stdio.h"
main()
{char a[10],b[10]="Computer"
a=b;printf("%s",a);
}
错误:______
改正:______
-
以下函数的功能是:求x的y次方。请填空。
double fun(double x,int y)
{int 1;
double z;
for(i=1,z=x;i<y;i++)______;
return z;
}
-
int a;则表达式a=25/3%3的值是______。
-
若a=6,b=4,c=2;则表达式!(a-b)+c-1&&b+c/2的值是______。
-
下列指令能使R0低4位不变,高4位置F的是( )
- A.ANL R0,#0F0H
- B.ORL R0,#0F0H
- C.ORL 0,#0FH
- D.ORL 00H,#0F0H
-
在MCS-51指令中,下列指令中无条件转移指令是( )
- A.LCALL addr16
- B.DJNZ direct.rel
- C.SJMP rel
- D.ACALL addr11
-
单片机的堆栈指针SP始终是指示( )
- A.堆栈底
- B.堆栈顶
- C.堆栈地址
- D.堆栈中间位置
-
对于8031单片机,其内部RAM( )
- A.只能位寻址
- B.既可位寻址又可字节寻址
- C.只能字节寻址
- D.少部分只能位寻址
-
单片机8031的ALE引脚是( )
- A.输出高电平
- B.输出矩形脉冲,频率为fosc的1/6
- C.输出低电平
- D.输出矩形脉冲,频率为fosc的1/2
-
共阴极显示管显示字型“F”编码是( )
- A.86H
- B.71H
- C.90H
- D.FFH
-
下面表示中断允许控制寄存器的是( )
- A.TCON
- B.IE
- C.IP
- D.SCON
-
不是MCS-51单片机:I/O的数据传输方式的是( )
- A.无条件
- B.查询
- C.中断
- D.DMA
-
不是常用的汇编语言程序结构的是( )
- A.顺序
- B.分支
- C.循环
- D.随机
-
MCS-51单片机只具备单一功能的I/O接口是( )
- A.P0
- B.P1
- C.P2
- D.P3
-
下列程序段的执行结果是( )
int x=3:
while(x<=5)
{printf("%d",x-3);x++;}
- A.000
- B.112
- C.123
- D.012
-
对下面说明叙述正确的是( )
typedef struct stu
{int n;char ch[8];
}student;
- A.student是结构体类型名
- B.student是结构体变量
- C.typedef struct是结构体类型
- D.struct是结构体类型名
-
下面输入整型变量格式的语句是( )
- A.scanf("%f",&b);
- B.scanf("%d",&b);
- C.scanf("%c",&b);
- D.scanf("%s",&b);
-
若int a[10];则对数组正确引用的是( )
- A.a[10-10]
- B.a[10]
- C.a[2*5]
- D.a[9-10]
-
字符'9'的ASCII码值是( )
- A.55
- B.54
- C.56
- D.57
-
以下集成块型号中属于MCS-96系列单片机型号的是( )
- A.83C51FB
- B.80C196KR
- C.83C52
- D.83C51FA