APP下载

汇编语言的对比教学法

2011-12-31陈逸菲赵丽玲张颖超叶小岭

计算机教育 2011年24期


  摘 要:将汇编语言与C语言、数据结构等课程之间的知识点进行对比教学,可以帮助学生更好地掌握汇编语言,提高学生学习汇编语言的信心。文章给出了一些具体的教学实例,包括逻辑运算指令、堆栈指令、数组访问和程序结构教学等。教学实践验证了教学方法的有效性。
  关键词:汇编语言;对比教学;C语言;数据结构
  
  
  1 研究背景
  众所周知,汇编语言是从机器的角度出发的,与贴近人们思维的高级语言相差较大,学生刚接触时一般都觉得比较难。即使专门开设汇编语言课程,要学生较好地掌握也非易事。而电气信息类专业,如自动化、信息工程等专业都将微机原理作为专业课,在此之前一般不专门开设汇编语言课程,作为微机原理课程的一部分,汇编语言只占十几个课时,无论是老师讲授还是学生学习都更有难度。但是这部分内容作为基础,是学生较早接触的。根据经验,如果汇编部分掌握得不好,学生有可能会对整个课程的学习失去信心。因此在教学过程中,应该尽可能采取一些方法帮助学生尽快适应汇编语言的思维方式和编程风格。
  笔者所在的学校,C语言是所有工科专业的公共课,学生一般都比较重视;自动化等专业还开设了计算机软件技术基础这门课,内容涉及数据结构、操作系统等。在汇编语言的教学中,我们尝试与这两门课程的一些知识点进行关联和比较,对比教学方法做了一些探讨。
  2 对比教学探讨
  2.1 逻辑运算
  C语言中有逻辑运算符和位运算符之分,与汇编
  
  语言逻辑运算对应的是C语言的位运算符,对应关系如表1所示。
  而C语言中的逻辑运算符为:与(&&),或(||),非(!),用于对包含关系运算符的表达式进行合并或取非。对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。在教学过程中需要提醒学生注意它们的区别和对应关系。
  2.2 栈运算
  在讲入栈、出栈指令时,学生已经在计算机软件技术基础或数据结构课程中学习了栈这种结构,对于栈的“先进后出”的特点应该已经掌握了。但是两门课程在细节上还是有区别的,见表2。汇编语言中讨论的栈属于运行时栈(runtime stack),是由CPU内部硬件直接支持的,在系统层上处理子过程调用[1];而数据结构中的栈抽象数据类型通常用于实现依赖于后进先出操作的算法,一般用高级语言编写。数据结构教材上的栈一般习惯于从低地址往高地址生长,但是并不是非要这样,也可以自己实现符合8086汇编语言中的从高地址往低地址生长的栈结构。
  作者简介:陈逸菲,女,讲师,研究方向为模糊信息处理、时空数据库;赵丽玲,女,讲师,研究方向为图像处理与模式识别;张英超,教授,博导,研究方向为复杂系统建模与仿真、网络控制技术,主持建设的微机原理课程于2010被评为“江苏省精品课程”;叶小岭,教授,研究方向为优化方法与最优控制、智能仪器仪表。
  2.3 数组元素的访问
  汇编语言程序中经常需要对一个连续的数据块进行操作,例如,求以array为首址的连续30个数的和。这与C语言中对长度为30的数组求和是类似的。利用数据伪指令可以实现C语言中数组定义的类似功能。C语言中数组名arrary对应着数组首地址,在汇编中用类似“MOV