指针数组与数组指针详解_指针数组与数组指针详解

指针数组与数组指针详解_指针数组与数组指针详解2022年河北专接本考试大纲-理工类-计算机科学与技术、软件工程、数字媒体技术、网络工程、物联网工程、数据科学与大数据技术、智能科学与技术专业考试说明(C语言程序设计、微机原理与接口含汇编语言)本文中为

2022年河北专接本考试大纲-理工类-计算机科学与技术、软件工程、数字媒体技术、网络工程、物联网工程、数据科学与大数据技术、智能科学与技术专业考试说明(C语言程序设计、微机原理与接口含汇编语言)   本文中为2021年河北专接本考试大纲,选自官方发布!   河北省普通高校专科接本科教育考试   计算机科学与技术/软件工程/数字媒体技术/网络工程/   物联网工程/数据科学与大数据技术/智能科学与技术专业考试说明   第一部分:C语言程序设计   I.课程简介   一、内容概述与要求   C语言程序设计课程考试是为招收计算机类相关专业专科接本科学生而实施的入学考试。   参加C语言程序设计课程考试的考生应理解C程序的基本构成、C程序中的数据类型及其运算、结构化程序设计的三种基本结构(顺序、选择、循环)、数组、函数;了解编译预处理命令、指针、结构体与共用体、位运算等知识模块所涉及的基本概念、语法规范;掌握运用以上语法知识进行结构化程序设计的基本方法;熟悉程序设计中简单的数据结构和算法,具有一定的分析和编写简单C程序的能力,以及基本的纠错和调试程序的能力。考生应具有规范的结构化编程思维,能够综合运用所学知识分析并解决简单的实际问题。   C语言程序设计课程考试从两个层次对考生进行测试,较高层次的要求为“理解”和“掌握”,较低层次的要求为“了解”和“会”。这里“理解”和“了解”是指对概念与理论提出的要求。“掌握”和“会”是指对使用方法、应用能力提出的要求。   二、考试形式与试卷结构   考试采用闭卷、笔试形式,全卷满分为 150 分,考试时间为 75分钟。   试卷包括选择题、程序阅读题、程序填空题和编程题。选择题是四选一型的单项选择题;程序阅读题、程序填空题只要求直接填写结果;编程题应写出完整的程序代码,要求符合C语言的语法规范。   选择题和程序阅读题分值合计为 70分。程序填空题和编程题分值合计为 80 分。   II.知识要点与考核要求   一、C语言程序的结构   (一)知识范围   C语言程序的基本构成;头文件、函数构成以及程序中的注释; C程序的执行过程;源程序的书写格式。   (二)考核要求理解C程序的基本结构及执行过程。理解C程序中头文件、注释等概念,会在程序中正确使用文件包含命令以及添加注释。理解C函数的构成形式。了解C程序源代码的书写格式。   二、数据类型及其运算   (一)知识范围   C语言的基本数据类型(整型、浮点型、字符型)及其表示方法;常量与变量的使用;运算符的种类、运算优先级和结合性;常用表达式(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)的语法表示及其求值规则;不同类型数据间的转换与运算。   (二)考核要求掌握C语言的基本数据类型,了解不同数据类型常量的表示方法。掌握变量的定义、初始化和引用的基本方法。在编程中会根据需要合理确定常量与变量的类型并正确使用。理解各种运算符的优先级和结合性,掌握其构成表达式的语法表示和运算规则,会正确计算表达式的值,会根据需要书写正确的C表达式。了解表达式中不同类型数据间的自动转换规则,掌握强制类型转换的使用方法。   三、顺序结构程序设计   (一)知识范围   C语言中的基本语句(表达式语句、空语句、复合语句);字符数据的输入与输出;数据的格式输入与输出;顺序结构程序设计方法。   (二)考核要求了解C程序中常用的基本语句形式。掌握使用getchar()和putchar()标准库函数实现字符数据输入与输出的方法。掌握使用scanf()和printf()标准函数实现不同类型数据的格式输入与输出的方法,在编程中会根据需要正确输入数据并合理设计输出格式。掌握使用顺序结构设计简单C程序的基本方法。   四、选择结构程序设计   (一)知识范围   if语句(if单分支、if-else双分支、else-if嵌套);switch语句;选择结构的嵌套;选择结构程序设计方法。   (二)考核要求理解三种if语句的语法结构,掌握使用if语句设计选择结构程序的方法。理解switch语句的语法结构,掌握使用switch语句设计多分支选择结构程序的方法。了解嵌套选择结构语句的语法表示,会分析嵌套选择结构程序的执行过程。会正确分析选择结构程序的执行过程,会合理选用语句形式设计正确的选择结构程序。   五、循环结构程序设计   (一)知识范围   while循环语句;do-while循环语句;for循环语句;continue和break语句;循环的嵌套。   (二)考核要求理解while、do-while和for语句的语法结构,掌握使用三种循环语句设计循环结构程序的方法。理解continue和break语句的语法结构,掌握其在循环结构程序中的使用方法。了解嵌套循环结构语句的语法表示,会正确分析嵌套循环结构程序的执行过程。   六、数组   (一)知识范围   一维数组和二维数组的定义、初始化及其素的引用;字符数组的定义、初始化和素的引用,使用字符数组存储和操作字符串;字符串及其常用处理函数。   (二)考核要求掌握一维数组和字符数组的定义、初始化及其素引用的方法。熟悉二维数组的定义、初始化及其素引用的方法。理解字符串的概念,掌握使用字符数组存储和操作字符串的方法,熟悉常用字符串处理函数(puts、gets、strcmp、strlen)的使用方法。在编程中会使用数组正确处理同质数据的读写访问操作,会使用字符串处理函数操作字符串。   七、函数   (一)知识范围   函数的定义;函数的参数与返回值;函数的调用;函数的嵌套调用;函数的递归调用;局部变量和全局变量;变量的存储类别(自动、静态、寄存器、外部)。   (二)考核要求理解函数定义的语法形式,掌握一般函数的定义方法。理解函数的形式参数与实际参数、函数的返回值的概念和特点。理解函数调用的语法形式;理解函数原型的概念,掌握其声明方法。理解函数传值调用的参数传递机制和特点,会正确分析函数传值调用的执行过程,掌握使用函数的传值调用实现结构化程序设计的方法。了解函数嵌套调用的概念,会正确分析函数嵌套调用的执行过程。了解递归函数的概念,会正确分析递归函数调用的执行过程。了解变量的作用域和生存期的概念,理解局部变量和全局变量的概念,掌握其使用方法;理解自动变量、静态局部变量的特点,掌握其使用方法;了解寄存器变量的使用方法,了解用extern声明外部变量的方法,会根据程序中变量的定义位置和声明方式正确分析变量的作用域和生存期。   八、预处理命令   (一)知识范围   编译预处理的概念;宏定义命令;文件包含命令。   (二)考核要求了解编译预处理的概念、作用。理解宏定义命令的语法形式,掌握不带参数以及带参数宏定义的使用方法,会分析宏定义命令在预编译时的宏展开过程。了解文件包含命令的语法形式,在程序设计中会正确使用文件包含命令。   九、指针   (一)知识范围   指针的概念;指针的基本运算;指向变量的指针变量的定义、赋值和引用;指向一维数组的指针变量的定义、赋值和引用;指向字符串的指针变量的定义、赋值和引用,使用指针作为参数的函数调用;返回指针值的函数;指针数组和指向指针的指针。   (二)考核要求了解指针的概念,理解指针运算符(*)和取地址运算符(&)的使用特点,掌握指向变量的指针变量的定义、赋值和引用的方法,理解指针的赋值运算和算术运算的规则。掌握指向一维数组的指针变量的定义、赋值和引用的方法,会正确运用指针变量间接访问一维数组的素。掌握指向字符串的指针变量的定义、赋值和引用的方法,会正确运用指针变量间接访问字符串。理解使用指针变量、数组名作为参数的函数调用的机制和特点,掌握函数的传址调用的使用方法,会正确分析函数传址调用的执行过程,在编程中会根据需要设计合理的传址调用函数并进行正确调用。了解返回指针值的函数的概念,熟悉指针数组、指向指针的指针概念和使用方法,会使用指针数组和二级指针间接访问二维数组素。   十、结构体与共用体   (一)知识范围   结构体和共用体类型的定义;结构体和共用体变量的定义、初始化和成员引用;结构体数组的定义、初始化和素引用;指向结构体类型数据的指针;使用typedef定义类型。   (二)考核要求了解和区分结构体和共用体的概念,掌握结构体类型的定义方法,以及结构体变量的定义、初始化和成员引用的方法。掌握结构体数组的定义、初始化和引用数组素及其成员的方法,会正确运用结构体数组处理异质数据的存储和访问操作。掌握指向结构体类型数据的指针变量的定义、初始化和引用方法,会正确运用指向结构体数据的指针变量间接访问结构体数据及成员,熟悉结构体指针作为参数的函数调用方法。了解共用体类型的定义方法,以及共用体变量的定义、初始化和成员引用的方法。会正确使用typedef语句定义新的类型名。   十一、位运算   (一)知识范围   位运算符(&、|、^、~、<<、>>)及其运算。   (二)考核要求理解各种位运算符的含义,掌握各种位运算的运算规则和特点。会正确分析简单的位运算程序,会正确使用位运算实现清零、置1、保留、移位等功能。   Ⅲ. 模拟试卷及参考答案   河北省普通高校专科接本科教育考试   C语言程序设计模拟试卷   (考试时间:75分钟)   (总分:150分)   说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。   一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)   1. 以下选项中合法的用户标识符是( )   A. No-1、abc、sf_02 B. _int、 2xy、count   C. pc、_4866pc、vf_2 D. ++c、hj6_d、name   2. 以下选项中正确的C语言常量是( )   A. 2.46E-1.5 B. 0382 C. ‘123’ D. ‘\0’   3. 设x为int类型,其值为11,则表达式(x++*1/3)的值是( )   A. 3 B. 4 C. 11 D. 12   4. 以下说法中正确的是( )   A.C语言程序总是从第一个定义的函数开始执行   B.C语言程序中,要调用的函数必须在main( )函数中定义   C.C语言程序总是从main( )函数开始执行   D.C语言程序中的main( )函数必须放在程序的开始部分   5. 正确表示条件100≤x≤300的C表达式是( )   A. 100<=x<=300 B. x>=100,x<=300   C. x>=100&x<=300 D. x>=100&&x<=300   6. 下列程序段的运行结果是( )   int x=10,y=20,z=30;   if(x>y) z=x; x=y; y=z;   printf(“%d,%d,%d\n”,x,y,z);   A. 10,20,30 B. 20,30,10 C. 20,30,30 D. 20,30,20   7. C语言中while和do-while循环的主要区别是( )   A. do-while的循环体至少无条件执行一次   B. while的循环控制条件比do-while的循环控制条件严格   C. do-while允许从外部转到循环体内   D. do-while的循环体不能是复合语句   8. 设有以下程序段:   int k=0;   while(k=1) k–;   则以下叙述中正确的是( )   A. while循环执行一次 B. 该循环是无限循环   C. 循环体语句一次也不执行 D. 该循环有语法错误   9. 以下选项中不能正确赋值的是( )   A. char *s; s=”student”; B. char *s=”student”;   C. char s[]=”student”; D.char s[10]; s=”student”;   10. 下列各定义数组的语句中不正确的是( )   A. int a[1][3]; B. int x[2][2]={1,2,3,4};   C. int x[2][ ]={1,2,4,6}; D. int m[ ][3]={1,2,3,4,5};   11. 若有int a[10], *p=a;,且a数组已赋值,则与a[4]不等价的表达式为( )   A. p+4 B. *(p+4) C. *(a+4) D. p[4]   12. 下列关于函数之间数据传递的叙述正确的是( )   A. 当函数实参是指针类型时,被称为传值调用   B. 利用函数的返回值传递数据时只能传递一个数据   C. 参数的传址调用是一种双向数据传递方式   D. 参数的传值调用方式中,形参与实参具有相同的存储空间   13. 已定义以下函数的功能是( )   void fun(char *p2, char *p1)   { while((*p2=*p1)!= ‘\0′){ p1++;p2++; } }   A. 将p1所指字符串复制到p2所指内存空间   B. 将p1所指字符串的地址赋给指针p2   C. 对p1和p2两个指针所指字符串进行比较   D. 检查p1和p2两个指针所指字符串中是否有’\0’   14. 以下程序段中,变量c的二进制值是( )   char a=2,b=4,c;   c=a+b<<2;   A. 00000011 B. 00010100   C. 00011100 D. 00011000   15. 表达式strlen(“\x69\082\n”)的值是( )   A. 1 B. 2 C. 3 D. 4   16.C语言中局部变量的缺省存储类别是( )   A. static   B. auto C. register   D. extern   17.以下程序的运行结果是( )   #include<stdio.h>   #define M(x,y) x-y   void main()   { int a=4,b=3,c=5;   printf(“%d”,a*M(b,c));   }   A.8 B. 7 C. 编译错误   D. -8   18.以下程序段运行后的结果是( )   int x=1,y=2,z=3;   y+=x+=z;   printf(“%d”,x<y?x++:y++);   A. 6 B. 5 C. 4 D. 3   19. 若有以下说明和语句,对c数组素的正确引用是( )   int c[4][5], *cp[4];   for(int j=0;j<4;j++) cp[j]=c[j];   A. cp+1 B. *(cp+3) C. *(cp+1)+3 D. cp[2][3]   20.有以下说明语句:   struct   {   int a;   double b;   }stu;   则下面叙述中不正确的是( )   A.struct是定义结构体类型的关键字   B.struct stu是用户定义的结构体类型   C.stu是用户定义的结构体变量   D.a和b都是结构体成员名   二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。)   1.   #include<stdio.h>   double f(double x,double y)   { if(x>=y)   return (x+y)/2.0;   else   return f(f(x+2,y-1),f(x+1,y-2));   }   void main()   {   printf(“%.1f”,f(5.0, 7.0));   }   2.   #include<stdio.h>   void main()   { int i,j,x=0;   for(i=0;i<2;i++)   { x++;   for(j=0;j<=3;j++)   { if(j%2) continue;   x++;   }   x++;   }   printf(“x=%d”,x);   }   3.   #include <stdio.h>   int sum(int *p, int n)   { int s=0,j;   for(j=0;j<n;j++)   s+=p[j];   return s;   }   void main()   { int a[10]={1,2,3,4,5,6,7,8,9,10},t;   t=sum(a+2, 5);   printf(“%d”,t);   }   4.   #include<stdio.h>   void swap(int *,int);   void main( )   { int a=3,b=5;   swap(&a,b);   printf(“a=%d,b=%d”,a,b);   }   void swap(int *x,int y)   { int temp ;   temp=*x ; *x=y ; y=temp ;   }   5.   #include<stdio.h>   int adds(int x,int y);   void main()   { int a=5,b=-1,c;   c=adds(a,b);   printf(“%d,”,c);   c=adds(a,b); printf(“%d\n”,c);   }   int adds(int x,int y)   { static int m=0,n=3;   n*=++m;   m=n%x+y++;   return(m);   }   三、程序填空题(本大题共3小题,每空5分,共35分。请将答案填写在答题纸的相应位置上。)   1. 程序功能:输出100以内的个位数为6、且能被3整除的所有正数。   #include <stdio.h>   void main()   { int i,j;   for(i=0;;i++);   if() continue;   printf(“%d\t”,j);   }   }   2. 程序功能:实现数组素的逆序存放并输出结果。   #include<stdio.h>   void inverse(int * , int );   void main()   { int a[10],i;   for(i=0;i<10;i++)   scanf(“%d”,&a[i]);   inverse();   for(i=0;i<10;i++)   printf(“%d\t”,a[i]);   printf(“\n”);   }   void inverse(int *p , int n)   { int *q ,t;   for( )   { t=*p ; *p=*q ; *q=t; }   }   3.程序功能:找出学生成绩的最高者,并输出其各项信息。   #include<stdio.h>   void main()   { struct student   { int id;   char name[20];   float score;   };   struct student stu[4],*p;   int i,temp=0;   for (p=stu;p<stu+4;p++)   scanf(“%d %s %f”,);   for (i=1;i<4;i++)   if( )   temp=i;   p=;   printf(“\nThe max-num score :\n”);   printf(“Id:%d\nName:%s\nScore:%4.1f\n”,p->id,p->name,p->score);   }   四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)   1.编写程序,使用循环结构语句打印输出如下图形。   2. 编写程序,将从键盘输入的10个整数按升序排列输出。   3. 编写函数void del(char *s,char c),其功能是在s所指字符串中删除与变量c相同的字符,并设计主函数实现:   (1)从键盘输入字符串和指定被删除的字符;   (2)调用del()函数实现删除操作;   (3)输出删除后的字符串。   说明:不允许使用除gets()和puts()之外的任何字符串处理库函数。   C语言程序设计参考答案   一、单项选择题(本大题共20小题,每小题2分,共40分。选对得2分,选错、未选或多选得0分)题号答案CDACDCABDCABADABBCDB   二、程序阅读题(本大题共5小题,每小题6分,共30分。分析结果对得6分,未答或答错得0分)   1. 6.0 2. x=8 3. 25 4. a=5,b=5 5. 2,3   三、程序填空题(本大题共7空,每空5分,共35分。填对得5分,未填或填错得0分)   1. i<=10 、 j%3!=0 或 j%3   2. a,10 、 q=p+n-1;p<q;p++,q–   3. &p->id,p->name,&p->score 、 stu[i].score>stu[temp].score   stu+temp 或 &stu[temp]   四、编程题(本大题共3小题,每小题15分,共45分。编码必须符合C语法规范)   答案不唯一,以下代码仅供参考。   1. #include<stdio.h> ———————————— 1分   void main() —————————————- 1分   {   int i,j,k; —————————————- 1分   for(i=0;i<=9;i++) —————————- 2分   { —————————- 2分   for(j=1;j<=4-i;j++) ———————— 3分   putchar(‘ ‘);   for(k=1;k<=2*i-1;k++) ————————- 3分   putchar(‘*’);   putchar(‘\n’); ————————– 2分   }   }   2. #include<stdio.h> ———————————— 1分   void main() ———————————— 1分   {   int a[10],i,j,t; ——————————– 1分   printf(“请输入10个整数\n”);   for(i=0;i<10;i++) —————————- 2分   scanf(“%d”,&a[i]);   for(i=0;i<9;i++) —————————- 2分   for(j=0;j<9-i;j++) ———————— 2分   if(a[j]>a[j+1]) ———————— 1分   { ———————— 3分   t=a[j];   a[j]=a[j+1];   a[j+1]=t;   }   printf(“排序结果:\n”);   for(i=0;i<10;i++) ———————— 2分   printf(“%d\t”,a[i]);   }   3. #include<stdio.h> ——————————– 1分   void del(char*,char); ——————————– 1分   void main()   {   char str[100],ch; ——————————– 1分   printf(“请输入字符串:\n”);   gets(str); ——————————– 1分   printf(“请输入要删除的字符:\n”);   scanf(“%c”,&ch); ——————————– 1分   del(str,ch); ——————————– 2分   printf(“\n删除后的字符串:\n”);   puts(str); ——————————– 1分   }   void del(char *s,char c) —————————- 1分   {   char *p=s; ——————————– 1分   while(*s) ——————————– 1分   {   if(*s!=c) ——————————– 2分   *p++=*s;   s++; ——————————– 1分   }   *p=’\0′; ——————————– 1分   }   第二部分:微机原理与接口(含汇编语言)   Ⅰ.课程简介   一、内容概述与要求   《微机原理与接口(含汇编语言)》考试是为招收计算机类专业专科接本科学生而实施的入学考试。   参加本课程考试的考生从理论和实践上应掌握《微机原理与接口》中微型计算机的基本组成及工作原理、汇编语言程序设计及常用接口技术,建立微机系统整体概念。重点掌握8086 微处理器基本结构及工作原理,存储器的构成及扩展技术,汇编语言程序设计(包括寻址方式、指令系统及程序设计方法),输入输出方式、中断系统及常用接口技术,使学生具备微机应用系统软、硬件开发的初步能力。   本课程考试从两个层次上对考生进行测试,较高层次的要求为“理解”和“掌握”,较低层次的要求为“了解”和“会”。这里“理解”和“了解”是对概念与理论提出的要求。“掌握”和“会”是对方法、运算能力及应用能力提出的要求。   二、考试形式与试卷结构   考试采用闭卷、笔试形式,全卷满分为 150 分,考试时间为 75分钟。   试卷包括选择题、填空题(或判断题)、简答题和应用题。选择题是四选一型的单项选择题;填空题(判断题)只要求直接填写结果;简答题需要用文字说明知识要点;应用题应写出问题的分析思路及解题步骤。选择题和填空题分值合计为 75 分。其余类型题目分值合计为 75 分。   Ⅱ.知识要点与考核要求   一、微型计算机基础   (一)知识范围   微型计算机的基本组成及各部分的功能与作用;微型机的基本工作过程;计算机中的编码、数制及其转换;无符号二进制数的算术运算和逻辑运算;运算中的溢出;机器数的表示及运算;基本逻辑门及常用逻辑部件。   (二)考核要求理解微处理器、微型计算机和微型计算机系统的概念及其相互关系。理解微机系统各部件的功能分工及计算机的工作过程。掌握计算机中各种信息的表示及运算。熟悉基本逻辑门及常用逻辑部件的使用。   二、80X86微处理器   (一)知识范围   8086/8088CPU的内部结构和外部引线; 8086/8088CPU的工作方式;8086/8088CPU系统总线的形成;8086/8088的存储器结构;总线操作及时序。   (二)考核要求掌握8086/8088CPU的功能构成及流水线技术,理解流水线管理规则。掌握 8086/8088CPU寄存器的组成及其应用。理解8086/8088CPU的内存分配,掌握实地址模式下的存储器地址变换方法。掌握8086/8088CPU的引脚构成,理解其引脚复用的特性。   三、指令系统与汇编语言程序设计   (一)知识范围   指令系统的概念、指令格式;对操作数的寻址方式;常用指令(传送指令、算术运算指令、逻辑运算和移位指令、串操作指令、程序控制指令与处理器控制指令);汇编语言程序的基本结构;常用伪指令(数据定义、符号定义、段定义、设定段寄存器);DOS功能调用(输入/输出字符、输入/输出字符串、结束程序);三种结构(顺序结构、分支结构和循环结构)程序设计;常用程序设计举例。   (二)考核要求理解指令系统的概念及指令格式。掌握常用的寻址方式并能熟练地使用它们。掌握常用指令的格式、功能和使用方法,分析各种指令执行后的结果。掌握指令对状态标志的影响。掌握常用伪指令的格式和功能。掌握汇编语言源程序的构成,熟练掌握汇编语言程序上机调试运行过程。理解程序的三种基本结构,能够使用汇编语言解决常见的问题。   四、存储器系统   (一)知识范围   存储器体系相关概念;半导体存储器的分类及其特点;常见半导体存储芯片的外部特性及其与系统的连接;存储器接口设计(存储器扩展技术);高速缓存。   (二)考核要求理解存储器三级存储体系的构成:外存、内存、高速缓冲存储器的概念。掌握存储器的性能指标,半导体存储器的分类。理解静态与动态存储器的构成及其特点。掌握典型的存储芯片(SRAM 6264、DRAM 2164A)的引脚构成。了解高速缓冲存储器。   五、输入输出及中断技术   (一)知识范围   输入/输出概述;I/O接口的基本构成与功能;端口概念及端口编址方式;三态门接口与锁存器接口的构成;基本输入/输出方式(无条件传送方式、查询方式、中断方式与直接存储器存取方式);中断技术,包括:中断的概念、中断的全过程、8086/8088中断系统;中断控制器8259基本结构及工作原理。   (二)考核要求了解外设为什么不能直接与总线连接,接口起什么作用,了解接口完成的功能。掌握接口内部基本组成;掌握端口的概念,明确端口与接口的关系;掌握端口的2种编址方式及各自特点。掌握常用的输入/输出方法,理解其各自特点及应用场合。要求深入理解条件传送方式和中断传送方式的区别。要求深入理解中断的概念,掌握中断全过程包含的步骤,掌握8086CPU响应中断的条件及响应过程,理解中断服务程序的一般构成。了解8086系统中断源的分类,掌握8086CPU对它们的管理方法。了解中断控制器8259A的基本结构与工作原理。   六、常用接口技术   (一)知识范围   并行通信与串行通信;可编程并行通信接口芯片8255A的结构、控制字及工作方式;可编程计数/定时器8253的结构、初始化编程和工作方式。   (二)考核要求了解微机并行通信的基本概念,了解在并行通信过程中“联络”信号及其作用,理解并行通信(并行输入和输出)的实现过程。掌握并行接口8255A的内部结构与引脚结构,了解8255A的功能特性。掌握8255A的方式控制字和C口的按位置位/复位控制的格式及使用。重点掌握8255A的工作方式0和方式1,掌握8255A与系统总线及外设的连接方法。了解计数/定时的具体应用,理解计数/定时的实现原理。掌握定时/计数器8253的内部结构与引脚结构,掌握其工作原理。   Ⅲ.模拟试卷及参考答案   河北省普通高校专科接本科教育考试   微机原理与接口(含汇编语言)模拟试卷   (考试时间:75分钟)   (总分:150分)   说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。   一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)   1.MOV BX,[1000H] 源操作数的寻址方式是________。   A. 立即寻址  B. 直接寻址   C. 变址寻址  D. 基址寻址   2. CPU与I/O设备间传送的信息有________。   A.数据信息 B.控制信息 C.状态信息 D.以上三种都是   3. 汇编语言指令中唯一不可缺少的是________。   A.标号    B.操作码   C.操作数   D.注释   4. 8086 CPU可访问的最大I/O空间是 ____________。   A.4MB B. 1MB C. 640KB D. 64KB   5. 8086最小工作方式和最大工作方式的主要差别是____________。   A. 内存容量不同 B. I/O端口数不同   C. 数据总线位数不同 D. 单处理器和多处理器的不同   6. 响应NMI请求的必要条件是____________。   A. IF=1 B. IF=O   C. 一条指令结束 D. 无INTR请求   7. 指令队列的作用是____________。   A. 暂存操作数地址 B. 暂存操作数 C. 暂存指令地址 D. 暂存预取指令   8. 中断向量表____________。   A. 用于存放中断类型号 B. 用于存放中断服务程序入口地址   C. 是中断服务程序的入口 D. 是中断服务程序的返回地址   9. 3片8259级联可提供____________个中断类型号。   A.22 B.24 C.16 D.18   10.将变量MEM的有效地址送入SI的正确指令是_________。   A. MOV [SI],MEM B. MOV SI,MEM   C. LEA SI,MEM D. MOV SI,[MEM]   11.8255A工作在方式0时,端口A、B和C的输入输出可以有_______种组合。   A.4 B.8 C.16 D.6   12.下列哪条指令不能实现对累加器AX清零_______ 。   A.SUB AX,AX B.MOV AX,0000H   C.AND AX,0000H D.TEST AX,0000H   13.8253定时器工作于方式______能产生连续方波输出。   A. O B. 1 C. 2 D. 3   14.下面的数据传送指令中,错误的操作是___________。   A. MOV SS:[BX+SI],2345H B. MOV AX,10H   C. MOV WORD PTR[SI],2300H D. MOV DS,2000H   15.指令MOV DX,DS: [BP+MASK],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么源操作数的物理地址为_______________。   A. 17500H B. 16500H   C. 14500H   D. 13500H   二、填空题(本大题共10小题,每空2分,共30分。请将答案填写在答题纸的相应位置上。)   1.I/O端口编址方式包括2种,分别是_________________和统一编址。   2.取指令时,段地址由_______ 寄存器提供,偏移地址由 ________寄存器提供。   3.一片2K*4的RAM有 _______条地址线和______条数据线。   4.CPU的标志寄存器中标志位,可以分为两大类,其中一类称为________标志位,另一类称为________标志位。   5.假设执行前AX=7862H,指令XOR AX,AX执行后AX中的值是______________。   6.8086的中断源分2类,分别是______________和内部中断。   7. 堆栈是按照_____________原则组织的一片连续的存储区域,其中堆栈栈顶由寄存器______指示。   8. 一个完整的中断处理过程基本包括:中断请求、中断判优、______________、______________和中断返回。   9.8255A的端口C的置位/复位控制字应写入 ______________ 端口。   10. 8253某计数器的最大计数初值是______________。   三、简答题(本大题共3小题,每小题10分,共30分。请在答题纸的相应位置上作答。)   1. 什么是中断响应?外设向CPU申请中断,但CPU不给予响应,其原因有哪些?   2. 说明8253各个计数通道中三个引脚信号CLK,OUT和GATE的功能。   3. CPU内部由哪两部分功能部件构成?简述各自功能及其配合关系。   四、应用题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)   1.内存MEM单开始存放着10个带符号字节数据,编写完整程序求其中正数、零和负数的个数,并分别将它们存于PLUS、ZERO和NEGO 3个单。   2.现有8个发光二极管(输入高电平点亮,低电平熄灭),使用并行口8255A控制它们依次循环点亮(每个发光二极管点亮的时间没有具体要求),设计电路并编写程序(无需写出完整的汇编语言源程序),设8255A的端口地址为280H-283H。   3.某CPU有8条数据线,16条地址线,采用8K*4的RAM 芯片构成64KB存储器,需要芯片几片?说明扩展方法并画出CPU与各芯片的连接方框图。   微机原理与接口(含汇编语言)参考答案   一、单项选择题(每题3分,共45分)题号答案BDBDDCDBACCDDDC   二、填空题(每空2分,共30分)   1.独立编址   2.CS IP   3.11 4   4.状态控制   5.0000H   6.外部中断   7.后进先出(或先进后出) SP   8.中断响应中断服务   9.控制   10.0000H   三、简答题(共30分,每小题10分)   1.中断响应是当CPU接收到中断请求时,暂停当前程序的运行,保存断点地址,找到中断服务程序的入口地址,准备执行中断服务程序。 ———- (4分)   (1)CPU处于关中断状态,IF=O;   (2)该中断请求已被屏蔽;   ————(6分)   (3)该中断请求的时间太短,未能保持到指令周期结束;   (4)CPU已释放总线(即已响应了DMA请求),而未收回总线控制权。   2.每个通道都有三根引脚线与外界联系。CLK为外部输入计数脉冲。(2分)   引脚GATE为控制计数器工作的门控输入信号,根据工作方式的不同分为高电平触发计数和正脉冲触发计数(4分)。   引脚OUT为定时时间到/计数结束输出信号,在不同的工作方式下,可以输出不同形式的波型(4分)。   3.由EU和BIU组成。————-(2分)   EU是执行部件,主要的功能是执行指令。BIU是总线接口部件,与片外存储器及I/O接口电路传输数据。————-(4分)   EU经过BIU进行片外数据的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需访问外部时,即不需要BIU提供服务时,BIU可进行填充指令队列的操作。—-(4分)   四、应用题(共45分,每小题15分)   1.评分标准:写出汇编语言程序框架3分,程序主体12分   DATA SEGMENT   BUFFER DB 20H,34H,….89H ;定义10个带符号数(2分)   PLUS DB 0   ZERO DB 0   NEGO DB 0   DATA ENDS   CODE SEGMENT   ASSUME CS:CODE,DS:DATA   START:MOV AX,DATA   MOV DS,AX   LEA BX,BUFFER   MOV CX,10 ;循环初始化 (2分)   LP: MOV AL,[BX]   CMP AL,0 ;取数并判断 2分   JZ ZERO ;是0   TEST AL,80H ; 2分   JZ PLUS ;是正数   INC NEGO ; 2分   JMP NEXT   ZERO:INC ZERO   JMP NEXT   PLUS: INC PLUS   NEXT: INC BX   DEC CX ;循环修改与控制(2分)   JNZ LP   MOV AH,4CH   INT 21H   CODE ENDS   END START   2.分析:根据题意要求,可选择并行口8255A的任意一个并行口(A口、B口或C口),并将其初始化为方式0输出,采用无条件方式实现对8个发光二极管的循环点亮。(3分)   以8255A的A口连接发光二极管,给出连接电路和程序(若使用B口或C口则答案做相应变化即可)。电路连接图(2分)   PORTA EQU 280H   PORTCON EQU 283H   MOV AL,80H   MOV DX,PORTCON   OUT DX,AL ;初始化8255A的A口为方式0,输出(2分)   MOV AL,B ;先使PA7控制的发光二极管点亮(2分)   MOV DX,PORTA   NEXT: OUT DX,AL   CALL DELAY ;延时,用来控制发光二极管的点亮时间(2分)   ROR AL,1 ;使下个灯点亮(2分)   JMP NEXT   DELAY:MOV CX,5000H ;延时,CX初值不限制(2分)   NEXT1:LOOP NEXT1   RET   3. 分析:64K*8/8K*4=16片(2分)   存储器扩展时,首先2片位扩展形成8K*8的存储器(位扩展的2个芯片片选信号CE#连在一起),后8组字扩展构成64K*8的存储器。(3分)   连接方法:CPU低13位地址线连接芯片的13位地址线,CPU高3位地址线用作全译码,译码的8个输出控制8组的选通,位扩展的2片片选信号(CE)连在一起,其4条数据线分别与CPU的低4和高4数据线连接。具体连接如图所示。
指针数组与数组指针详解_指针数组与数组指针详解
指针数组与数组指针详解_指针数组与数组指针详解

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/34250.html

(0)
上一篇 2024年 9月 10日 下午2:08
下一篇 2024年 9月 10日

相关推荐

关注微信