微型计算机原理与接口技术-1
(总分100, 做题时间90分钟)
一、单项选择题
在每小题列出的四个备选项中只有一个选项是符合题目要求的。
1. 
变量的指针是(    )
A 变量的首地址
B 变量的值
C 变量的名
D 变量的一个标志
    分值: 1
答案:A
[解析] 指针的概念。
2. 
以下集成块型号中,不属于MCS-51系列单片机型号的是(    )
A 8094BH
B 83C452
C 80C32
D 8051AH
    分值: 1
答案:A
[解析] 要熟记单片机型号。
3. 
已知char ch='B';则以下表达式的值是(    )    ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
A A
B a
C b
D Z
    分值: 1
答案:C
[解析] 条件表达式。
4. 
下列选项中,合法的C语言关键字是(    )
A default
B get
C integer
D VAR
    分值: 1
答案:A
[解析] C语言关键字。
5. 
控制串行口工作方式的寄存器是(    )
A TCON
B PCON
C SCON
D TMOD
    分值: 1
答案:C
[解析] 注意不同接口的工作方式寄存器。
6. 
若设串行控制寄存器SCON=40H,则串行口的工作方式是(    )
A 方式0
B 方式1
C 方式2
D 方式3
    分值: 1
答案:B
[解析] 串行口的工作方式。
7. 
地址指针DPTR是(    )
A 4位的专用寄存器
B 8位的专用寄存器
C 16位的专用寄存器
D 32位的专用寄存器
    分值: 1
答案:C
[解析] 注意专用寄存器的位数。
8. 
在扩展系统中,能够提供地址信号的高8位的端口是(    )
A P0口
B P1口
C P2口
D P3口
    分值: 1
答案:C
[解析] P2口是系统扩展口。
9. 
MCS-51外部中断1固定对应的中断入口地址为(    )
A 0003H
B 000BH
C 0013H
D 001BH
    分值: 1
答案:C
[解析] MCS-51外部中断1入口地址固定。
10. 
8051与8751的区别是(    )
A 内部数据存储器的数目不同
B 内部数据存储器的类型不同
C 内部程序存储器的类型不同
D 内部的寄存器的数目不同
    分值: 1
答案:C
[解析] 注意不同芯片的内部程序存储器。
11. 
执行下列3条指令后,30H单元的内容是(    )    MOV R0,#30H    MOV 40H,#0EH    MOV @R0,40H
A 40H
B 30H
C 0EH
D FFH
    分值: 1
答案:C
[解析] 寄存器间接寻址。
12. 
单片机的指令地址存放在(    )
A PSW
B DPTR
C SP
D PC
    分值: 1
答案:D
[解析] PC是存放指令地址的。
13. 
用8位(bit)二进制能够表示的有符号数的范围是(    )
A -127~+128
B -128~+127
C -127~+127
D -128~+128
    分值: 1
答案:C
[解析] 8位二进制数表示的范围。
14. 
一个EPROM的地址有A0-A11引脚,它的容量是(    )
A 2KB
B 4KB
C 11KB
D 12KB
    分值: 1
答案:B
单片机printf函数[解析] 不同引脚的程序存储器的寻址空间。
15. 
MOV C,00H指令中源操作数的寻址方式是(    )
A 位寻址
B 直接寻址
C 立即寻址
D 寄存器寻址
    分值: 1
答案:A
[解析] 指令的寻址方式。
16. 
打开文件语句fp=fopen("a.dat","r");中fp的类型是(    )
A File *
B file
C File
D FILE *
    分值: 1
答案:D
[解析] 文件类型。
二、填空题
17. 
int m=5,y=2;则执行表达式y+ =y- =m *=y后的y值是______。
    分值: 2
答案:-16
[解析] 先乘除后加减。
18. 
若a=3,b=4,c=5,则表达式a||b+c&&b= =c的值是_______。
    分值: 2
答案:1
[解析] 注意算术、关系和逻辑运算符的优先顺序。
19. 
等差数列的第一项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);
   }
    分值: 2
答案:sum%4= =0
[解析] 整除表达式的使用。
20. 
求出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);
   }
    分值: 2
答案:s+a/b
[解析] 分数求和的表达式。
三、改错题
每小题只有一处错误或不妥。请指出。并将其改正。
21. 
main()
   {
     int a b;
     a=2;
     b=3;
     c=a*b
     printf("c=%c",c);
   }
   错误:______
   改正:______
    分值: 2
答案:错误:printf("c=%c",c);
改正:将其修改为printf("c=%d",c);
[解析] printf函数格式错误
22. 
下面程序的功能是计算1+2+3……+50的和。
   main()
   (int i,sum;