摘要:针对《汇编语言程序设计》课程的教学现状,提出从激发学生学习《汇编语言程序设计》课程的兴趣,降低汇编语言学习的难度,增强实验教学的效果,和建立合理可行考核方法等四个方面来搞好该课程的教学,教学实践证明该方法在很大程度上提高了教学效果。
关健词:汇编语言;案例教学法;考核方法
中图分类号:G642文献标识码:A文章编号:1009-3044(2011)10-2459-03
Research on Teaching Method of Assembly Language and Programming
HE Li-xin, WANG Kun-lun, LIU Deng-sheng, WU Xiao-qin, TU Jing
(Key Laboratory of Net work and Intelligent Information Processing, Hefei University, Hefei 230601, China)
Abstract: At present,it is very hard to get a satisfied effect of teaching. This paper discusses how to get a better effect on teaching of assembly language by four facets. The four facets include that interesting the students in studying the course, and declining the difficulty of the course, and improving the teaching of experiment, and that a reasonable method of assessment is established. Practice proves the efficiency of this method.
Key words: assembly language; case methods of teaching; methods of assessment
《汇编语言程序设计》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。 在实际应用当中,可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,还可以直接被用于嵌入式软件开发之中,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。因此,搞好《汇编语言程序设计》课程的教学很重要,如何搞好该课程教学值得广大教师们探讨和总结。
1 现状分析
目前,汇编语言课程教学存在的如下问题:
1)绝大多数同学对汇编语言课程的目的认识不够,且错误地认为汇编语言已经过时,没有用,从而对这门课程的学习没有兴趣。
绝大多数学生把汇编语言作为一门纯粹的编程语言课程来对待,这是一个较大的误区,这从思想上和意识上把汇编语言放到一个普通的程序设计软件的位置,这样势必难以达到较好的教学效果。而本课程的一个主要目的就是让学生学习与认识基本存储控制思想、底层设备操纵方法、系统输入输出特点等内容,为学生在高层应用与底层的系统结构组织与实现之间架设一座桥梁,使他们能够建立一个完整的系统思想体系,为将来更好地应用和发展打下一个良好的基础[1]。
另外,目前直接用汇编语言编写软件的情况的确不多,所以有不少学生都错误地认为在高级语言盛行的时代汇编语言已经过时且在企业的实际应用中没有用途,因此对这门课程没有兴趣。
2)汇编语言难学,挫伤了学生对该课程的学习热情。
由于汇编语言程序设计涉及到计算机底层硬件,学习内容枯燥,需要记忆的内容繁多,起步比较困难,不像计算机高级语言起步容易并在现在的应用程序设计中占有绝对的优势,相对于汇编语言,高级语言接近人类的自然语言,易学易用,很多功能用高级语言里只要一条语句就可实现,而用汇编语言则要好几条甚至几十条语句才能实现,这在很大程度上挫伤了学生对该课程的学习热情。
3)实验内容枯燥无味,实验考核方法不够好,实验课效果差。
当前绝大多数学校的实验与实践环节的组织对学生学习汇编语言没有起到太大的帮助,汇编语言实验内容仍然停留在程序三大结构、数据组织与数值计算、代码转换和数制转换等方面,这会导致学生对本课程实验和实践环节没有兴趣,不能激发学生的学习热情。另外,很多实验课基本上是学生做实验,有问题请教老师,教师指导,实验课结束就意味着同学们都通过了该实验这种方式进行的。很显然这种方式对自我要求不高的学生没有任何监督力,实验课教学效果差是很自然的事情。
4)课程考核方法不够完善,对学习过程的考核不够严谨。
传统的考核方法是按照期末考试占70%,平时成绩占30%来计算总评成绩的,有点甚至直接用期末考试成绩代替总评成绩。显然这些方法对学习过程的表现考虑不够,这就导致有些平时不爱学习的同学,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。
2 问题的解决方案
1)引领学生认识汇编语言课程的重要性,结合企业对汇编语言人才的需求和实例激发学生学习汇编语言的兴趣。
人们常说“兴趣是最好的老师”,事实的确如此,当学生们对课程产生了兴趣时他们会很主动地去学习,遇到困难会积极思考。为了激发学生的学习兴趣,作者在教学中使用了如下方法:
第一、强调《汇编语言》课程的重要性。《汇编语言》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。同时也是我们学习高级语言的利器[2]。
第二、介绍汇编语言在计算机系统维护等方面的实际应用,并选择有代表性的问题现场演示,让学生亲身体会到汇编语言的用途。虽然目前用汇编语言编写软件的情况的确不多。但是在实际应用中可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,另外在一些嵌入式软件开发中有时还需要用到汇编语言,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。
第三、用与生活中密切相关的实例现场演示,激发兴趣。
演示事先准备好的用汇编语言开发的与日常生活密切相关的应用实例,如:交通灯系统,空调单暖温度控制器,以及银行排队系统等等。使学生亲身体会到汇编语言的用途,从而彻底扭转学生们的编语言没有用的思想,激发学生学习汇编语言的兴趣。
第四、强调企业中需要懂汇编语言的人才。空口无凭,可以打开百度或Google的网页,输入“汇编语言 招聘”进行搜索就会发现的确有不少企业在招聘懂汇编的高级人才且待遇丰厚。亲眼见到上述企业的招聘广告,学生会深刻体会到《汇编语言程序设计》决非无用课程。
教学的实践表明:当学生明白了该课程的重要性和学习该课程的目的,学生们就会觉得学好该课程是很有必要的;而当学生们亲眼见到汇编语言在计算机维护等方面的实际应用和用汇编语言开发的与生活中密切相关的应用实例的演示时,他们就会体会到汇编语言的用途,激起他们的兴趣;最后当学生们看到网上不少企业在招聘懂汇编的高级人才且待遇丰厚时,学生们就会真正感受到汇编语言课程的魅力,激起他们更大的学习兴趣。
2)通过合理安排教学内容和充分利用多媒体教学的优势等方法降低汇编语言学习的难度,提高教学效果。
有了学习兴趣固然是好事,但如果在学习过程中遇到的困难太多或太大都会挫伤学生的学习热情。
而要想学习好一门课程,首先要选择一本好的教材。我们选择教材的原则是:结构清晰、主线特出,内容要有一定的深度和广度,所选例题要有代表性。根据该原则,我们选用普通高等教育“九五” 国家教委重点教材(沈美明,温冬婵 编著.《80X86汇编语言程序设计》. 北京:清华大学出版社, 2001.7)作为本课程的教材[3],该教材也得到了全国广大汇编语言教师的认可。经过多年的教学以及和学生的交流中我们发现,如果直接按照该教材的顺序教学效果不是很好。为了提高教学效果,作者在教学过程中做了如下四方面的改进。
第一,合理调整课程内容的先后顺序,将枯燥无味、需要大量记忆的内容分散到多个章节中讲授。例如:本书第三章 80x86的指令系统和寻址方式,这一章的指令太多,内容太杂,枯燥无味,要记忆的内容多。 若将该章中的串处理指令、控制转移指令等放到第五章的循环与分支程序设计中结合例题讲解效果更好,而将与子程序相关的指令放到第六章讲更合适,因为经过这样调换后,不仅避免了指令集中讲解时的指令太多,太枯燥,难记忆等问题,而且刚刚讲到的指令很快就能在例题中得到应用,学生对指令的理解和掌握会更加深入。第六章的dos系统功能调用内容也应该放到第五章中穿插讲授,这样提前的目的是为了让学生在实验中使用dos系统功能调用,因为上到第五章时就要求学生上机动手编写程序并用到这些知识点。
第二,充分利用计算机综合处理教学中的文字、声音、图象、图形、动画等教学信息,进一步优化《汇编语言程序设计》多媒体教学课件,从而降低汇编语言的学习难度。例如:初学者对于用汇编语言编写程序往往较难入门,可以首先对问题进行分析,用多媒体动画形式画出流程图,并用动画形式将每一步流程图与相应的实现该步骤的汇编指令一一对应起来,教学实践表明这样学生入门起来就要容易得多;再如:在子程序递归调用的讲解中,堆栈中的数据变化是学习的难点,很多学生被搞糊涂了,此时若将指令的逐条执行与相应的堆栈内数据变化情况采用动画的形式表现出来,学生就很容易理解这样难点内容了。像这样的例子还很多,由于篇幅有限,在此就不再列举了。
第三,抓住汇编语言的教学主线(即存储控制思想)进行教学。 汇编语言不像其他程序设计语言采用抽象了的数据,它采储存取控制的方式组对数据进行组织和操作,这既是汇编语言和其他程序设计语言的不同之处,同时也是这也体现出汇编语言与计算机硬件和操作系统之间的有着紧密联系,因此,汇编语言课程的教学主线是存储控制,该主线贯穿于整个教学过程。牢牢把握该主线,有利于掌握汇编语言程序设计的思想精髓和更好地抓住汇编语言面向机器的特点。
第四,采用案例教学法[4]进行教学。在教学当中,我经常使用案例教学法,教学效果很好。案例教学法就是教师使用与教学内容密切相关的实际案例来解决教学中的各种问题,以提高学生思考问题、分析问题和解决问题的能力,培养学生浓厚的学习兴趣的一种教学方法。运用这种教学方法,关键在于教师要准备大量与教学内容紧密相关的案例,并有计划、有意识、灵活地运用到教学实践中去,以取得预期的效果和目的。
3)增强实验内容的实用性和趣味性,增加汇编语言与高级语言混合编程的教学内容,建立合理可行的实验制度和考核方法。
对于任何一门计算机语言课程来说,实验都是教学中非常重要的一个环节,实验可以加深对理论知识的理解,提高学生的实践动手能力。
为了避免传统的程序三大结构、数据组织与数值计算、代码转换和数制转换等方面的枯燥无味的实验,我们将实验内容和实际应用相结合,如将汇编语言和计算机的系统维护等实际相联系,用汇编语言编写简单的设备驱动程序等等,增加图形化的实验内容等方法和手段,使实验变得实用有趣,增强学生动手的积极性和提高学生的动手能力。
另外,在实验中还要增加汇编语言与高级语言混合编程的教学内容。高级语言在软件开发中比汇编语言的使用要广泛的多,但是汇编语言有它自己独特的优点:占用空间小,速度快,可以与硬件直接打交道,而且与硬件直接打交道时汇编语言也是唯一的选择。因此要使汇编语言具有更多更好的应用性,就必须增加汇编语言与高级语言混合编程的教学内容,以引导学生在今后的实际应用程序开发中合理使用汇编语言开发出高效率的软件。
实验制度和考核方法的建立有利于进一步提高实验课的学习效果,实验课应使学生做到实验前预习,实验后总结,实验中逐个通过的方法。实验前预习是为了让学生在实验前对实验题目进行分析,查找相关资料,做好充分的准备以便保证学生在规定时间内完成实验;实验中逐个提高的方法是对每个完成实验的同学进行单独提3至4个问题,让其回答,只有回答正确才算该实验通过,这样做的主要目的是防止作弊和查找学生薄弱点;实验后总结则是总结经验和不足之处,达到进一步加深对相关知识点的理解和应用。上述三个环节在实验考核中分别占30%、40%和30%。教学实践表明建立实验制度和考核方法可以在很大程度上促进学生学习。
4)建立既注重期末考试结果又注重平时学习过程的课程考核方法
每门课程学习结束都需要对学生进行考核,有些同学平时不爱学习,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。
为了防止这种现象的产生,在教学中采用“N+2”的考核方法,其中的“N”是教学过程中的考核次数或项目数,“N+2”中的“2”中的“1”是期末考试,另一个“1”是课堂笔记。针对每门课程, N不小于3且不大于5,过程考核可采用的形式有:作业、平时表现、单元(阶段)测试、期中考试、课程论文、课程实验、综合性实验等。一般来说课堂笔记占总分比例不得超过10%,期末考试占总分比例范围为40%~50%,实验占20%,其他的根据实际需要灵活选择。在这种考核方法下,那些临时抱佛脚的同学即便在期末考试中考了六七十分,但也会由于平时成绩不理想也无法通过该课程的考核,也就是说这种考核方法既注重期末考试结果又注重平时学习过程,因此那些原本平时不爱学习的同学在这种考核制度的要求下也不得不抓紧时间学习了。实践表明该考核方法的确行之有效,平时学习的同学越来越多了,知识的掌握程度有了明显的提高,补考的人数显著下降,有些班级甚至没有人需要补考。
3 结束语
本文是作者将自己在教学过程中如何激发学生学习兴趣,通过适当的方法和手段降低课程学习难度,重视和严格要求实验教学,建立合理可行的课程教学制度和考核方法,从而达到改善教学效果的一些方法做了初步探讨,作者深知要想取得更好的教学效果还需要广大教师付出更多的努力,进行更多的探索和广泛的交流。
参考文献:
[1] 陈晓东.《汇编语言》教学方法探讨[J].山西农业大学学报,2006,5(6):70-71.
[2] 掌握汇编仍然是技术高手的必经之路[J].程序员,2004,(10):108-112.
[3] 沈美明,温冬婵.80X86汇编语言程序设计[M].北京:清华大学出版社,2001,7.
[4] 郑金洲.案例教学指南[M].上海:华东师范大学出版社,2000.