一起答

2012年微型计算机原理与接口技术自考题模拟(3)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 从内部RAM30H单元开始,有10个单字节数据。试编一个程序,把其巾的正数、负数分别送40H和50H开始的内部RAM单元。

  2. 已知晶体振荡器的频率为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变反输出

    答:①______;②______;③______;④______;

    ⑤______;⑥______;⑦______;⑧______。

  3. 下面程序是在______中存放一个压缩的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

  4. 以下程序是将存于外部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

  5. 下列指令组要完成重复执行LOOP开始的程序20次。

    MOV A,#14H

    L00P:MOV R1,#01H

    DEC A

    JNC LOOP

    错误:______

    改正:______

  6. 若由程序设定RS1.RS0=11,则工作寄存器R0~R7的直接地址为______。

  7. 已知在累加器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

    错误:______

    改正:______

  8. 已知(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

  9. 若(A)=86H,(PSW)=80H,则执行RRCA指令后,(A)=______。

  10. 若PSW=00,执行下列程序后,CY=______。

    MOV A,#0FBH

    MOV PSW,#10H

    ADD A,#7FH

  11. MCS-51单片机外部中断请求信号有电平方式和______,在电平方式下,当采集到INT0或INT1的有效信号为______时,激活外部中断。

  12. 执行完本段指令后(A)=______(B)=______。

    MOV A,#08H

    MOV B,#45H

    PUSH A

    PUSH B

    POP A

    POP B

  13. MCS-51有一个全双工的______步串行口,有______种工作方式。

  14. 8051内部并行口P0口直接作输出口时,必须外接______;并行口作输入口时,必须先______,才能读入外设的状态。

  15. #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);}

    程序运行结果是:______

  16. 输入m和n(m≥n≥0)后,计算m!/n!(m-n)!表达式的值并输出。要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。

  17. #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<回车>,则程序运行结果是:______

  18. #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);

    }

    程序运行结果是:______

  19. #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<回车>,则程序运行结果是:______

  20. 下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中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);

    }

    错误:______

    改正:______

  21. 以下程序的输出结果是29,改正错误。

    fun(int x,int y)

    {x*x+y*y;}

    main()

    {int a;

    a=fun(5,2);

    printf("%d",a);

    }

    错误:______

    改正:______

  22. #include<stdio.h>

    main()

    {

    int a;

    char ch;

    ch="A":

    scanf("%d",a);

    printf("%c+%d=%c\n",ch,ch+a);

    }

    错误:______

    改正:______

  23. 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]);

    }

    错误:______

    改正:______

  24. 输入两个整数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);}

  25. 若a=6,b=4,c=3,则表达式a&&b+c||b-c的值是______。

  26. 以下程序的功能是计算: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);

    }

  27. 8051单片机系统扩展时使用的锁存器用于锁存(   )

    • A.高8位地址
    • B.低8位地址
    • C.8位数据
    • D.ALE信号
  28. int a;则表达式(a=4*5,a*2),a+6的值是______。

  29. 下列对SCON的相关位描述不正确的是(   )

    • A.当REN=1时,禁止串行口接收数据
    • B.在方式0时,SM2必须为0
    • C.RI位由软件清零
    • D.IT1=1,表示帧发送结束
  30. 通过串行口发送或接收数据时,在程序中应使用(   )

    • A.MOV指令
    • B.MOVX指令
    • C.MOVC指令
    • D.SWAP指令
  31. JZ rel指令中,操作数rel的寻址方式是(   )

    • A.立即寻址
    • B.直接寻址
    • C.位寻址方式
    • D.相对寻址方式
  32. 用户可以直接使用的8031单片机I/O接口是(   )

    • A.P0
    • B.P2
    • C.P1
    • D.P3
  33. ANL20H,#30H指令中,源操作数的寻址方式是(   )

    • A.立即寻址
    • B.直接寻址
    • C.位寻址
    • D.相对寻址
  34. 不影响程序状态字PSW的指令关键字是(   )

    • A.ADD
    • B.ADDC
    • C.SUBB
    • D.RRC
  35. MCS-51单片机的定时器/计数器工作方式1是(   )

    • A.16位计数器结构
    • B.8位计数器结构
    • C.13位计数器结构
    • D.两个8位计数器结构
  36. 下面不属于中断处理过程的是(   )

    • A.保护现场号恢复现场
    • B.开中断与关中断
    • C.中断向量
    • D.中断服务与中断返回
  37. 对以下定义正确的表述是(   )

    union node

    {int num;char name[10];}stud;

    • A.stud是一个联合体类型
    • B.stud是一个联合体变量
    • C.node是一个联合体数据
    • D.node是一个联合体变量
  38. MCS-51布尔处理机的存储空间指的是(   )

    • A.00H~0FH
    • B.10H~1FH
    • C.20H~2FH
    • D.30H~3FH
  39. 若有定义int a[10],*p=a;则p+5表示的是(   )

    • A.a[5]的值
    • B.a[6]的值
    • C.a[5]的地址
    • D.a[6]的地址
  40. 不能把字符串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 !";
  41. 以下说法中正确的是(   )

    • A.C语言程序总是从第一个定义的函数开始执行
    • B.要调用的函数必须在main()函数中定义
    • C.C语言程序总是从main()函数开始执行
    • D.main()函数必须放在程序的开始部分
  42. 以下集成块型号中不属于16位系列单片机型号的是(   )

    • A.8095BH
    • B.8096BH
    • C.83C452
    • D.9097BH
  43. 用16位(bit)二进制能够表示的无符号数的范围是(   )

    • A.65536
    • B.65535
    • C.65537
    • D.65534