以实践教学来增强“汇编语言”的教学效果

时间:2022-08-31 09:16:31

以实践教学来增强“汇编语言”的教学效果

摘要:本文阐述了汇编语言课程的地位,对我国高校现有的汇编语言开发环境进行了分析,针对实验教学手段滞后的问题而开发了一个集成教学环境,旨在加强汇编语言的实践教学。

关键词:汇编语言;集成开发环境;实践教学

中图分类号:G642

文献标识码:B

文章编号:1672-5913(2008)06-0019-03

1教学现状及存在问题

在目前汇编语言的教学过程中,普遍存在的问题就是主流的微型计算机已经进入了64位时代,多任务的操作系统取代了DOS,而绝大多数高校汇编语言程序设计课程仍然是单任务操作系统(DOS)下的8086汇编语言,给学生的印象是跟不上时展的步伐。加之,汇编语言和机器的体系结构结合紧密,使用者需要对计算机的组成、硬件的控制和指令的解释过程有比较清晰的掌握;程序的移植性不好;指令众多,且同种类型的操作(算术、逻辑、转移等)要根据操作数和状态标志选择不同的指令(如无符号的运算与带符号的运算、条件转移等);运算中要根据数据长度悬而选择不同的寄存器;程序的编译调试比较麻烦;编写出吸引人们感官的程序比较困难。因此,学生在汇编语言的学习中容易产生厌烦情绪。有的学校减少了汇编语言的课时,还有的学校甚至干脆取消了这门课程。

2“汇编语言”课程的地位

汇编语言机器级在高层机器和低层机器间扮演了承上启下的角色,是计算机及相关专业学生需要掌握的重要专业基础知识之一。

从应用场合来看,汇编语言是能够利用计算机所有硬件资源并能直接控制硬件的唯一计算机语言,也是除机器语言之外最接近计算机硬件的编程语言。汇编语言程序产生的代码精简、运行效率高,具有高级语言不可比的“时空”优势;汇编语言在一些应用如嵌入式系统和工业控制中,汇编语言最最佳的甚至是唯一选择的开发语言。在一些实际的应用系统中,人们往往会用汇编语言来彻底重写某些经常调用的过程以期获得更高的性能。

汇编语言为“计算机组成原理”、“计算机接口与通信”、“操作系统”、“高级语言程序设计”等相关课程提供了必要的基础知识,如图1所示。

图1 汇编语言和其它课程的关系

从人才培养方面来看,计算机专业的学生不应仅仅满足于利用他人开发的软件和工具来解决实际问题,还应具备分析、研究原有软件系统,改进、完善、提高原有系统功能的能力。汇编语言的教学将使学生受到更严密、更系统的程序设计及思维方法的训练,为深入分析、研究、开发软件系统打下良好基础。

3加强实践教学

为了提高汇编语言教学的效果,笔者认为应该从以下几个方面入手。

(1) 清理认识上的误区。在上第一堂课时,用一个课

时来讲汇编语言的特点及其应用场合、它和高级语言区别、其难点在哪里、本课程该如何展开等内容,从而打消学生畏难和轻视的思想。

(2) 要充分利用好计算机辅助教学(CAI)的优势,要让课件“动”起来。目前普通本科计算机专业的教学大都采用了CAI教学,但大都是播放课件(如PPT),实质上是用鼠标代替了粉笔、屏幕代替了黑板。而且由于播放的速度远快于板书,学生反映根本来不及仔细理解有关内容,效果反而不如板书。多媒体教学提供了视觉、声音的特殊效果,在对重点、难点问题的讲授中要充分利用多媒体教学的优势。如讲授指令ADD AX,[2000H],如果是静态的课件,就是一句“这是一条加法指令,把累加器的内容和逻辑地址为2000H存储单元的内容相加,运算结果送回累加器”。而动态的课件会先画出一个模型计算机,然后演示该指令解释的全过程:从CPU内存中取出指令、译码、数据寻址(从寄存器和内存中取得操作数)、启动ALU运算、保存结果到累加器和影响状态标志寄器。每一步都要图示化出数据的变化和走向以及相应的控制时序。在声音和显示控制的程序设计教学中,更应展示多媒体教学的风采。多媒体教学丰富的动感效果能极大地增加学生对指令的感性认识,增强他们学习的兴趣。当然,制作这样的课件耗时耗力,学校应该切实加大对CAI教学的支持力度。

(3) 在汇编语言的教学中要加强和高级语言的比较教学。在学习汇编语言时,学生一般都具有了C语言程序设计的知识。在汇编语言程序设计的教学过程中,应该比较这两种语言的编程特点、程序代码空间、运行速度等,以加深学生对这两种语言的理解。如在讲授基址变址寻址方式中,可以用C语言和汇编语言分别实现对数组运算的实例来阐述。要加强高级语言(C语言)和汇编语言的混合编程的教学,充分阐述C语言结构化设计和汇编语言对机器低层(存储器、寄存器、中断处理、I/O)控制的优点。这样即可充分调动学生的学习积极性,也可以培养学生解决具体应用的能力。

(4) 加强操作系统相关知识的渗透和虚拟模式下的编程教学。目前操作系统的核心部分是用汇编语言来实现的,如对CPU本身的初始化(包括定时器、中断、I/0端口等的初始化);系统引导启动程序的完成;在处理器的控制下从实模式进入保护模式,实现虚拟存储器的管理和多任务的调度。将该部分引入到教学中是有必要的,能加强学生对操作系统中内核引导启动与驻留、保护模式和实模式的切换、多任务的调度等知识的理解。在讲授操作系统对程序的引导和进程的调用时,适当介绍计算机病毒的机理,以提高学生的学习兴趣并扩展知识面。

(5) 要切实抓好实验教学环节。课堂主体教学和一般作业很难让学生真正领会本课程涵盖的概念、原理、方法和技巧等。经验表明,学习并真正掌握汇编语言程序设计的最好方式是充分实践。实验教学和课堂主体教学“两手都要硬”,在课时分配上达到1:1。

4建立实验教学平台

传统的汇编语言上机实验一般是在DOS环境下的进行,如图2所示。而DOS逐步被淘汰,目前流行使用Windows操作系统平台,学生对DOS的使用相对陌生。尽管Windows保留了DOS的工作方式,可以切换到DOS提示符下操作,但是对建立文件夹(目录)、进入文件夹(目录)、删除文件等操作,学生们常返回到Windows环境中来完成,显然会影响上机的效率和增加编程的繁琐,同时也不利于WIN32虚拟模式下的教学。

图2 汇编语言程序开发的传统操作过程

因此,必须建立基于Windows操作系统的W32汇编语言集成实验环境,该环境是一个集编辑、编译、连接、程序调试和帮助于一体的实验平台。笔者主持的课题组经过系统的调研、编程和测试已开发出一个汇编语言集成编译系统,该系统已成功应用到本课程的实验教学中,效果较好。系统的运行界面如图3所示。

其次,要精心编写实验指导书和安排实验内容,组织好课程设计。结合目前广泛使用的PC机的Intel 80x86指令系统来开展教学,通过在集成环境下汇编语言的上机实训,加深学生对指令系统和汇编语言程序设计的认识和理解。实验的内容可以组织如下:

(1) 指令系统。用DEBUG调试工具来熟悉指令功能和寻址方式,掌握简单程序的调试。通过实验了解CPU的组成,熟悉8086/8088寄存器组、8086/8088存储器组织、8086/8088标志位的意义。

(2) 汇编语言程序设计。包括顺序程序设计、循环程序设计、分支程序设计、子程序设计和宏汇编程序设计等实验。掌握各种程序结构的设计方法,了解宏汇编、条件汇编和模块化程序设计等汇编语言程序的概念,掌握宏汇编程序设计的基本方法。

(3) 输入输出与中断。包括输入输出程序设计、中断处理程序编写、常用系统中断(如时钟显示、键盘和显示器、使用鼠标的程序设计)控制等实验。

(4) Win32汇编语言程序设计。包括32位微处理器与32位指令、保护模式下的32位汇编语言程序设计等实验。

(5) 汇编语言与C/C++的混合编程。主要包括C/C++程序与汇编语言程序的连接、嵌入汇编与模块调用等。

图3 汇编语言集成开发环境

参考文献

[1] 沈美明. IBM-PC汇编语言程序设计[M]. 北京:清华大学出版社,2001.

[2] KIP R. IRVINE. Assembly Language for the IBM-PC[M]. Prentic Hall INC,1993.

[3] 李学干. 计算机系统的体系机构[[M]. 北京:清华大学出版社,2006.

[4] 金海溶. 用实验方法改革汇编语言的教学[J]. 计算机教育,2006,(1):36-37.

[5] 田庆. 汇编语言程序设计课程的教学探讨[J]. 电器电子教学学报,2007,(2):14-15.

[6] 冯建文,包健. “汇编语言程序设计”课程的教学改革与探讨[J]. 吉林大学学报(信息科学版),2005,(23).

[7] 刘跃华. 智能化的汇编语言集成编译环境[J]. 计算技术与自动化,2007,(3).

上一篇:编程语言教学实践中渐增式验证序列IVS探讨 下一篇:计算机专业图形图像与多媒体类课程教学研究