数学专业“微机原理”课程教学探讨

时间:2022-10-24 09:39:56

数学专业“微机原理”课程教学探讨

文章编号:1672-5913(2008)06-0069-03

摘要:本文根据笔者的亲身体验,结合实际具体分析了给数学系学生讲授微机原理课程的指导思想、技术特点、知识结构以及所遇到的问题和解决方法,系统阐述了学习该课程的重要意义。

关键词:微机原理;教学大纲;实验;成绩

中图分类号:G642

文献标识码:B

1引言

2006年春,我校数学科学学院领导面对本科生就业形式的严峻局面,系统分析了本科生就业之愈演愈烈的市场化趋势,同时响应学生对学习计算机知识的强烈要求,决定开设“微机原理”选修课,计划安排54学时,笔者担任主讲教师。

一般认为,“微机原理”的前导课程是:“电路分析”、“模拟电子技术”和“数字电子技术”。而数学专业的学生完全没有接受过这些课程的训练,为此,笔者经过寒假期间一个月的精心策划,拟订了一套教学大纲。但要在54个学时完成教学任务,尤其是针对这些没有经过专业电子技术训练的授课对象,必须要有严格的教学计划和周到的实验准备。限于经费和实验场地,笔者申请购买了两套清华大学科教仪器厂生产的TPC2003A实验设备,一套用于课堂演示实验,一套用于兴趣小组课后实验练习。

18周教学(每周3学时)完成过后,选修该课程的近40名学生的考试通过率超过了85%,教师得到的由学生参与的教学质量评估分数达到86.9分,获得绝大多数学生的认可。更可喜的是,董建强同学的毕业设计“北京市花园桥路通灯设计”运用计算机工作原理和接口技术,结合线性优化理论,成功编写了汇编语言程序,并在TPC2003A演示实现,在众多毕业生中脱颖而出,经专家评审,被评为校级优秀毕业设计。

2教学指导思想的确立

目前还没有专门为数学专业编写的“微机原理”教材,当然也无此必要。教学的关键取决于授课教师的理论素养、知识结构、教学指导思想和课堂授课经验。笔者曾长期担任数学专业的“C语言程序设计”和“数据结构”的教学工作,深感学生计算机基本知识的匮乏。譬如对变量的理解长期局限于逻辑符号,对存储空间没有意识,难以建立牢固的指针概念,“数据结构”所确立的数据存储模式不能形成物理概念,缺乏基本的计算机思维;同时,对文件的访问技术也无法深入到物理层面,至于键盘访问等接口技术更是难以贯彻。致使授课教师不得不花费大量时间为学生建立计算机的物理操作观念,势必延误正常教学工作的顺利进行。因而导致“C语言程序设计”课程由原来的54学时扩展为72学时,但依然未能从根本上解决问题。

鉴于以上原因,笔者将“微机原理”课程教学的基本指导思想定位为:以培养数学专业学生的计算机修养为主旨,把握计算机各个逻辑模块的总线结构,建立数据存储的物理观念,了解数据运算的物理流程,确立CPU和存储器的核心地位,解决基本的数据输入输出问题。

长期以来,从事“微机原理”教学工作的教师有意无意地坚守着这样一个观念:学习“微机原理”课程的目的是让学生掌握计算机的硬件组织原理,为将来从事计算机硬件的设计工作打下坚实的基础。从教材编写到课堂教学以及实验操作过程,这个观念牢牢地占据着统治地位。不光是教师讲课辛苦,就是学生也不堪重负。在这个观念的主导下,很多信息工程类的非硬件专业开始压缩甚至砍掉这门重要的计算机基础课程,偏向于软件编程。如前所述,在传统的教学观念里,一个专业要开设这门课程,就要另外开设三门以上的前导课程,不但占用大量的教学资源,而且短时期似乎看不到什么效果。致使许多专业陷入非常难堪的境地,而“微机原理”则变成了专业教学课程中的鸡肋。

导致以上尴尬局面的根本原因,就是忽略了“微机原理”在培养学生计算机修养上的重要作用。程序设计尤其是基于面向对象的现代程序设计技术要求学生必须深入理解计算机的物理工作流程,在进程管理、输入输出管理、文件管理以及CPU的使用技术上,如果没有底层知识,是无法基于现有的操作系统编写出健壮、高效的应用程序。

3授课大纲的拟订与教学实践

教学大纲是在明确的教学指导思想的基础上完成的。首先,建立总线结构思想。这是从通信角度把握计算机各个逻辑模块统一协调工作的整体操作思路。总线结构确定计算机的基本组成原则,建立各种总线类型的分工,使计算机的各个模块形成一个有机整体。总线结构必然存在竞争冒险,为了规避信号冲突,必须考虑优先级问题。通过总线结构的深入讲解,使学生对计算机产生整体概念,突显系统分析思维,避免在后续课程中陷入先入为主,无法建立计算机系统思维的混乱局面。但总线结构的教学重点放在总线分类和相互关系上,旨在把握计算机整体结构,认识到CPU、存储器、I/O接口等在通信关系上的统一性和操作上的一致性。对总线控制的CPU控制和DMA控制只做技术性介绍。使学生理解CPU为什么要放弃对总线的控制权以及DMA控制器存在的意义。当然,课程一开始就讲解总线结构会使许多同行难以接受,因为大多数教材将这一部分内容放在整个课程的后三分之一。然而,从培养学生的计算机修养、建立计算机思维的角度考虑,放到第一部分讲解是符合知识的建立过程的,那就是先规划整体,再分块创建,形成一棵完整的关于计算机结构的知识树,总线结构正是这棵树的根。

其次,笔者在教学过程中着重确立了CPU和存储器的核心地位。深入讲解CPU与存储器是一个不可分割的整体,是一切算法实现的核心。重点放在CPU和存储器的相互关系的讲解上,决不过多地纠缠时序过程。在物理实体上形成一个较高的抽象,使CPU和存储器的讲解保持在同一个授课层面上,而不是象传统教材中将两者远远分离,比如某著名教材《微型计算机技术及应用》将处理器放在第2章,而存储器放在第12章,这也是传统的授课方案,强调“按部就班”。然而笔者在具体教学过程中注重于CPU和存储器的逻辑结构。对于前者,是以ALU为中心的寄存器的集合,实现一个基本算法单元;对于后者,深入讲解物理地址和逻辑地址的关系,充分建立寻址空间的概念。笔者始终以1MB的存储空间为例,务必使学生明白CPU的基本寻址方案,让学生理解一个复杂的算法的实现不单是依靠CPU自身,而是与数据的存储策略密切相关的。这样,不但为“C语言程序设计”课程的指针变量的建立埋下伏笔,也为“数据结构”课程的深入理解奠定思想基础。

再次,将系统指令和汇编语言紧密结合,既强调助记符观念又综合语言体系。尤其是在建立变量概念的时候,紧密结合存储单元,体现数据的物理性的一面。学生对变量理解的深度将直接影响到对后续课程的学习,特别是“C语言程序设计”。如果学生的理解仅限于逻辑符号层次上,或者对数据的认识没有物理概念,就无法灵活使用变量,在算法实现上往往陷入绝境,必然阻碍计算机素养的提高。因此,笔者结合汇编语言实例,既深入探讨变量的地址寻址本质,又强调变量的空间属性,使学生意识到,在计算机内部,变量只是CPU获得数据的一种方法,程序通过对变量的引用而实现数据的运算,与数学上的变量概念有着本质的区别。程序中的变量既封装了地址,又封装了操作类型。关于数据类型,在系统指令的讲解中就已经深入贯彻,使学生明白,数据类型的规划实际上是数据存储和CPU运算的特点决定的,必须在程序设计中严格划分,否则CPU将混淆指令,在数据获取上也会出现错误。这里要着重区分二进制数值与ASCII码字符的差异。根据以往的授课经验,多数学生不能正确认识ASCII的作用。笔者曾在为数学专业研究生补习C语言知识的时候,问及ASCII中英文Interchange的交换双方各是谁?是谁与谁的交换?竟无人知晓,学生的计算机修养之低下可见一斑。显然,对数据类型概念的这种原理性解释,对学生掌握各种高级语言有着指导性的意义。不过,笔者并没有花太多时间讲解汇编语言的程序设计,而是通过例题和演示实验加强学生对程序概念的理解。因此,笔者在大纲中并不要求学生掌握汇编语言的程序设计,只要求能读懂一般难度的汇编程序,初步建立结构化程序思想。这在系统指令中也有所体现,过于复杂的运算指令以及不常用的条件控制指令等完全摈弃不讲。在一般教材中所介绍的指令集合,只选择其中一个不大的子集,倘若在汇编程序中涉及到了没有学习过的指令,就临时介绍。总之,讲授过程紧紧围绕“培养学生计算机素养”这个主题,并不要求学生会编写复杂的汇编语言程序,不过多纠缠指令是本大纲的一个基本特点。

最后,是输入、输出接口芯片和中断技术的运用。接口在计算机中之所以存在的一个基本理由,就是外部设备如何实现对计算机主机(CPU和存储器)的数据输入和输出。归根结底,一切被处理的数据都来源于外设,也最终归口于外设。限于学时,笔者仅讲解了三个基本芯片:并行接口8255A,串行通信接口8251A,以及定时器8253。对于8255A芯片,重点介绍了方式0和方式1两种工作模式;对于8251A,也只着重介绍了异步通信模式;而对于8253,只强调了中断触发脉冲的作用和典型波形的生成功能。对中断控制器仅做简单介绍,旨在阐明中断的优先级处理过程,重点放在理解中断操作在计算机输入、输出的重要意义。具体讲解的过程,完全依赖实例和演示实验,更多地阐述各芯片寄存器的作用及CPU对芯片和寄存器的寻址方法,并对比与存储器寻址的不同之处。通过介绍输入、输出指令完成芯片功能的初始化,让学生理解芯片工作的“可编程性”。同时,也让学生认识到计算机的输入、输出相对于算法而言是一个完全独立的部分。另外再介绍芯片地址在操作系统中被名称化,通过专有名称寻址外设是基于操作系统程序编写的一般性原则,并结合C语言的键盘和显示器访问来说明接口在高级语言体系中的运用过程。

4实验问题

“微机原理”是一门实验性极强的课程,在数学专业,不可能建立专有的实验机房,而且也不能过高估计学生的动手能力。但学生在“大学物理”课程中已经有了一定的实践经验,多数学生在中学做过电路的实验,可以较顺利理解电平概念。由于学时的限制,笔者普遍采用了演示实验或利用FLASH技术将实验过程投影到屏幕,对学生理解数据的物理存在和CPU对数据的寻址及简单运算过程具有很大的帮助作用。集体实验的参与过程非常少,只是在汇编语言的讲解过程中采用,利用宏汇编系统环境和Debug技术加深学生使用存储器的能力,巩固对变量的各项属性的理解。

除了以演示实验为主之外,在学生中组织兴趣小组,教师利用业余时间指导那些对计算机有强烈爱好的学生做接口实验。结果发现,这部分学生迅速成为了“微机原理”课程学习的骨干力量,并带动了整个班级的学习积极性,个别同学表现出了超强的实验动手能力,较高水平地完成了各个实验项目,董建强同学就是其中较为突出的一个。他在后来的毕业设计中对北京市花园桥路口的交通流量建立了合理的数学模型,结合并行接口知识,成功编写了汇编语言源程序,并取得了优异的成绩。兴趣小组的另外一位同学李冬松,毕业后顺利进入了某著名电话公司的北京研究所,从事英汉电子词典的底层编程工作,据他后来说,“微机原理”的硬件知识是他战胜众多竞争对手的法宝。由于没有有效的课时分配,他们都是利用暑假完成了全部实验内容。

5成绩考核

成绩考核是整个教学过程中重要的一环。虽然注重平时成绩,但期末考试成绩依然占了相当大的比重。考试内容完全贯彻教学指导思想,集中考察学生对数据存在的物理概念及其CPU寻址的理解程度,强调变量的类型定义及引用,包括一些基础算法的结构化理念,输入、输出的基本过程和中断概念。从试题类型而言,选择题、判断题和程序填空占了70%,简答题和接口设计占30%。既强调概念理解又涉及实际应用,但放弃了时序、硬件组织、外部设备等内容的考核,围绕大纲和教学内容,注重计算机的逻辑思维,而不是细微的电平化的数据传输过程。物理组成为逻辑服务,不陷入到物理细节,而注重逻辑的物理化是笔者的基本教学思路,也是成绩考核的基本方针。

参考文献

[1] 钱晓捷. 汇编语言程序设计(第二版)[M]. 北京:电子工业出版社,2003.

[2] 沈美明. IBM-PC汇编语言程序设计(第2版)[M]. 北京:清华大学出版社,2001.

[3] 戴梅萼,史嘉权. 微型计算机及应用[M]. 北京:清华大学出版社,2001.

上一篇:谈“数据结构”实验教学环节 下一篇:“数据库系统”双语教学的探索