2012年微型计算机原理与接口技术自考题模拟(3)
-
从内部RAM30H单元开始,有10个单字节数据。试编一个程序,把其巾的正数、负数分别送40H和50H开始的内部RAM单元。
-
已知晶体振荡器的频率为fosc=12MHz。T0工作在方式1计数器模式,T1作定时器,工作在方式0,每隔0.5ms使P1.0引脚上的电平变反,在P1.0引脚上产生周期为1ms的方波输出,将下列程序补充完整。
0RG 0000H
AJMP MAIN
0RG 001BH
AJMP INTP
ORG 0030H
MAIN:MOV TMOD, ① ;写控制字
MOV TH1,#0F0H ;写定时常数(定时1ms)
MOV TL1,#0CH
② ;启动T1
③ ;启动T0
④ ;允许T1中断
⑤ ;开放CPU中断
AJMP $ ;定时中断等待
ORG 0200 H ;T1中断服务程序
INQP:PUSH 0
MOV TH1,#0F0H ;重写定时常数
MOV TL1,#0CH
CPL P1.0 ;P1.0变反输出
⑥
⑦
⑧
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
下面程序是在______中存放一个压缩的BCD码,将它拆成二个BCD字节,结果存于______开始的单元中(低位在前)
MOV R0,#SUM
MOV A,R2
ANL A,#0FH
MOV @R0,A
MOV A,R2
ANL A,#0F0H
SWAP A
INC R0
MOV @R0,A
RET
-
以下程序是将存于外部RAM______开始的50H数据传送到______的区域。
MOV DPTR,#8000H
MOV R0,#10H
MOV R2,#50H
L00P:MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R2,LOOP
RET
-
下列指令组要完成重复执行LOOP开始的程序20次。
MOV A,#14H
L00P:MOV R1,#01H
DEC A
JNC LOOP
错误:______
改正:______
-
若由程序设定RS1.RS0=11,则工作寄存器R0~R7的直接地址为______。
-
已知在累加器A中存放一个BCD(0~9),下面子程序实现一个查平方表。
SQR: INC A
MOVC A,A+PC
RET
TAB: DB 0,1,4,9,16
DB 25,36,49,64,81
错误:______
改正:______
-
已知(R0)=20H,(20H)=36H,(21H)=17H,(36H)=34H,执行下列程序后,则(R0)=______(R2)=______。
MOV A,@R0
MOV R0,A
MOV A,@R0
ADD A,21H
ORL A,#21H
RL A
MOV R2 A
RET
-
若(A)=86H,(PSW)=80H,则执行RRCA指令后,(A)=______。
-
若PSW=00,执行下列程序后,CY=______。
MOV A,#0FBH
MOV PSW,#10H
ADD A,#7FH
-
MCS-51单片机外部中断请求信号有电平方式和______,在电平方式下,当采集到INT0或INT1的有效信号为______时,激活外部中断。
-
执行完本段指令后(A)=______(B)=______。
MOV A,#08H
MOV B,#45H
PUSH A
PUSH B
POP A
POP B
-
MCS-51有一个全双工的______步串行口,有______种工作方式。
-
8051内部并行口P0口直接作输出口时,必须外接______;并行口作输入口时,必须先______,才能读入外设的状态。
-
#include"stdio.h"
main()
{int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1){b+=3;continue;}
b- =5;}
printf("%d\n",a);}
程序运行结果是:______
-
输入m和n(m≥n≥0)后,计算m!/n!(m-n)!表达式的值并输出。要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。
-
#include<math.h>
#include<stdio.h>
main()
{float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(1)
{if(fabs(z)>1.0){x=y;y=z;z=x/y;}
else break;}
printf("%f",y);}
程序运行时,从键盘输入3.6,2.4<回车>,则程序运行结果是:______
-
#include<stdio.h>
main()
{int a[10]={2,4,0,-5,10,6,-8,9,6,7};
inti,s=0,count=0;
for(i=0;i<10;i++)
if(a[i]>0){s+=a[i],count++;}
else continue;
printf("s=%d,count=%d\n",s,count);
}
程序运行结果是:______
-
#include<stdio.h>
main()
{int i,n;
double x,mypow;
scanf(“%lf%d",&x,&n);
mypow:1;
for(i=1;i<=n;i++)
mypow*=x:
printf("%.2f\n",mypow);
}
程序运行时输入2,3<回车>,则程序运行结果是:______
-
下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。
#include "stdio.h"
main()
{char c;
while((c=getchar())!='\n')
{if(c>='a'&&c<='z')
c=c-30;
if(c>'z'||c<='z'+2)
c=c-26;}
printf("%c",c);
}
错误:______
改正:______
-
以下程序的输出结果是29,改正错误。
fun(int x,int y)
{x*x+y*y;}
main()
{int a;
a=fun(5,2);
printf("%d",a);
}
错误:______
改正:______
-
#include<stdio.h>
main()
{
int a;
char ch;
ch="A":
scanf("%d",a);
printf("%c+%d=%c\n",ch,ch+a);
}
错误:______
改正:______
-
main()
{
int a[3]={0,1,2};
int i;
scarf("%d",&a);
for(i=1;i<3;i++)a[0]=a[0]+a[i];
printf("a [0]=%d\n",a[0]);
}
错误:______
改正:______
-
输入两个整数n1,n2(要求n1<n2),统计两整数范围内被3整除的数的个数。请填空。
#include”stdio.h”
main()
{int n1,n2,j,n=0;
printf("\n请输入两个数:");
scanf("%d%d",&n1,&n2);
if(n1>n2){j=n1;n1=n2;n2=j;}
for(j=n1;j<=n2,j++)
if(______)n++;
printf("a=%5d,b=%5d,n=%5d\n"n1,n2,n);}
-
若a=6,b=4,c=3,则表达式a&&b+c||b-c的值是______。
-
以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
-
8051单片机系统扩展时使用的锁存器用于锁存( )
- A.高8位地址
- B.低8位地址
- C.8位数据
- D.ALE信号
-
int a;则表达式(a=4*5,a*2),a+6的值是______。
-
下列对SCON的相关位描述不正确的是( )
- A.当REN=1时,禁止串行口接收数据
- B.在方式0时,SM2必须为0
- C.RI位由软件清零
- D.IT1=1,表示帧发送结束
-
通过串行口发送或接收数据时,在程序中应使用( )
- A.MOV指令
- B.MOVX指令
- C.MOVC指令
- D.SWAP指令
-
JZ rel指令中,操作数rel的寻址方式是( )
- A.立即寻址
- B.直接寻址
- C.位寻址方式
- D.相对寻址方式
-
用户可以直接使用的8031单片机I/O接口是( )
- A.P0
- B.P2
- C.P1
- D.P3
-
ANL20H,#30H指令中,源操作数的寻址方式是( )
- A.立即寻址
- B.直接寻址
- C.位寻址
- D.相对寻址
-
不影响程序状态字PSW的指令关键字是( )
- A.ADD
- B.ADDC
- C.SUBB
- D.RRC
-
MCS-51单片机的定时器/计数器工作方式1是( )
- A.16位计数器结构
- B.8位计数器结构
- C.13位计数器结构
- D.两个8位计数器结构
-
下面不属于中断处理过程的是( )
- A.保护现场号恢复现场
- B.开中断与关中断
- C.中断向量
- D.中断服务与中断返回
-
对以下定义正确的表述是( )
union node
{int num;char name[10];}stud;
- A.stud是一个联合体类型
- B.stud是一个联合体变量
- C.node是一个联合体数据
- D.node是一个联合体变量
-
MCS-51布尔处理机的存储空间指的是( )
- A.00H~0FH
- B.10H~1FH
- C.20H~2FH
- D.30H~3FH
-
若有定义int a[10],*p=a;则p+5表示的是( )
- A.a[5]的值
- B.a[6]的值
- C.a[5]的地址
- D.a[6]的地址
-
不能把字符串Hello!赋给数组b的语句是( )
- A.char b[10];b=”Hell0 !";
- B.char b[10]={'H','e','l','l','o','!'};
- C.char b[10];strcpy(b,"Hello !");
- D.char b[10]="Hello !";
-
以下说法中正确的是( )
- A.C语言程序总是从第一个定义的函数开始执行
- B.要调用的函数必须在main()函数中定义
- C.C语言程序总是从main()函数开始执行
- D.main()函数必须放在程序的开始部分
-
以下集成块型号中不属于16位系列单片机型号的是( )
- A.8095BH
- B.8096BH
- C.83C452
- D.9097BH
-
用16位(bit)二进制能够表示的无符号数的范围是( )
- A.65536
- B.65535
- C.65537
- D.65534