一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 一个由AT89C51单片机与一片ADC0809组成的数据采集系统,ADC08的地址为7FF8H~7FFFH。硬件逻辑电路图如下,下面程序是利用中断方式,分别对8路模拟信号轮流采样一次,转换结果依次存放在首址为30H的片外数据RAM中。完成中断服务程序填空。

    ORG 0000H

    AJMP MAIN

    ORG 0013H

    AJMP INT1

    MAIN: MOV R1,#30H

    MOV R7,#08H

    MOV DPTR,#07FF8H

    SET IT1

    SET EX1

    SET EA

    HERA: SJMP HERE

    中断服务程序:

    INT1: MOVX A, ①

    MOVX ② ,A

    ③ R1

    INC ④

    DJNZ ⑤ ,READ

    ⑦ :MOVX ⑧ ,A

    RET1

  2. 片外RAM2000H开始的单元中有5BH的数据,编程将它们传送到片内RAM20H开始的单元中去。

  3. 2506H M5: MOV SP,#58H

    2509H MOV 10H,#0FH

    250CH MOV 11H,#0BH

    ………

    250FH ACALL XHD;PC+2→PC,

    MOV 20H,11H

    2514H M5A:SJMP M5A

    XHD:PUSH 10H

    PUSH 11H

    POP 10H

    POP 11H

    RET

    执行M5A:SJMPM5A后,(SP)=______(20H)=______

  4. 设在31H单元存有#23H,执行下面程序:(41H)=______(42H)=______

    MOV A,31H

    ANL A,#0FH

    MOV 41H,A

    MOV A,31H

    ANL A,#0F0H

    SWAP A

    MOV 42H,A

  5. 下列程序要完成16位无符号数相加,两数分别存于30H,31H和40H,41H(低位在前),并把和存于30H,31H中(设和无进位输出)。请指出错误,并改正之。

    MOV A,30H

    ADD A,40H

    MOV 30H,A

    MOV A,31H

    ADD A,41H

    MOV 31H,A

    错误:______

    改正:______

  6. 某8031单片机时钟频率12MHz,T1为工作方式1,2毫秒定时中断,其部分初始化程序如下,请指出错误,并改正之。

    MOV TMOD,#01H

    MOV TH1,#0F8H

    MOV TL1,#30H

    MOV IP,#8

    MOV IE,#88H

    ……

    错误:______

    改正:______

  7. MCS-51内部的SFR共有______个。

  8. 设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=______。

    ORL A,#27H

    ANL A,28H

    XCHD A,@R0

  9. 设定T1为计数器方式,工作方式2,则TMOD中的值为______。

  10. 已知(31H)=21H,(32H)=04H,执行下列指令组后(31H)=______,(32H)=______。

    PUSH 31H

    PUSH 32H

    POP 31H

    POP 32H

  11. 假设两个一字节的十六进制数9FH,81H相加的和为8位二进制数,那么相加后其进位标志为______,溢出标志为______。

  12. MCS-51单片机的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的______和______。

  13. MCS-51的堆栈只可设置在______,其最大容量为______。

  14. 执行下列程序段后,(A)=______,(CY)=______。

    MOV A,#C5H

    RL A

  15. 请编一个函数int fun(float s[ ],int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组s中存放n位学生的成绩。数组s的值由主函数从键盘读入,用-1来结束输入。

  16. #include<stdio.h>

    main()

    {int k=0;

    char c='A':

    do

    {switch(c++)

    {case'A':k++;break;

    case'B':k--;

    case'C':k+ =2;break;

    case'D':k=k%2;break;

    case'E':k=k*10;break;

    default:k=k/3;}

    k++;}

    while(c<'G');

    printf("k=%d",k);}

    程序运行结果是:______

  17. #include<stdio.h>

    main()

    {int x;

    scanf("%d",&x);

    if(x>=60)printf("pass");

    else printf("fail");

    }

    程序运行时输入60<回车>,则程序运行结果是:______

  18. #include<stdio.h>

    main()

    {int i,b,k=0;

    for(i=1;i<=5;i++)

    {b=i%2;

    while(b-->=0)k++;}

    printf("%d,%d",k,b);

    }

    程序运行结果是:______

  19. #include"stdio.h"

    main()

    {int a,b,d=241;

    a=d/100%9;

    b=(-1)&&(-1);

    printf("%d,%d",a,b);

    }

    程序运行结果是:______

  20. main()

    {char s[4]="9876",*p;

    for(p=s;p<s+2;p++)printf("%s\n",p);

    }

    错误:______

    改正:______

  21. struct stud

    {char num[6];

    int s[4];

    double ave=0.0;

    }a;

    main()

    {int i;

    for(i=0;i<4;i++)scanf("%d",&a.s[i]);

    for(i=0;i<4;i++)a.ave+ =a.s[i];

    printf("%f",a.ave);

    }

    错误:______

    改正:______

  22. main()

    {

    int a b;

    a=2;

    b=3;

    c=a*b

    printf("c=%c",c);

    }

    错误:______

    改正:______

  23. 下面程序的功能是计算1+2+3……+50的和。

    main()

    (int i,sum;

    for(i=1;i<=50;i++)

    sum+ =i;

    printf("%d",sum);

    }

    错误:______

    改正:______

  24. 等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有项的和。请填空。

    #include<stdio.h>

    main()

    {int a,d,sum;

    a=2;d=3;sum=0:

    do{sum+ =a;

    a+ =d:

    if(______)printf("%d\n",sum);

    }while(sum<200);

    }

  25. 求出2/1,3/2,5/3,8/5,13/8,21/13……这个数列的前20项之和。请填空。

    main()

    {int n,t,number=20;

    floata=2,b=1,s=0;

    for(n=1;n<=number;n++)

    {

    s=______;

    t=a;a=a+b;b=t;

    }

    printf("sum is%9.6f\n",s);

    }

  26. 一个EPROM的地址有A0-A11引脚,它的容量是(   )

    • A.2KB
    • B.4KB
    • C.11KB
    • D.12KB
  27. 若a=3,b=4,c=5,则表达式a||b+c&&b= =c的值是_______。

  28. int m=5,y=2;则执行表达式y+ =y- =m *=y后的y值是______。

  29. 地址指针DPTR是(   )

    • A.4位的专用寄存器
    • B.8位的专用寄存器
    • C.16位的专用寄存器
    • D.32位的专用寄存器
  30. 若设串行控制寄存器SCON=40H,则串行口的工作方式是(   )

    • A.方式0
    • B.方式1
    • C.方式2
    • D.方式3
  31. 执行下列3条指令后,30H单元的内容是(   )

    MOV R0,#30H

    MOV 40H,#0EH

    MOV @R0,40H

    • A.40H
    • B.30H
    • C.0EH
    • D.FFH
  32. MOV C,00H指令中源操作数的寻址方式是(   )

    • A.位寻址
    • B.直接寻址
    • C.立即寻址
    • D.寄存器寻址
  33. 控制串行口工作方式的寄存器是(   )

    • A.TCON
    • B.PCON
    • C.SCON
    • D.TMOD
  34. 在扩展系统中,能够提供地址信号的高8位的端口是(   )

    • A.P0口
    • B.P1口
    • C.P2口
    • D.P3口
  35. MCS-51外部中断1固定对应的中断入口地址为(   )

    • A.0003H
    • B.000BH
    • C.0013H
    • D.001BH
  36. 单片机的指令地址存放在(   )

    • A.PSW
    • B.DPTR
    • C.SP
    • D.PC
  37. 打开文件语句fp=fopen("a.dat","r");中fp的类型是(   )

    • A.File *
    • B.file
    • C.File
    • D.FILE *
  38. 8051与8751的区别是(   )

    • A.内部数据存储器的数目不同
    • B.内部数据存储器的类型不同
    • C.内部程序存储器的类型不同
    • D.内部的寄存器的数目不同
  39. 变量的指针是(   )

    • A.变量的首地址
    • B.变量的值
    • C.变量的名
    • D.变量的一个标志
  40. 已知char ch='B';则以下表达式的值是(   )

    ch=(ch>='A'&&ch<='Z')?(ch+32):ch;

    • A.A
    • B.a
    • C.b
    • D.Z
  41. 用8位(bit)二进制能够表示的有符号数的范围是(   )

    • A.-127~+128
    • B.-128~+127
    • C.-127~+127
    • D.-128~+128
  42. 以下集成块型号中,不属于MCS-51系列单片机型号的是(   )

    • A.8094BH
    • B.83C452
    • C.80C32
    • D.8051AH
  43. 下列选项中,合法的C语言关键字是(   )

    • A.default
    • B.get
    • C.integer
    • D.VAR