林 新
(北京航空航天大学 自动化科学与电气工程学院,北京100191)
“微机原理”及是自动化专业本科课程体系中重要的核心基础课,对于学生学习“计算机控制”、“嵌入式系统”等后继课程起着承上启下的作用。通过此课程学习,学生能够掌握计算机的基本概念和运行机制,理解信息输入、指令执行、数据处理、以及控制信号输出的整个过程。目前对于教学选用的微机系统架构,国内各个高校有不同的选择,如8051单片机,8086CPU,或者ARM系列CPU等等[1~3]。其中8086CPU虽然出现较早,但是其构成的微型计算机体系架构具有简洁清晰、基础概念和知识点丰富实用的特点,学生在学习8086微机系统架构的基础上,能够举一反三,相对较容易理解其它单片机系统或现代CPU构成的计算机系统。因此本文以8086CPU存储器组织及其运行机制为主线研究和讨论教学方法。课程的知识点多而繁杂,应用性强,学生难以建立整体性、系统性的概念,因此教学有一定的难度。比如CPU结构及系统组织等相关章节,内容较多,涉及的各个部件、引脚以及时序逻辑之间的关系复杂,计算机内部各个部件的控制、指令的执行以及数据的处理的是相互关联的动态过程,难以描述清楚[4]。国内高校也对此进行了教学研究和探索,比如任务驱动教学法[3],预习与课堂练习相结合的教学方法[5],以学生为中心“四法融合”式教学[6],等等。通过参考国内高校的教学研究以及以往教学经验,在教学过程中引入了启发式教学、互动式教学、讨论式教学等多种教学方法,在教学内容着重增加了动态过程演示,以改善教学效果,提高学生学习效率。
“微机原理”课程按照内容可以分为基础概念、CPU内部结构、计算机系统组成、指令系统及汇编编程、输入输出接口等部分。每一部分所涉及的知识点非常多,因此在教学过程中需要理清各个部分、各个知识点之间的逻辑关系,将各个知识点的讲解按照先后顺序有机地串接起来,形成统一的概念体系,而不是孤立的、没有关联关系的知识点。这是整个课程教学设计、改善教学方法的基础,在此基础上加入系统运行动态过程演示以提高学生感性认识、加入问题以便启发学生主动思考才有意义。
在本文中主要以8086CPU存储器组织及其运行机制为主线研究和讨论教学方法和设计教学过程。涉及的基本概念和知识点主要包括微机系统寻址、逻辑段、程序存储、数据存取、存储器分体结构等内容。在教学过程中,首先需要学习和理解微机系统寻址方式,这是理解存储器组织运行的基础;其次是学习存储器组织的概念,包括逻辑段、程序存储、数据操作方式及存储器分体结构等等;为了巩固学习内容,在最后安排了存储器汇编程序示例,通过一个简单的汇编程序讨论存储器组织的运行机制。
存储器进行寻址是8086系统存储器组织的基本概念之一,所涉及的教学内容和知识概念有比较强的前后关联性,因此在教学中强调了启发性教学方法,在关键地方引导学生一步步深入思考,同时使用直观演示法,使用动画演示微机系统的一些动态过程。各知识点的引入顺序如图1所示。
图1 物理地址和逻辑地址概念的引入
首先采用讲授法教学,让学生学习和了解CPU结构及其内部寄存器,然后采用启发式教学方法,一步步引导学生学习和理解更多的知识点和概念。从CPU内部寄存器的介绍,引出段寄存器、段基址、以及偏移地址的概念,再通过启发式问题:什么是段基址和偏移地址,引导学生了解相关的存储器和物理地址的概念。对于存储器主要了解其抽象模型,在PPT中使用动画展示计算机系统中存储器的抽象模型、以及物理地址的示意图。
接下来引出启发性问题:程序是否能够直接使用物理地址。此时可以和学生进行互动和讨论,促使学生对所学的知识进行归纳和推导。由于程序无法直接使用物理地址,为了解决这个问题,因此引出了段基址和偏移地址的概念,也就是逻辑地址。
由此通过基本知识介绍、关键地方提出思考问题,一步步引导学生建立物理地址、逻辑地址以及CPU寻址操作的概念。
存储器组织相关的知识点较多,为了在教学过程中形成一条前后关联的主线,在课程中以讲授法为主,穿插启发式提问、动态过程直观演示、课堂练习等教学方法,将各个知识点连接起来。
授课顺序设置如下:首先通过段基址和段寄存器引入逻辑段的概念;只有理解了逻辑段的概念,才能理解程序分段存储的模式;理解程序分段存储概念之后,就可以学习数据操作规则,然后再进一步结合存储器分体结构学习数据存取操作过程。相关的知识点主要包括逻辑段、程序存储方式、数据操作规则、存储器分体结构等等。
1)逻辑段
这一部分内容的难点是如何将逻辑段、段基址、偏移地址等概念有机的联系在一起。为此主要采用了直观演示法,用动画展示各个概念之间的相互关系。
图2为逻辑段及其起始地址、段基址的示意图,在授课中这些信息是按照①~④顺序依次展示出来。首先给出不同逻辑段的划分,其次展示各个逻辑段对应的起始地址,然后将各个逻辑段的起始地址单独显示出来,再生成相应的段基址。
图2 逻辑段及其起始地址、段基址
逻辑段的大小也进行了标识。为了强调逻辑段的起始地址和大小之间的关系,图中64KB大小的逻辑段的末尾地址没有直接给出,而是在课堂上留给学生思考和讨论。虽然是非常简单的问题,但是讨论式教学方法的引入,改变了讲授法教学的节奏,转移了学生的注意力,活跃了课堂气氛,对于改善教学效果很有帮助。
2)程序在内存中存储
在课程学习过程中,学生面临一个比较实际的问题是程序如何在内存中存储。由于涉及操作系统对程序的调入和处理过程,具体实现较为复杂,因此课程中以高度抽象和简化的方式进行讲解。这里主要采用直观演示教学法将抽象的概念形象化地动态展示出来。如图3所示,PPT从左到右依次呈现8086程序划分的过程:先将程序分为数据和可执行的代码两部分,再将数据分为堆栈数据和普通数据,最后存储到存储器中,所占用的逻辑段依次动态显示和命名为代码段、数据段、堆栈段,另外部分程序可能会有附加段。图中标号①~⑦为显示的顺序。
图3 程序在内存中存储的存储模型
至此,学生已经了解程序由逻辑段组成。为了进行更深入理解逻辑段的概念,解答程序如何存储的问题,采用启发式教学法进一步引入以下相关提问:
逻辑段大小是由谁来决定?
逻辑段在内存中的位置由谁来决定?
程序的各逻辑段段基址如何赋值给段寄存器?
这些知识点对于理解微机系统运行机制、建立微机系统整体体系概念非常重要,但是学生在学习初期很难考虑到,因此需要教师通过启发式问题主动提出,引导学生思考并进行讲解。在教学实践中,学生由于缺乏编程经验和操作系统工作原理等相关知识,无法正确回答,但是会引起进一步探究结果的强烈兴趣,因此在反复提问并吸引学生的注意力之后,教师即可给出答案,从而使得学生留下深刻记忆,加强了学习效果。
3)数据操作规则
8086系统数据操作规则的重点是字数据的操作,所涉及的概念具有很强的前后相关性,因此在教学过程中使用直观演示法,采用动画方式将这些概念的学习动态串接起来。
如图4所示,在PPT中按照标注的顺序依次进行显示和讲解。首先显示字数据的高字节、低字节(图4①、②),其次显示高低字节在存储器中存储的顺序(图4③、④),接着显示如何确定字数据的地址(图4⑤),然后显示另外一个字数据的存储(图4⑥、⑦)。此处为了调动学生思考和调节课堂气氛,加入了讨论式教学法,和学生一起讨论此数据的地址是多少(图4⑧),然后给出答案(图4⑨),最后说明这两个数据存储有什么不同(图4⑩)。
图4 字数据操作
直观演示法的引入,使得学生对字数据操作规则的认知一目了然。而加入的问题讨论,可以让学生回顾所学的相关性概念知识是否存在盲点,并在思考与讨论中加深对知识的理解。
4)存储器分体结构
存储器分体结构概念的难点有两点:一是CPU控制信号、地址输出与奇偶存储体及存储单元选择之间的逻辑关系,二是不规则字的读写操作过程。之所以是难点主要在于CPU的各种操作是一个动态过程,反映了微机系统运行过程中的时序逻辑,而静态的图片和讲解比较抽象,对学生的理解能力是一个挑战。为了提高学生学习效率,在教学过程中也需要采用直观演示法,将此动态过程以形象化的方式展示出来,给学生以直观的认识。
针对难点一,动态过程按照顺序主要演示如下内容:CPU给出地址信号、控制信号的传递过程;其次控制信号使能或禁止奇偶存储体的过程;然后是地址信号选择存储单元的过程;最后演示数据如何传输给CPU。
针对难点二,主要是通过不规则字示例演示读或写的动态过程,是难点一所演示过程的一种复杂组合。
以往教学使用静态图片和语言描述讲解需要耗费大量时间,个别学生还需要在课下反复学习和思考。通过动态过程演示,学生能够很快理解存储器操作的动态过程。
为了巩固学生所学习的段寄存器、逻辑地址到物理地址的变换、存储器使用以及CPU执行程序过程等知识,提高知识的综合运用能力,在这一章节课程设计的最后引入了练习法教学,安排了汇编程序进行课堂练习。
如图5所示,课堂练习所使用的示例程序有五条指令。学生可以通过练习巩固以下概念:CPU取指令过程,包括CS段寄存器与IP寄存器配合生成指令的物理地址、IP寄存器自动修改内容、CPU输出地址信号和控制信号;加法指令对标志寄存器的影响;相加结果保存到存储器的操作过程,包括段寄存器和指针寄存器的默认搭配关系、存储地址生成、控制信号的生成与控制作用等等。
图5 课堂练习程序
通过在“微机原理”课程内容设计和教学过程中灵活采用多种教学方法,使得相关的各个知识点以连贯性更强、更直观的方式展示出来,学生更加容易理解和接受,提高了学习效率。启发性、互动性、以及课堂练习等内容的安排,在促进学生主动思考、提高课堂注意力等方面有着显著的作用。通过对过去几年“微机原理”课程期末成绩的统计,采用新的教学方法后学生的优良率得到明显提升,教学效果得到了改善。