正文:摘要:汇编语言课程是计算机及电子信息类相关专业一门重要的基础课程,是一门能够利用计算机的硬件特性直接控制计算机硬件的语言。本文分析了目前在汇编语言教学效果不理想的主观和客观原因,有针对性地提出了相应的教学改革措施。同时从实验平台以及实验内容等方面提出了相应的措施和方法。
关键词:汇编语言 实验教学 DEBUG 指令系统
1、汇编语言教学现状汇编语言是计算机专业的核心基础课程,是一门软硬件结合的主干课程,与计算机组成原理、单片机、接口技术等其他课程都存在着共同探讨的问题。汇编语言在出现的近半个世纪的时间里,指令体系不断扩展,原研究的领域也在不断发展变化。在今天看来,尽管C/C++等编译器运行速度很快,编译生成的目标代码运行速度也很快,但汇编语言编写的源程序汇编后得到的目标程序仍在时间和空间两个方面体现出较大的优势,运行速度更快,目标代码更短,在一些大型软件中,通常会把执行频率高的部分用嵌入汇编代码的方式来提高整体性能。在计算机自动控制、仪器仪表和家用电器等的应用程序日益发展的今天,速度快、功能强的汇编语言更是占有非常重要的地位。对计算机相关专业的学生来说,汇编语言是需要掌握的重要专业基础知识之一。
汇编语言是一种以“指令助记符”为特征的低级语言,能直接控制底层机器的操作,同时又为操作系统和高级语言提供支持。然而随着硬件技术的飞速发展,处理器的性能和存储器的容量达到了相当的高度,指令系统从单指令单数据流指令逐步演变成多指令多数据流指令,计算机体系结构由标量计算机向阵列计算机、并行计算机和数据流计算机发展,多任务的操作系统(Windows、Unix、Linux)为应用程序提供了广阔的平台,而在操作系统中,大部分代码以高级语言(C/C++)为主编写。面向对象的高级语言和面向应用的开发工具为各种平台的应用软件提供了高效快捷的编程手段,特别是随着网络技术的发展,基于Internet的程序设计与开发成为了当前的热点,学生对在C/S与B/S结构下基于J2EE虚拟平台的程序设计的学习热情高涨,汇编语言所占的份量大大降低。
同时在目前汇编语言的教学过程中,普遍存在的问题就是主流的微型计算机已经进入了32位和64位的时代,多任务的操作系统取代了DOS,而绝大多数高校汇编语言课程仍然是单任务操作系统DOS下的8086汇编语言,主要教学内容是在学习8086CPU基本结构以及指令集的基础上,在DOS环境下通过软中断对BIOS和DOS系统功能的调用来开发应用程序,尽管386体系结构为基础的Pentium处理器也进入了教材,但是对于386体系结构的讲解仍是以实模式为主,对于保护模式的知识应用能力甚为空泛,给学生的印象是所学的汇编语言知识跟不上时代发展的步伐。又因为汇编语言和机器的体系结构结合紧密;使用者需要对计算机的组成、硬件的控制和指令的解释过程有比较清晰的掌握;程序的移植性不好,程序的编译调试比较麻烦;编写出吸引人们感官的程序比较困难。因此,学生在汇编语言的学习中产生厌烦情绪,对汇编语言的学习热情普遍不高,有的学校减少了汇编语言教学的课时,甚至干脆取消课程。而有些高校则开始采取各种手段从教学内容和方法等方面对汇编语言课程进行改革,以跟上时代发展的步伐。如北京理工大学计算机学院从教材建设、教学内容和方法等方面进行了大胆的改革,有效地提高学生的学习积极性
【1,2】。
2、教学方法研究为了提高学生学习汇编语言的积极性,就应该针对汇编语言学习的难点来一一破解。一种观点是认为汇编语言知识跟不上时代发展的步伐,这一点应该从第一节课时就改变学生在认识上的误区,要告诉学生汇编语言的应用领域,如我们天天使用的计算机本身的初始化、系统引导启动程序等操作系统的核心部分都是用汇编语言来实现的,目前流行的嵌入式系统的硬件的检测和控制部件也都是由汇编语言完成的,还可以找适当的机会给学生介绍一下计算机病毒的工作机理,从而提高学生学习汇编语言的积极性。
针对于汇编语言和机器的体系结构结合紧密,抽象性强,难于理解的问题,在讲解指令系统时,要与CPU的功能结构结合起来,把地址、数据和控制信息的传递要通过图示进行分解。如讲解指令 MOV AL, [3008H],这是一条传送类的指令,即将偏移地址为3008H的存储单元中存储的信息送回CPU中的累加器AL寄存器中,如果这样讲,学生很不容易明白,因为他们之前学过的语言都没有涉及到CPU的内部部件,而且也不会在程序中直接提供存储器的地址信息。因此为了让学生明白这条指令的含义,可以在课件中画出CPU的功能结构图以及与内存和I/O接口的之间的系统总线,然后通过动画演示执行整条指令的全部过程为:从指令队列中读取指令,通过译码器译出指令的功能,然后将偏移地址3008H通过内部总线送至总线接口部件,通过20位的地址形成部件与16位数据寄存器DS的内容结合形成20位的物理地址,通过控制部件发出存储器读命令,存储器将所存储的信息通过数据总线送至总线接口部件,通过内部总线送至AL寄存器中,在每一步中都要用图显示出数据的流向以及时序。在指令系统讲解的初期对某些具有代表性的指令进行这样详细、逼真的讲解,可以极大地增强课程的可理解性,使得学生提高对指令的感性认识,继而大大增强学生的学习兴趣。
在学生编写汇编程序的初期,往往会认为程序调试麻烦,这是因为汇编语言相对于其他高级语言来说比较抽象,实验结果不容易检验造成的。简单的汇编语言实验结果往往是存储在CPU内部的寄存器或者内存当中,不能够很直观的看到,因此掌握好汇编语言的调试程序DEBUG是一个非常重要的工作,通过DEBUG可以观察到寄存器的内容和存储器的内容,同时通过T命令,可以跟踪每条指令执行后寄存器和存储器的变化,这是调试程序和发现逻辑错误的非常有效地手段。但是要灵活的掌握DEBUG的各种功能就要记住它的各种命令,因此需要在课堂上花费一定的时间来讲解各种命令的用途,同时需要演示它们的使用方法,因为这是学生从前没有接触过的一种技术。一旦学生真正的掌握了DEBUG的应用方法,对深入了解计算机的工作原理和指令系统将起到直接和不可替代的作用
3、实验教学平台的设计实验教学是检验和巩固已学知识的一个必要手段,同时是培养创造性的关键环节,也是教学改革的一个重要方面。然而学生在学习汇编语言这门课程中,对所学知识缺乏必要的感性认识,因此实验环节在整个教学活动中就占据了举足轻重的地位。
然而,传统的80X86汇编语言实验一般都是在DOS环境下进行的
[3],具体过程(如图1所示)为用编辑程序(如EDIT命令)编写源程序,然后用编译程序(MASM命令)将源程序编译成目标程序即.obj文件,然后用连接程序(LINK命令)将目标文件转换成可执行文件,在DOS环境中执行这些命令时,后面往往需要紧跟各种参数,这些会给学生带来很多额外的负担,而且在一个源程序进行编译连接的过程中往往不能一次通过,可能会出现各种错误,这样上面的过程会多次的重复,因此在DOS的命令行上要频繁进行上面的操作,非常的繁琐,容易引起学生的厌倦情绪。
1/2 1 2 下一页 尾页