刘 俊 马 创 解绍词
(重庆邮电大学软件工程学院 重庆 400065)
汇编程序语言是高等院校计算机科学与技术相关专业的学生必修的专业课程之一,它是很多课程如计算机组成原理、接口技术、操作系统等专业的必要先修课。对于训练学生的思维能力和掌握计算机的底层原理有很重要的作用。
源程序在计算机中不能直接被识别和执行,所以需要经过翻译,产生机器代码,这种翻译过程称为汇编,而汇编程序设计是执行把汇编语言源程序翻译成机器可识别和执行的目标程序任务的一种程序语言。利用汇编语言编写的源程序得到的目标程序运行速度快,目标代码短。汇编语言相比之前学过的高级语言如C、C++等,区别在于人必须迁就机器的思维方式,要设身处地地用电脑的角度去思考问题,这对学生的学习能力和学习习惯都带来了很大的挑战。
《汇编程序设计》是软件工程学科本科培养方案中重要一门课程,该课程不仅要求学生针对现实问题进行抽象和编码、能独立排查程序错误,且对计算机硬件相关知识需要基本了解,特别是计算思维的培养至关重要。汇编程序语言学习的不仅仅是语法,更多的是学习计算机基本的体系结构。其中包含很多新的概念,包括寄存器、中断和寻址方式等。同时,由于汇编指令与自然语言之间的语义差距较大,概念也很抽象,程序可读性差,导致在教学过程中,学生难以理解,因此如何对汇编语言课程进行改革,提高教学效果和教学质量,培养学生对计算机底层原理的了解,培养他们良好的实践能力,使我们当前急需解决的问题。
汇编语言是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。汇编语言与符号语言一一对应,它比机器语言的可读性要好,但与高级语言相比,可读性则不如高级语言,但是由于汇编语言具有占据存储空间少、执行速度快等特点,因此对于编程语言来说至关重要。
汇编语言的主要特性主要概括为以下几个方面:
汇编指令实际上是机器语言的符号表示,不同体系的处理器有不同的汇编语言,也就说明,不同的汇编程序不能相互移植,只能在相互兼容的计算机之间进行移植,因此,与高级语言有所不同的是,汇编语言的通用性与可移植性要差很多,但是大多数高级语言不能直接有效的控制机器,这正是汇编语言的优势所在。
汇编语言是面向机器的语言,因此在编写汇编程序的同时,除了掌握汇编语言的基本语法和指令,也需要考虑机器中操作数的区域格式与数据存放格式、数据访问格式等问题,同时这些问题也导致了汇编语言的可读性较差,程序调试较为复杂,而在使用高级语言的时候,这些问题都由操作系统完成,因此不需要解决这些琐碎繁杂的细节问题。
汇编语言编写的程序,可以直接翻译为机器代码,而高级语言例如C、C++、Java等都需要转译成语汇编对应的机器码才能执行。虽然汇编语言的可读性差,代码烦琐,但是机器代码可以直接识别,而高级语言不行,计算机无法直接识别。
相比而言,在解决同一个问题时,汇编语言的效率高于任何高级语言。由此可见,汇编语言的主要优点是可以直接控制计算机硬件部位,能够编写时间和空间效率都很高的程序。同时,由于汇编语言与处理器关系密切,因此,程序员在编写汇编语言的同时,也要熟悉计算机内部硬件资源,考虑较多的细节问题。根据以上汇编程序语言的特点,可以总结出汇编语言的应用领域有:(1)实现操作系统的核心部件,如实时操作系统的软件,智能仪器仪表的控制程度等;(2)与计算机硬件相关的软件开发,如外设的底层驱动程序;(3)大型软件中需要提高性能优化的部分,如计算机系统频繁调用的子程序。
教学改革的核心是改变原有的单纯接收式的学习方式,建立形成充分调动学生学习主体性的学习方式。教学的本质是师生之间的交往和互动,对学生而言,交往意味着凸显主体和个性,对教师而言,交往意味着不仅仅是上课传授知识,而是一起分享理解,促进学习。在传统的教学方式中,计算机编程语言的优势不能被体现,学生学习的主动性和积极性可能会被削弱,因此,为了帮助高效学生更加高效的学习和掌握汇编语言,教学改革至关重要。
作为低级语言,汇编程序与高级语言有众多不同之处,在教学方面也不能一视同仁,对于教学难度而言,汇编程序设计难度明显高于普通高级语言教学。指令种类繁多,操作复杂,上机操作和程序调试复杂,造成学习难度大,如何降低教学难度,提高教学质量,是汇编程序课堂教学的重难点。
由于汇编程序语言是面向硬件的,因此在教学过程中,对汇编语言的教学内容改革首先根据当前计算机技术现状选择合适的计算机环境,选用难度合适的教材,不宜选用晦涩难懂的教材和指导书籍,在教学过程中,也应该对教学内容做相应的调整,让学生更清晰明了的了解汇编语言的形成过程,从而更加深入了解计算机底层原理。
首先,在教学过程中,教师需要对学生的学习能力做一个评估,按照学生的学习认知,重新组织教学内容。例如:针对该教材第三章、第四章和第五章的内容,如果根据教材的顺序进行教学,则是学完指令系统后,再学编程。这样的结果一方面会导致教学内容空洞,学习起来枯燥,另一方面上机实作没有办法及时跟进,学习效果差。因此,在介绍第三章指令系统时,可以根据需要把相应的指令分布到后面不同章节中去,使得学生能够具有理性认识的同时,通过上机实作上升为感性认识,从而加深对指令的理解,达到更好的教学效果。
由于不同的处理器芯片的及时更新,很多操作指令和汇编语句也不同,教师在教学的时候,要根据最新的指令来教学,并及时上机演示,使得学生从底层认识程序设计思想,并在调试的过程中享受编程的乐趣和自豪感,培养编程的素养,为以后学习高级程序设计语言打下良好的基础。
汇编程序语言与其他高级程序语言有所相同的一点是两者都需要实践性较强的科目,在学习理论知识的同时,也要注重上机实践,实践环节是对学生所学知识的检验和复习巩固。然而,在传统的教学环节中,理论与实践一般是相互分离的,对实践的认识和重视程度不够,因此在教学环节中,增加实践课程,培养学生创新能力,也是教学改革的一个方面。
在实践课程中,首先注意合理选择实验内容。实验课的内容就与教学目标匹配,精心挑选一些通用的、有实用价值的内容,并且注意举一反三,尽可能避免实验内容冗长,重点不突出等问题。例如,在基础知识部分的实验内容通常包括练习常用的命令、熟悉汇编语言程序设计的上机环境,编写简单的分支、循环和子程序,并且在后次课上以提问或测验的形式及时进行复习。其次,根据循序渐进的原则,结合理论教学内容的深入,逐渐增加程序设计的难度和工作量。此外,还需要注意引导,使学生思想活跃起来,要求学生根据个人兴趣自拟题目,设计完成一个实验,作为平时成绩加分的依据,这种激励的教学实践模式能够充分挖掘学生内在的主观能动性,提高其学习的兴趣,使学生从“知识型”向“创造型”转变。
汇编语言不易理解,指令繁多,教师在授课的时候应该多注意教学的方法和手段,指导学生掌握正确的学习方法和实践操作方法,鼓励学生多动手,进而培养学生对汇编语言的热爱。传统的教学模式中,教师处于主导地位,学生要顺应教师的节奏,被动的学习课程知识,如何将学生转换为课堂的主体,充分调动学生的学习积极性和自主能动性,让学生真正参与到教学环节中去,越来越引起学校的关注。这一要求的提出需要教师在课前做好充分的准备,既要充分了解和掌握教材上的内容,也要及时的关注最新的发展和应用,在授课过程中,与学生进行讨论,也能引起学生的注意和兴趣。同时,不失时机地提出一些问题,引导学生积极思考。这样不仅可以提高学生的学习兴趣,培养他们发现问题、分析问题和解决问题的能力,而且还可以帮助教师及时调整教学中易被忽视的某些环节。因此,采用互动启发式教学在很大程度上能够提高学生的学习兴趣和积极性。
随着计算机软硬件的发展,高级语言的发展迅速,越来越受到企业和学校的青睐,而汇编语言因其偏底层原理,晦涩难懂的特性,导致其难以被理解和掌握,以至于被忽略,但是汇编语言确是所有高级语言的基础,因此,学好汇编程序设计也是至关重要的,在教学过程中,教师需要不断进行教学改革,摸索出适合学生的教学方法和教学步骤,高效教学,培养学生发现问题、解决问题的能力。并为以后的工程实践奠定良好的理论和实践基础。