白玉峰
摘 要:目前计算机专业或相关专业学生在学习《汇编语言程序设计》课程时,由于该课程属于低级语言、涉及硬件较多、对硬件的依赖性比较大等特殊原因,存在着教师开展教学困难,学生学习和掌握也比较难,教学效果差等现象。本文主要针对此问题,探讨《汇编语言程序设计》课程的教学方法。
关键词:汇编语言程序设计 教学方法 研究
中图分类号:G642 文献标识码:A 文章编号:1672-3791(2014)08(b)-0184-02
程序设计在高校计算机及相关专业的课程中是最主要的基础课,而汇编语言程序设计又是程序设计的基础,并且是微机原理、操作系统、编译原理和系统结构等主要课程的基础课,是一门软硬件相结合、理论联系实践的课程。如果没有汇编语言程序设计作为基础,想要学深学透后续课程是十分困难的。学好汇编语言可以更好地深入理解和掌握计算机的硬件构成和工作机理,为进行计算机相关的应用和研究奠定基础[1,2]。因为汇编语言是接近于计算机硬件的低级语言,它是联系高级语言和计算机系统的桥梁,对于例如变量参数等在高级语言不容易理解的概念,用汇编语言讲述则很清楚,而且对于理解计算机原理帮助较大。但是由于汇编语言是面向机器的一种语言,很多学生在学习过程中感觉比较难入手。
汇编语言作为一种用助记符表示的面向机器的符号语言,如何认识该课程的作用和地位,如何取得更好的教学效果?在长期从事该课程的教学过程中,笔者尝试各种提高该课程教学质量的探索,有些体会,供大家参考。
1 目前《汇编语言程序设计课程》的教学状况
汇编语言是面向机器的一种符号语言,它与机器的结构密切相关,是直接针对CPU、内存和I/O端口编程的程序设计语言。而目前的各种高级语言和网络应用开发工具很多程序几乎可以自动生成。然而机器语言、汇编语言和高级语言的程序设计语言体系仍然是计算机技术的基础,也是计算机技术的重要知识体系之一。对于计算机及其相关专业的学生以及计算机爱好者来说,汇编语言程序设计是需要掌握的重要专业基础知识之一。可由于汇编语言面向机器的特点,不仅需要硬件知识的配合,而且它有大量的语法规则需要记忆,加之上机调试单调且容易出错,导致了大部分同学对于《汇编语言程序设计》课程的畏难情绪,学生初学阶段普遍反映该课程难学,很多学生在学习过程中感觉比较难入手。
2 教学方法探讨
2.1 合理组织课程内容
教学过程中为了让学生掌握所学知识并用于程序开发,在课程教学中把握教材的难点和重点尤为关键。
(1)基础知识的教学。
主要包括计算机硬件和指令系统的教学。对计算机硬件基础知识的理解和掌握程度直接影响学生对汇编语言地理解和掌握,其中包括CPU内部的构成、总线的作用、寄存器的设置和用途以及内存的使用等是较难理解的部分,在实际教学中,可将相关内容融汇在一起来进行教学。通过应用如:图片和动画等形象化的方法将这些比较抽象的知识以较容易理解的方式展现出来。作为编程的指令系统对汇编语言程序设计而言是很重要的一部分内容,在进行该部分内容教学时,可以尽量通过演示程序来进行讲解,解释各条指令的运用方法、效果等,同时也可以适当应用动画等方式演示指令的执行过程。
(2)程序控制结构的教学。
程序控制结构是程序设计教学中的重点,汇编语言中的选择结构和循环程序结构程序设计则是此部分的难点。为了使学生更好地掌握,在教学过程中,可选择部分典型的例题,如:解决汉诺塔问题和阶乘的计算等。
2.2 教学手段上采用传统教学与多媒体教学相结合
在教学过程中我们可以有选择地使用多媒体教学,例如:用动画模拟汇编语言中寻址方式、子程序调用的堆栈变化过程、中断调用过程等。运用多媒体教学,增强学生的直观感,加深对问题的。在讲用汇编语言指令编程序的内容时,采用传统的教学方法,教会学生如何思考、推理,如何用指令实现算法,培养学生的抽象思维、逻辑推理能力。传统教学方法与多媒体教学相结合,将有助于提高学生的理解能力及综合思维能力。
2.3 随堂写一些小程序增强记忆
在课堂上多加练习编写小程序段会提高学生对指令的记忆及理解掌握。经过几年的教学发现,课堂上练习少了以后,很多同学往往出现在编写程序时有些指令写不出来或不会用相关指令来组织程序。在课堂上练习,使学生可以增强记忆,对指令的使用方法有了进一步了解,能够运用自如。
2.4 注重案例教学
案例教学法在当前面向各个层次学生的教学过程中已得到广泛应用,具体是指教师需要根据课程教学目标与内容的要求,选择相关典型的实例并组织学生学习、组织学生讨论从而最大程度调动学生的创造性思维的教学方法。其具体执行有两种形式。
(1)案例讲解。
案例讲解需要在理论知识讲授之后进行,通过案例讲解辅助,达到加深学生理解的目标。
(2)案例分析法。
案例分析方法的重点在于讨论和分析,其主要目的是培养学生的创造性思维。案例的选择应注意培养学生理解知识,提高学生分析问题和解决问题的能力。在汇编语言程序设计的教学中综合运用案例讲解法和分析法,能够使学生尽快理解汇编语言程序设计的本质特征并迅速掌握编程方法。
2.5 注重实验内容的实用性和趣味性
把实验实践环节与理论教学相融合,用实践教学促进学科理论知识学习,激发学生学习兴趣。对于任何一门计算机语言课程来说,实验都是教学中非常重要的一个环节,实验可以加深对理论知识的理解,提高学生的实践动手能力。为了避免传统的程序三大结构、数据组织与数值计算、代码转换和数制转换等方面的枯燥无味的实验,应将实验内容和实际应用相结合,如将汇编语言和计算机的系统维护等实际相联系,用汇编语言编写简单的设备驱动程序等等,增加图形化的实验内容等方法和手段,使实验变得实用有趣,增强学生动手的积极性和提高学生的动手能力。
2.6 突出重点和难点
另外,在教学过程中,加强传统的教学方法也是重要的,如在教学过程中要突出重点和难点;课堂上多做练习,课后注意答疑、辅导。
如:讲解指令系统时部分指令应结合指令编码(即机器指令)来介绍,这样学生更容易理解和接受。
例如:讲解转移指令中段间转移直接寻址和段间转移间接寻址问题,如果只列出样例:
段间直接寻址:jmp far ptr target1
段间间接寻址:jmp dword ptr addr [bx]
学生很难理解,具体怎么实现跳转。但是如果结合指令编码来讲解上述两条转移指令则效果会有很大改进。
如:
段间转移直接寻址指令编码需要5个字节,如图1所示。
也就是说,上例中Jmp far ptr target1 的target1给出的是转移地址,即包括段地址和偏移地址。
而段间转移间接寻址的指令编码是2~4字节,如图2所示。
指令中由MOD和R/M确定的双字存储单元中的内容分别送入IP寄存器和CS段寄存器,完成转移。
3 结语
教学效果很大程度上取决于对课程重要性的认识和教学方法,如何培养学生的学习能力,除了高度重视该课程外,选择适宜的教学方法会起到举足轻重的作用。通过几年的实践证明,以上教学方法在《汇编语言程序设计》及相关课程的教学过程中会有良好的效果。
参考文献
[1] 沈美明,温冬婵.IBM-PC汇编语言程序设计[M].清华大学出版社,2004.
[2] 朱耀庭.汇编语言程序设计[M].清华大学出版社,2009.
[3] 唐朔飞.计算机机组成原理[M].计算高等教育出版社,2004.
[4] 谭浩强.C语言程序设计教程[M].高等教育出版社,2005.
[5] 王爽.汇编语言[M].清华大学出版社,2008.endprint