论文部分内容阅读
摘要:“汇编语言程序设计”是计算机及相关专业的专业基础必修课。分析了目前课程教学中存在的问题,根据课程的目的和任务,结合教学实践,从教学进程、教学内容、教学方法与实践教学改革等方面探讨了“汇编语言程序设计”课程教学改革的基本思路与策略。
关键词:汇编语言;教学改革;实践
作者简介:陈燕俐(1969-),女,江苏常熟人,南京邮电大学计算机学院,副教授;许建(1980-),男,江苏徐州人,南京邮电大学计算机学院,讲师。(江苏南京210003)
基金项目:本文系2011年南京邮电大学教改项目“以人为本,因材施教,构建多层次立体化教学模式的研究”(项目编号:JG00411JX13)的研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2012)11-0055-02
“汇编语言程序设计”是计算机及相关专业的专业基础必修课。[1]学生通过该课程的学习,不仅可掌握汇编语言程序设计的基本理论和方法,培养汇编语言程序开发能力,而且还会对计算机系统有更深刻地认识。学生学好该课程对于了解计算机系统的组成结构与原理,更深入地学习程序设计方法很有意义,[2]也为将来学习操作系统、微机原理及接口技术、计算机组成原理、计算机系统结构和高级语言等课程打好坚实的基础。
“汇编语言程序设计”是一门软硬件结合的课程,和处理器及操作系统都是紧密相关的。近年来,由于教学内容滞后于当前计算机技术的发展,并且这门课程的内容较抽象、不易理解,容易导致学生的学习兴趣下降,因此“汇编语言程序设计”逐渐在计算机专业教学体系中被忽视,课程改革成为各高校计算机等专业紧迫的问题之一。本文根据汇编语言的特点,结合课程组老师的多年的研究和探索,探讨了从教学进程、教学内容、教学手段以及实践教学等多个方面对该课程进行改革的基本思路和策略。
一、教学进程的改革
目前大部分学校都是在大二或大三开设“汇编语言程序设计”课程。笔者认为应将该课程安排在第一学期,在学生学习了课程“计算机科学与技术导论”之后。原因主要有以下两点:
1.汇编语言是计算机学习最佳起点的编程语言,是人和计算机沟通的最直接的方式
汇编语言是最接近于机器语言的编程语言。如果说机器语言是计算机操作的本质,那么汇编语言就是最接近本质的语言。汇编语言描述了机器最终所要执行的指令序列。可以说汇编语言是联系硬件与软件的纽带,学习它既可以理解软件,又能够感知硬件,所以学习汇编语言无疑是学生学习和理解计算机体系最佳的切入点。通过该门课程的学习,学生能够深刻理解机器运行程序的机理,使得他们在以后接触复杂变化的计算机知识时变得清晰和顺畅。
2.汇编语言是很多相关课程,如高级语言、数据结构、操作系统、微机原理等的重要基础
目前在大学计算机课程体系中,“高级语言程序设计”通常被安排在第一学期。大一新生主要是通过C语言的学习达到利用计算机分析问题和解决问题的目的。C语言被认为是学习其他计算机课程的基础。这门课程的掌握程度将对其他课程的学习积极性产生影响。但学生普遍反映学习该门课程有较大的困难,对许多概念(如指针、形参实参、函数调用、全局变量、局部变量等)难以理解,他们认为许多概念抽象、空洞,往往在学习的初始阶段感到茫然、乏味,甚至产生恐难情绪,直接影响到整个学习和教学效果。学生经常学习结束后,连简单的程序都不能编写,其原因就是大一新生普遍缺乏计算机知识背景和算法思想,汇编语言才是计算机技术的基础,而不是C语言。汇编语言能够让学生更好地理解高级语言,高级语言大都编译为汇编指令,最终转化为机器指令得以执行。所以说学习汇编语言既有助于透彻地理解高级语言的核心原理,又能明晰程序内部的执行过程。
汇编语言作为一种与硬件紧密联系的低级语言,相对于其他计算机语言比较难于掌握,再加上随着软件技术的发展,毋庸置疑汇编语言的应用领域越来越小,不少学生认为学习汇编语言在以后工作中用处不大,纯粹只是为了考试过关而应付学习。因此在教学过程中,教师首先必须向学生详细阐述汇编语言在计算机学科知识体系中的重要作用,充分调动学生的学习热情和求知欲望,强调学好汇编语言,并不仅仅是掌握一门编程语言,更重要的是能够获得直接从底层分析问题解决问题的能力,为学习高层的知识奠定基石;更要向学生说明汇编语言具有与高级语言不同的特点,正是这些特点使得汇编语言具有高级语言不可替代的作用,汇编语言也具有其他高级语言所无法企及的优势。
二、教学内容的改革
“汇编语言程序设计”教学内容包括以下几个主要部分。微型计算机概述:微型计算机的发展过程、特点,微型计算机及微机系统的组成,微型计算机的三总线结构,数制和码制等基础知识;80x86微处理器:80x86微处理器的发展、特点和结构,微处理器的寄存器,微机系统的存储器组织,微处理器的工作模式,微处理器的引脚信号及其功能;80x86的指令系统:寻址方式,数据传送类,算术运算类等指令的功能和使用,常用伪指令和运算符的使用;汇编语言程序设计:汇编语言编程格式,汇编语言程序设计的基本方法(包括分支、循环、子程序调用等)。
汇编语言是和处理器以及操作系统紧密相关的,随着16位处理器和DOS操作系统退出历史舞台,32位、64位CPU以及Windows、Linux等多任务操作系统的出现,[3]课程的基础知识和实践环节必须与时俱进,需要从DOS下的16位实模式编程过渡到Windows下的保护模式编程。[4]但由于多任务操作系统工作在保护模式,使用汇编语言直接开发的应用程序,不能直接对硬件进行操作。应用程序通过操作系统来实现对硬件的控制,[4]且Windows下的保护模式编程较为复杂,因此目前在大部分学校,该门课程内容的核心仍然是DOS下的16位实模式编程,但为了教学内容的先进性,增加了32位指令和保护模式的介绍,CPU的结构是以386体系结构为基础的Pentium 处理器为主,摒弃了8086结构的介绍。这种矛盾就造成了学生对许多概念不能理解,如操作数的存储器寻址方式等,这样直接影响学生下一步学习指令和汇编语言程序设计的积极性。
针对上述问题,笔者认为应将16位汇编和Win32位汇编有机融合起来。16位汇编语言和Win32汇编有其相似之处,例如有着相同的寄存器、相同的指令系统、相同的寻址方式,只不过操作数和地址的长度不同而已,因此应以16位汇编入手,以8086寄存器结构、寻址方式、指令集为基础逐步过渡到32位汇编,这样内容相对简单,学生容易理解。重点要阐述清楚实模式下的存贮器编址和保护模式下存贮器编址,在讲述处理器的工作模式时就应该让学生明确16位段和32位段的概念以及差别;在此基础上进一步让学生明确16位汇编和32位汇编的概念。
三、教学方法的改革
目前的汇编语言授课计划都是在讲述完所有的理论知识,包括所有的指令(传送类指令、算术运算类指令、转移和调用类指令、逻辑运算和移位指令、串操作指令、处理机控制指令)和伪指令后,再开始学习编写程序。由于汇编语言指令、伪指令较多,有大量的指令和语法规则需要记忆,学生要在短时间内掌握每条指令的功能、指令的寻址方式、指令对标志位的影响以及指令执行时的约定设置、需要预置的参数、隐含使用的寄存器等内容,这将导致学生对课程中所讲授的内容无法消化,容易感到枯燥、厌烦,从而产生倦怠心理,失去了学习兴趣。
笔者认为首先应从整体上让学生了解微机结构及其工作原理,对学生阐述清楚指令的组成、操作数的寻址方式以及指令的运行这些最基本的概念和理论。现如今的教学环境有了不同程度的提高,多媒体教学已经普及,各种汇编语言教学软件和课件层出不穷,把难以想象的部分以动态、直观的图形图像演绎出来,让学生易于接受和理解。比如CPU编程结构、存储器分段、寻址方式等可以用PPT来演示;指令的运行可以用flash等软件形成动态图像演绎全过程,达到了事半功倍的效果。
在讲述最基本的传送类指令、算术运算类指令和基本的伪指令后,就可以让学生学习编写完整的汇编语言程序,并且上机调试、运行,使学生能在实践中掌握汇编语言程序设计,并使其熟悉指令系统。其余的各种指令和伪指令等内容分解到下面的学习进程中,让学生逐步接触并使用这些指令,如可将转移和调用指令分解到分支、循环程序设计的学习中;在学习数据处理程序设计时可以先向学生介绍串指令。这样将编程环节提前,以一个完整的程序实例引导,通过编程与动手,学生对程序设计及一些基本概念、基本方法建立感性认识,在此基础上以程序为线索再逐一展开,将使学生在整个学习过程中的每一步都目标明确,主题清晰,基础扎实,可达到循序渐进的效果。学生在此过程中还会不断地获得成就感,可以更大地激发求知欲望,进行自主探索和互动协作的学习。
四、实践教学的改革
实验教学是检验和巩固已学知识的一个必要手段,是培养学生创造性的关键环节,也是教学改革的一个重要方面。[5,6]汇编语言是一门实践性很强的语言,实验环节在整个教学活动中占据了举足轻重的地位,是提高学生动手能力的重要环节。[7]
在“汇编语言程序设计”实验中,目前主要还是要求学生编写实模式DOS程序。但学校实验室计算机通常不会安装DOS操作系统,而是安装多任务如Windows操作系统,因此汇编实验程序运行在Windows下的虚拟86模式,工作在虚拟DOS环境,汇编工具为Borland公司的Tasm或Microsoft公司的Masm。汇编程序的汇编、链接均要输入DOS命令,但由于学生对DOS操作环境不熟悉,在上机时不能够熟练地在DOS环境下进行操作,使得学生对上机实验产生畏惧心里。
针对上面的问题,教师一方面应耐心讲解,让学生充分认识到实验的重要性,熟悉汇编语言源程序从汇编、链接到调试运行的整个开发过程;鼓励学生只要反复实践,一定能够掌握汇编语言的开发过程。实验室提供使用更加方便的汇编语言集成开发工具,如未来汇编等。与汇编语言程序在传统的DOS界面下的上机环境不同,未来汇编是在Windows界面下的集编辑、汇编、链接、调试为一体的16位TASM集成环境,其窗口化、菜单式及汉化的操作,使得汇编语言程序设计实验大为方便。开发人员可以在该集成环境下编写源程序,然后只要直接用鼠标点击菜单上的相应命令,就可以完成程序的汇编和链接工作,直接生成可执行文件,所有工作一次性完成;并且同时把汇编和连接时产生的输出信息输出到输出窗口中,供用户参考,而不会输出到DOS的命令界面上去,省去了不同操作环境之间的频繁切换。这一平台可以很好地将学生的注意力集中于汇编语言程序的编写与设计中,解决了实模式DOS程序的开发与Windows操作系统之间的矛盾,大大提高了学生做实验的积极性。这对于提高学生的学习兴趣、巩固课堂教学内容起到了关键作用。
五、总结
“汇编语言程序设计”作为计算机及相关专业的专业基础课程,其重要性显而易见,但是目前面临着很大的挑战。这其中的原因是多方面的,包括计算机技术发展的日新月异造成的教学内容的滞后。面对当前的形势,找到合理的解决方案是当务之急。本文主要分析了目前课程教学中存在的问题,结合教学实践,从教学进程、教学内容、教学方法与实践教学改革等方面给出了课程教学改革的基本思路与策略。让学生充分了解学习汇编语言的重要性,合理安排教学内容,选择适当的教学方法和实践手段,充分发挥学生的学习积极性。
参考文献:
[1]郑晓薇.汇编语言[M].北京:机械工业出版社,2009.
[2]程学先,林姗,程传慧.汇编语言程序设计[M].北京:机械工业出版社,2009.
[3]冯建文,包健,严义.“汇编语言程序设计”课程的教学改革与探讨[J].吉林大学学报(信息科学版),2005,(S2):22-24.
[4]谭毓安,张雪兰.Windows汇编语言程序设计教程[M].北京:电子工业出版社,2005.
[5]宋人杰,周欣欣,李红彪.《汇编语言程序设计》教学改革的探索与实践[J].东北电力大学学报(社会科学版),2008,28(5):38-40.
[6]杨建军,陈星.汇编语言程序设计实验教学的研究与探索[J].实验实科学,2008,(4):34-35.
[7]王晓晔,温显斌.汇编语言课程教学探讨[J].计算机教育,2010,(20):122-125.
(责任编辑:宋秀丽)
关键词:汇编语言;教学改革;实践
作者简介:陈燕俐(1969-),女,江苏常熟人,南京邮电大学计算机学院,副教授;许建(1980-),男,江苏徐州人,南京邮电大学计算机学院,讲师。(江苏南京210003)
基金项目:本文系2011年南京邮电大学教改项目“以人为本,因材施教,构建多层次立体化教学模式的研究”(项目编号:JG00411JX13)的研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2012)11-0055-02
“汇编语言程序设计”是计算机及相关专业的专业基础必修课。[1]学生通过该课程的学习,不仅可掌握汇编语言程序设计的基本理论和方法,培养汇编语言程序开发能力,而且还会对计算机系统有更深刻地认识。学生学好该课程对于了解计算机系统的组成结构与原理,更深入地学习程序设计方法很有意义,[2]也为将来学习操作系统、微机原理及接口技术、计算机组成原理、计算机系统结构和高级语言等课程打好坚实的基础。
“汇编语言程序设计”是一门软硬件结合的课程,和处理器及操作系统都是紧密相关的。近年来,由于教学内容滞后于当前计算机技术的发展,并且这门课程的内容较抽象、不易理解,容易导致学生的学习兴趣下降,因此“汇编语言程序设计”逐渐在计算机专业教学体系中被忽视,课程改革成为各高校计算机等专业紧迫的问题之一。本文根据汇编语言的特点,结合课程组老师的多年的研究和探索,探讨了从教学进程、教学内容、教学手段以及实践教学等多个方面对该课程进行改革的基本思路和策略。
一、教学进程的改革
目前大部分学校都是在大二或大三开设“汇编语言程序设计”课程。笔者认为应将该课程安排在第一学期,在学生学习了课程“计算机科学与技术导论”之后。原因主要有以下两点:
1.汇编语言是计算机学习最佳起点的编程语言,是人和计算机沟通的最直接的方式
汇编语言是最接近于机器语言的编程语言。如果说机器语言是计算机操作的本质,那么汇编语言就是最接近本质的语言。汇编语言描述了机器最终所要执行的指令序列。可以说汇编语言是联系硬件与软件的纽带,学习它既可以理解软件,又能够感知硬件,所以学习汇编语言无疑是学生学习和理解计算机体系最佳的切入点。通过该门课程的学习,学生能够深刻理解机器运行程序的机理,使得他们在以后接触复杂变化的计算机知识时变得清晰和顺畅。
2.汇编语言是很多相关课程,如高级语言、数据结构、操作系统、微机原理等的重要基础
目前在大学计算机课程体系中,“高级语言程序设计”通常被安排在第一学期。大一新生主要是通过C语言的学习达到利用计算机分析问题和解决问题的目的。C语言被认为是学习其他计算机课程的基础。这门课程的掌握程度将对其他课程的学习积极性产生影响。但学生普遍反映学习该门课程有较大的困难,对许多概念(如指针、形参实参、函数调用、全局变量、局部变量等)难以理解,他们认为许多概念抽象、空洞,往往在学习的初始阶段感到茫然、乏味,甚至产生恐难情绪,直接影响到整个学习和教学效果。学生经常学习结束后,连简单的程序都不能编写,其原因就是大一新生普遍缺乏计算机知识背景和算法思想,汇编语言才是计算机技术的基础,而不是C语言。汇编语言能够让学生更好地理解高级语言,高级语言大都编译为汇编指令,最终转化为机器指令得以执行。所以说学习汇编语言既有助于透彻地理解高级语言的核心原理,又能明晰程序内部的执行过程。
汇编语言作为一种与硬件紧密联系的低级语言,相对于其他计算机语言比较难于掌握,再加上随着软件技术的发展,毋庸置疑汇编语言的应用领域越来越小,不少学生认为学习汇编语言在以后工作中用处不大,纯粹只是为了考试过关而应付学习。因此在教学过程中,教师首先必须向学生详细阐述汇编语言在计算机学科知识体系中的重要作用,充分调动学生的学习热情和求知欲望,强调学好汇编语言,并不仅仅是掌握一门编程语言,更重要的是能够获得直接从底层分析问题解决问题的能力,为学习高层的知识奠定基石;更要向学生说明汇编语言具有与高级语言不同的特点,正是这些特点使得汇编语言具有高级语言不可替代的作用,汇编语言也具有其他高级语言所无法企及的优势。
二、教学内容的改革
“汇编语言程序设计”教学内容包括以下几个主要部分。微型计算机概述:微型计算机的发展过程、特点,微型计算机及微机系统的组成,微型计算机的三总线结构,数制和码制等基础知识;80x86微处理器:80x86微处理器的发展、特点和结构,微处理器的寄存器,微机系统的存储器组织,微处理器的工作模式,微处理器的引脚信号及其功能;80x86的指令系统:寻址方式,数据传送类,算术运算类等指令的功能和使用,常用伪指令和运算符的使用;汇编语言程序设计:汇编语言编程格式,汇编语言程序设计的基本方法(包括分支、循环、子程序调用等)。
汇编语言是和处理器以及操作系统紧密相关的,随着16位处理器和DOS操作系统退出历史舞台,32位、64位CPU以及Windows、Linux等多任务操作系统的出现,[3]课程的基础知识和实践环节必须与时俱进,需要从DOS下的16位实模式编程过渡到Windows下的保护模式编程。[4]但由于多任务操作系统工作在保护模式,使用汇编语言直接开发的应用程序,不能直接对硬件进行操作。应用程序通过操作系统来实现对硬件的控制,[4]且Windows下的保护模式编程较为复杂,因此目前在大部分学校,该门课程内容的核心仍然是DOS下的16位实模式编程,但为了教学内容的先进性,增加了32位指令和保护模式的介绍,CPU的结构是以386体系结构为基础的Pentium 处理器为主,摒弃了8086结构的介绍。这种矛盾就造成了学生对许多概念不能理解,如操作数的存储器寻址方式等,这样直接影响学生下一步学习指令和汇编语言程序设计的积极性。
针对上述问题,笔者认为应将16位汇编和Win32位汇编有机融合起来。16位汇编语言和Win32汇编有其相似之处,例如有着相同的寄存器、相同的指令系统、相同的寻址方式,只不过操作数和地址的长度不同而已,因此应以16位汇编入手,以8086寄存器结构、寻址方式、指令集为基础逐步过渡到32位汇编,这样内容相对简单,学生容易理解。重点要阐述清楚实模式下的存贮器编址和保护模式下存贮器编址,在讲述处理器的工作模式时就应该让学生明确16位段和32位段的概念以及差别;在此基础上进一步让学生明确16位汇编和32位汇编的概念。
三、教学方法的改革
目前的汇编语言授课计划都是在讲述完所有的理论知识,包括所有的指令(传送类指令、算术运算类指令、转移和调用类指令、逻辑运算和移位指令、串操作指令、处理机控制指令)和伪指令后,再开始学习编写程序。由于汇编语言指令、伪指令较多,有大量的指令和语法规则需要记忆,学生要在短时间内掌握每条指令的功能、指令的寻址方式、指令对标志位的影响以及指令执行时的约定设置、需要预置的参数、隐含使用的寄存器等内容,这将导致学生对课程中所讲授的内容无法消化,容易感到枯燥、厌烦,从而产生倦怠心理,失去了学习兴趣。
笔者认为首先应从整体上让学生了解微机结构及其工作原理,对学生阐述清楚指令的组成、操作数的寻址方式以及指令的运行这些最基本的概念和理论。现如今的教学环境有了不同程度的提高,多媒体教学已经普及,各种汇编语言教学软件和课件层出不穷,把难以想象的部分以动态、直观的图形图像演绎出来,让学生易于接受和理解。比如CPU编程结构、存储器分段、寻址方式等可以用PPT来演示;指令的运行可以用flash等软件形成动态图像演绎全过程,达到了事半功倍的效果。
在讲述最基本的传送类指令、算术运算类指令和基本的伪指令后,就可以让学生学习编写完整的汇编语言程序,并且上机调试、运行,使学生能在实践中掌握汇编语言程序设计,并使其熟悉指令系统。其余的各种指令和伪指令等内容分解到下面的学习进程中,让学生逐步接触并使用这些指令,如可将转移和调用指令分解到分支、循环程序设计的学习中;在学习数据处理程序设计时可以先向学生介绍串指令。这样将编程环节提前,以一个完整的程序实例引导,通过编程与动手,学生对程序设计及一些基本概念、基本方法建立感性认识,在此基础上以程序为线索再逐一展开,将使学生在整个学习过程中的每一步都目标明确,主题清晰,基础扎实,可达到循序渐进的效果。学生在此过程中还会不断地获得成就感,可以更大地激发求知欲望,进行自主探索和互动协作的学习。
四、实践教学的改革
实验教学是检验和巩固已学知识的一个必要手段,是培养学生创造性的关键环节,也是教学改革的一个重要方面。[5,6]汇编语言是一门实践性很强的语言,实验环节在整个教学活动中占据了举足轻重的地位,是提高学生动手能力的重要环节。[7]
在“汇编语言程序设计”实验中,目前主要还是要求学生编写实模式DOS程序。但学校实验室计算机通常不会安装DOS操作系统,而是安装多任务如Windows操作系统,因此汇编实验程序运行在Windows下的虚拟86模式,工作在虚拟DOS环境,汇编工具为Borland公司的Tasm或Microsoft公司的Masm。汇编程序的汇编、链接均要输入DOS命令,但由于学生对DOS操作环境不熟悉,在上机时不能够熟练地在DOS环境下进行操作,使得学生对上机实验产生畏惧心里。
针对上面的问题,教师一方面应耐心讲解,让学生充分认识到实验的重要性,熟悉汇编语言源程序从汇编、链接到调试运行的整个开发过程;鼓励学生只要反复实践,一定能够掌握汇编语言的开发过程。实验室提供使用更加方便的汇编语言集成开发工具,如未来汇编等。与汇编语言程序在传统的DOS界面下的上机环境不同,未来汇编是在Windows界面下的集编辑、汇编、链接、调试为一体的16位TASM集成环境,其窗口化、菜单式及汉化的操作,使得汇编语言程序设计实验大为方便。开发人员可以在该集成环境下编写源程序,然后只要直接用鼠标点击菜单上的相应命令,就可以完成程序的汇编和链接工作,直接生成可执行文件,所有工作一次性完成;并且同时把汇编和连接时产生的输出信息输出到输出窗口中,供用户参考,而不会输出到DOS的命令界面上去,省去了不同操作环境之间的频繁切换。这一平台可以很好地将学生的注意力集中于汇编语言程序的编写与设计中,解决了实模式DOS程序的开发与Windows操作系统之间的矛盾,大大提高了学生做实验的积极性。这对于提高学生的学习兴趣、巩固课堂教学内容起到了关键作用。
五、总结
“汇编语言程序设计”作为计算机及相关专业的专业基础课程,其重要性显而易见,但是目前面临着很大的挑战。这其中的原因是多方面的,包括计算机技术发展的日新月异造成的教学内容的滞后。面对当前的形势,找到合理的解决方案是当务之急。本文主要分析了目前课程教学中存在的问题,结合教学实践,从教学进程、教学内容、教学方法与实践教学改革等方面给出了课程教学改革的基本思路与策略。让学生充分了解学习汇编语言的重要性,合理安排教学内容,选择适当的教学方法和实践手段,充分发挥学生的学习积极性。
参考文献:
[1]郑晓薇.汇编语言[M].北京:机械工业出版社,2009.
[2]程学先,林姗,程传慧.汇编语言程序设计[M].北京:机械工业出版社,2009.
[3]冯建文,包健,严义.“汇编语言程序设计”课程的教学改革与探讨[J].吉林大学学报(信息科学版),2005,(S2):22-24.
[4]谭毓安,张雪兰.Windows汇编语言程序设计教程[M].北京:电子工业出版社,2005.
[5]宋人杰,周欣欣,李红彪.《汇编语言程序设计》教学改革的探索与实践[J].东北电力大学学报(社会科学版),2008,28(5):38-40.
[6]杨建军,陈星.汇编语言程序设计实验教学的研究与探索[J].实验实科学,2008,(4):34-35.
[7]王晓晔,温显斌.汇编语言课程教学探讨[J].计算机教育,2010,(20):122-125.
(责任编辑:宋秀丽)