黄 驰,吴 昊,谭荣丽
(南宁师范大学师园学院,南宁 530226)
汇编语言是一门面向机器的计算机语言,它使用的英文助记符和二进制形式的机器指令有着一一对应的关系,并与相应的计算机硬件结构密切相关,有操作直接、运行效率高等优点,也有入门不易、可读性不强等缺点,通常用于比较底层的系统开发。
虽然计算机程序设计的初学者直接使用汇编语言进行系统开发的机会并不多,但是由于汇编语言与计算机硬件结构及机器指令的特殊关系,通过汇编语言的学习,人们可以尽快熟悉计算机硬件结构,理解计算机基本工作原理,培养计算机思维,为进一步提高计算机软硬件的应用开发能力打下良好的编程思维基础。因此许多高校包括独立学院都开设了汇编语言程序设计课程。
独立学院是一种新型高等教育办学形式,较公办本科院校而言,办学历史比较短,办学条件还不成熟,教学和管理经验还需进一步积累,对教学成本的付出比较敏感。此外,独立学院高考招生录取分数线主要介于普通本科和高等专科之间,其学生与普通公办本科学生相比,知识基础、学习方法和效率、学习自主性等方面有很多的差异,具体表现在以下几个方面。
(1)没有充分养成课前提前预习和课后及时复习的良好学习习惯,很多学生还是觉得上课就是学习的全部环节,上完课学习任务就算完成。由于学习投入不足,学生无法对知识点进行前后联系,常常导致知识结构没有系统化和条理化。
(2)没有充分发挥学习的主观能动性,不少学生遇到学习困难,如上课听不懂等情况,就产生逃避畏难情绪,进一步导致厌学心理。准备考试的时候,临时抱佛脚,随便混个及格了事,离既定的人才培养目标渐行渐远。
(3)没有充分认识到学习理论课程内容的重要性。不少学生因为长期受到社会上不良思潮的影响,总认为理论课程内容太抽象,不实用,学不学无所谓,不懂得“没有正确的思想很难有正确的行动”的道理,不重视理论课程内容学习,导致理论知识不够全面,从而无法承担系统开发设计的任务。
因此,需要认真研究分析在独立学院汇编语言程序设计课程教学中出现的实际问题,提出切实可行的解决方案。
通过多年在独立学院汇编语言程序设计课程的教学实践,笔者发现有3 个实际问题对教学效果产生重要的影响.
(1)课程内容客观上难度比较大。由于面向机器的特点,学习汇编语言程序设计不仅需要学习程序设计的相关软件编程知识,也需要学习理解相关的硬件结构知识。对于不少独立学院的学生而言,学习内容的客观压力比较大。例如,汇编语言编程学习中必不可少的各种寻址方式应用就需要对存储器结构管理组织以及中央处理器的相关寄存器组有正确的认识和理解。所以学习这门课程无论从广度还是深度来说,难度都比较大。
(2)相关的教材课本前后内容展示的知识常常在结构上互为支撑、相互关联,这无疑也大大增加了学生的理解难度,打击了学生的学习自信心。例如,课本教材常常会先介绍相关中央处理器的工作寄存器组(如8086 的代码段寄存器、堆栈段寄存器、指令指针寄存器、堆栈指针寄存器等),但是这些寄存器的工作原理需要在后面的章节中介绍。因此,学生一开始学习这些前后知识结构互为支撑、相互交织的教材课本内容时,不容易找到正确的切入点,增加了学习失败的概率。
(3)汇编语言编译环境(字符界面)与高级语言编译环境(集成化图形界面)的巨大操作差异,增加了学生学习过程中编程调试实践环节的入门压力。汇编语言编程常用的编译工
具通常使用纯字符界面进行人机交互。这种交互方式需要学习者改变在学习高级语言编程中养成的使用集成化图形界面编译工具的操作习惯,学会使用键入字符形式的人机命令逐步完成编译、链接、调试、运行等编程实践步骤,对学习者来说增加了学习的烦琐复杂程度,具有一定的挑战性。例如,8086 汇编语言常用的微软公司编译器MASM 5.0 运行在字符界面的磁盘操作系统(Disk Operating System,DOS)环境下,正常使用这个编译工具就需要对DOS 字符界面的常用命令(如更改当前目录命令、显示文件及目录命令、编辑命令等)有所熟悉,同时编译器、链接器和调试器本身的使用也需要字符人机命令(如Link、Debug、Q、G、D、T 等)来操作控制。
笔者在多年汇编语言程序设计课程的教学实践中,结合独立学院的办学条件和其学生的学习特点,针对上述问题总结了一些解决问题的教学思路,具体如下。
(1)根据学生自身学习能力,合理安排学习步骤及内容。对于本课程,学习者的首要任务应该是正确理解计算机硬件结构的工作原理及设计思路,然后再学习相应的指令寻址方式和指令系统,在充分夯实理论原理的基础前提下,进一步开展适当的编程实践内容的学习。通俗地讲,就是先读懂课本的相关理论内容,再开展实践环节的学习。学习者在刚刚开始入门阶段不宜树立过多目标,编太多程序,其主要的目标应该是把教材读懂,正确理解相应的原理和思路。在难度比较大的课程学习过程中,把目标定得越单一就越容易实现,这样就有可能形成一条清晰的学习主线,把学习的难度和强度控制在可以承受的范围内。
(2)有效地进行学习时间的管理。由于课程内容难度比较大,教师在课堂教学学时安排上需要有一定保证,除了学时长度要合理之外,也应当注意尽量不要将这门课的上课时间安排在其他需要消耗大量脑力、体力的课程之后(如高等数学和体育)。这样更有利于帮助学生集中精力学习理解抽象的理论知识。同时对学生的课后学习时间的管理,建议课后学习时间与课堂教学时间的比例为6∶1,通过科学合理有效地安排学习的步骤、内容和时间,使学生可以承受相应的学习难度和强度,提高学习成功率。
对于课本前后内容展示的知识结构互为支撑、相互关联,增加学生理解难度的问题,可以通过积极引导学生采用建构式学习方法预习和复习来减少其对学习的消极影响解决。教师在课堂上可以明确指出前后关联的知识点,引导学生利用课前预习和课后复习的时间大胆假设,小心求证,通过反复多次引导学生进行前后相关章节的细心研读和推敲,将相关知识内容相互联系融会贯通,不断构建和完善脑海中计算机工作原理模型。这样不仅有助于学生计算机思维的培养,也可以使其逐渐具备独立思考和探索未知领域的能力。
例如,在介绍中央处理器的工作寄存器组时,教师可以清晰指出教材中与这些寄存器的使用原理相关的后续内容章节所在之处,布置相应的预习任务,引导学生更有效率地预习。
(1)可以使用微课慕课等视频教学手段,辅助学生在课后进行重复多次的进行操作环节复习,减少学生因为操作和理解速度跟不上教师演示操作速度而产生的挫败情绪。
(2)运用案例法教学,使用一个简单的源程序实操编译过程为例,充分展现DOS 和宏汇编程序操作步骤和特点,引导学生积极理解每一步操作相应人机交互命令的原理和内在逻辑关系,这样使学生更容易记忆和灵活应用,提高他们分析问题和解决问题的能力,防止仅仅依靠死记硬背操作步骤应付式完成实践任务。
(3)注意引导学生使用正确的方法完成程序的调试。汇编语言编程过程难免会有错误,如何发现错误、改正错误是调试程序过程中很重要的环节。首先,程序运行前应该进行充分的静态检查,分析出容易出错的地方,然后按照模块化编程调试等方法制定调试方案并执行,从而减少错误搜索范围,最终找出错误并改正。同时在汇编语言的学习过程中,应安排一些比较容易观察结果并直接反映计算机内部工作原理的实践内容,这样更有利于学生把注意力集中在理解计算机的工作原理上,更有效地培养他们的计算机思维。
例如,可以使用串传送指令(Move String,MOVS)的应用编程实例,通过Debug 调试软件的显示功能(命令D)将内存相应区域的存储器单元内容变化清晰地展现出来,通过单步执行命令T 可以看到每一条指令单步执行后中央处理器各个寄存器的状态变化。
为了让学生学会使用DOS 显示功能调用,可以为学生布置一个实操编程实验任务,在屏幕上显示自己的名字拼音和学号,学生完成后对DOS 功能调用会有一个比较深刻的理解。
学习好汇编语言程序设计课程对于绝大部分学生来说不是一项轻松的学习任务,本文总结了独立学院在汇编语言程序设计课程教学过程中存在的一些问题,并针对性地提出一些解决思路和实现方法,以提升学生的计算机思维和自主学习的能力,培养高素质的计算机应用型人才。