计算机组成原理课程教学改革新探索

2016-05-14 14:58张浩宇惠丽吴玲
关键词:计算机组成原理汇编语言教学改革

张浩宇 惠丽 吴玲

摘 要:“计算机组成原理”与“汇编语言”是计算机科学与技术和软件工程专业的专业课程,将这两门课程合并成一门全新的“计算机组成原理”课程是教学改革的新探索。文章从教学与实验两个角度探讨了将“计算机组成原理”与“汇编语言”两门课程融合的策略。

关键词:计算机组成原理;汇编语言;教学改革

中图分类号:G642.3 文献标识码:A 文章编号:1002-4107(2016)07-0014-02

一、“计算机组成原理”课程的特点

“计算机组成原理”是研究生入学考试的必考科目。该课程以冯·诺依曼型计算机为基础,围绕计算机的运算器、控制器、存储器和输入输出设备等五大部件详细介绍它们的工作原理与算法以及具体实现的电路结构。通过学习本课程,要求学生熟练掌握单总线结构CPU的工作原理和设计实现的方法,同时要求学生初步掌握精简指令系统、流水线结构、多体并行存储器、中断的工作原理等知识,为后续课程“微机原理与接口技术”、“计算机系统结构”做好准备。该课程首先讲授了8086CPU的编程结构,然后引申出8086汇编语言的寻址方式和指令系统,学生在掌握上述知识的基础上,进行汇编语言程序设计。汇编语言程序设计可以让学生加深对程序设计方法的理解,同时程序的编写和调试使学生对计算机硬件有一个感性的认识, 为以后他们学习“微机原理与接口技术”、“操作系统”等课程做准备。

根据国家教育部高教教执委发布的新的教学改革精神,结合我院的具体情况,我院将“计算机组成原理”与“汇编语言”两门课程合并成一门全新的“计算机组成原理”课程。在新的教学体系中,我们将两门课程有效地结合起来去糟取精删繁就简,舍去了两门课程中的重叠部分而突出重点,形成了一套新的教学体系。

二、“计算机组成原理”与“汇编语言”教学内

容的融合

在传统的“计算机组成原理”课程中,教师始终围绕着计算机的五大部件按照运算器、存储器、控制器、输入输出系统这个顺序进行讲解,在讲授过程中经常会用到一些实例进行说明,而很多时候是以汇编语言做例子讲解的,两门课程融合在一起的最大好处就是教师在讲授“汇编语言”的部分时,可以更好地兼顾“计算机组成原理”,让这两门课程做到无缝对接。

在基础知识部分,我们首先要介绍冯·诺依曼型计算机的特点。冯·诺依曼型计算机是串行计算机的始祖,所有的串行计算机都要符合冯·诺依曼型计算机的特点,这是“计算机组成原理”基础知识部分的重点。在课程讲授过程中,教师都会画一幅五大部件的关系图,通过图形示意来表示一条指令是如何在五大部件之间流动的,从而使用户从外部观察到计算机处于运行状态。我们考虑从这里引入8086CPU的编程结构,从计算机组成原理过渡到汇编语言,让指令举例更加具体化,再结合指令的寻址方式,借机说明8086的汇编语言指令是如何在CPU中执行的。

在接下来的讲授过程中,我们将介绍8086汇编语言的寻址方式和指令系统。由于在计算机组成原理课程中也有一章介绍指令系统,我们可以把这个部分与汇编语言的内容合并,以计算机组成原理的部分强调基本概念,以汇编语言的内容来强调具体应用,把内容更加具体化,举例更具有针对性,可以使学生更好地理解寻址方式和指令系统。在这里我们在教学上做了一点改变,我们考虑到汇编语言指令数目较多的特点将指令分类,每类指令选出一到两个具有代表性的指令进行详细说明,其他略讲,然后采用写出指令执行结果的方式进行大量练习,从而巩固这部分知识。

在讲授了汇编语言的程序设计方法之后,再讲授计算机组成原理部分的运算器与运算方法部分。在这部分我们可以利用学过的汇编语言知识,结合布斯算法和加减交替法编写定点数乘除法的汇编语言程序,还可以编写浮点数运算的模拟程序。在讲授控制器的部分时,我们可以设计一个类8086的CPU,把它作为课堂上的CPU设计举例,这样把一条8086汇编语言指令放在这个CPU中运行,可以更直观地反映指令的工作细节,促进学生对控制器的工作原理和汇编语言的理解。

三、“计算机组成原理”与“汇编语言”实验内

容的融合

“计算机组成原理”与“汇编语言”都有实验课,由于在讲授上先讲“汇编语言”的内容,因此相关实验先进行,然后进行“计算机组成原理”的实验。我院的“计算机组成原理”实验课程使用的是由清华大学计算机学院研制开发的TH-union+教学实验系统,该系统主要用于“计算机组成原理”课程的硬件教学实验,还支持监控程序、汇编语言程序设计。在硬件上同时实现了硬布线方式和微程序方式两种控制器结构,既支持用中小集成度的芯片实现CPU的方案,又支持用高集成度的FPGA门阵列实现CPU的方案。在软件上可实现指令级模拟,也可以软件模拟硬布线和微程序的操作,为学生学习硬件理论知识起到了重要的辅助作用。但是该实验系统的汇编语言指令与8086汇编语言是不兼容的,这使学生在短期内很难快速掌握实验系统的汇编语言指令,因此经课程组全体教师研究决定,另外开发一款新的汇编语言转换软件,用来实现两种不同种类的汇编语言互相转换。

该软件是利用linux模拟环境Cygwin开发实现的。Cygwin是cygnus solutions公司开发的一个在windows平台上运行的类UNIX模拟环境。在这里我们主要使用了Cygwin开发环境里的flex和gcc两个工具软件。利用flex工具软件编写的源代码必须转换成c语言代码格式,然后由linux下的c语言编译器gcc编译成可执行文件,完成最后的开发。

由于TH-union+教学实验系统的汇编语言指令共48条,采用精简指令系统,每条指令的寻址方式是固定的,因此不单独设置关于寻址方式的标志位,当指令进行译码操作的时候,实验系统电路通过分析指令的操作码既了解了指令的操作功能也了解了指令操作数的寻址方式。而8086汇编语言指令是一个复杂的指令系统,每条指令对应着多种不同的寻址方式,因此我们把教学实验系统的汇编语言看成是8086汇编指令系统的子集。通过对转换程序my的使用,帮助学生对比两种汇编语言之间的相同点和不同点,通过对比学习,学生可以更快速地熟悉实验系统汇编语言。

在这里对于不可转换的汇编语言指令可采取两种处理方式:方式一,发出警告提示并忽略此条指令;方式二,发出错误提示并强行结束程序转换。转换程序your分析了操作码之后开始分析操作数的寻址方式。在这里,我们假设所有指令都采用双操作数,因此在结构体中设置了两个对应寻址方式的变量。具体操作时,如果分析出该操作数的寻址方式可以被实验平台支持,那么就将对应数值保存在结构体的对应变量中以便转换,如果不是实验平台支持的寻址方式,系统将提示用户:“你的程序中使用了不可转换的寻址方式”,并强行结束转换。在寻址方式转换过程中,有一些特殊情况需要系统自动追加指令。

最后,要对输入输出指令单独处理。输入输出操作是后续课程“微机原理与接口技术”的重要知识点。在编写汇编语言程序过程中,当遇到输入和输出操作都是直接调用DOS中断或BIOS中断来实现的。但是教学实验系统没有任何中断程序辅助操作,遇到输入和输出操作只能由学生自己编写。在编写8086汇编语言程序过程中,凡是遇到输入和输出操作都通过调用这两个宏来实现。每次进行输入输出操作时必须先对指定的状态寄存器的标志位进行判断,以确定硬件是否准备好,是否可以进行输入输出操作。具体做法是使标号由英文字母和数字构成,每次产生新的标号,后面的数字部分就加1,保证新标号与旧标号不同。

“计算机组成原理”和“汇编语言”是计算机科学与技术、软件工程专业的专业课程,这两门课程存在着很多联系同时也有一些区别,把这两门课程合并成一门全新的“计算机组成原理”课是我院一项新的教学改革方案。如何把两门课程很好地融合在一起就成了课程组面临的一个新的挑战,本文结合课程组全体教师的多年教学经验,抛砖引玉,初步提出了一些在教学和实验上的改革方案,希望各界同人多提宝贵意见。

参考文献:

[1]唐朔飞.计算机组成原理:第二版[M].北京:高等教育

出版社,2008.

[2]王诚,刘卫东,宋佳兴.计算机组成与设计:第三版

[M].北京:清华大学出版社,2008.

[3]沈美明,温冬婵.IBM PC汇编语言程序设计:第二版

[M].北京:清华大学出版社,2001.

[4][美]莱弗恩等;杨作梅,张旭东等译.lex与yacc:第二

版[M].北京:机械工业出版社,2003.

猜你喜欢
计算机组成原理汇编语言教学改革
高等学校计算机专业课程教学改革实践——以汇编语言与接口技术课程为例
汇编语言与C语言的混合程序设计技术研究
提高《汇编语言程序设计》教学效率的思考与实践
《计算机组成原理》综合教学辅助平台的设计与实现
面向计算机系统能力培养的计算机组成原理实验教学
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
以职业技能竞赛为导向的高职单片机实践教学改革研究
微课时代高等数学教学改革的实践与探索
用“工程思维”引领《计算机组成原理》课程教学