浅谈高职教学中汇编语言与C语言的巧结合

(整期优先)网络出版时间:2009-08-18
/ 2

浅谈高职教学中汇编语言与C语言的巧结合

巩雪洁

【关键词】汇编;C语言;

教学微机原理与接口技术是高职高专计算机及相关专业必修的一门专业基础课,同时也是一门实践性和应用性很强的课程。汇编语言程序设计是其中非常重要的一部分,汇编语言程序设计是我们和计算机沟通最直接的方式,如果我们想从事计算机科学方面的工作的话,汇编语言的基础是必不可缺的,我们通过汇编语言和机器交流,尤其在和硬件关系非常密切的程序或要提高运算速度的程序,汇编语言能够很好扬长避短,最大限度地发挥硬件的性能。但汇编语言依赖于硬件,知识点多,学习难度较大。而高职学校大学生文化知识基础较差,文化素质也相对较差,由于高职院校高考录取分数较低,所以高职院校的学生生源文化知识基础相对较弱,他们的学习动力不足,学习积极性不高。这样就给教学带来了很大的问题,很难收到预期的效果。因此对于抽象的概念和工作原理,老师要精心设计课堂教学,使晦涩难懂的知识变得浅显易懂。C语言作为一门基础和先驱课程在此时就起到了很好的借鉴作用,由于C语言的重要性大部分学生掌握较好,基于语言的相通性,于是,在汇编语言相关教学中以C语言作为对照展开讲解收到很好的教学效果,也增进了各科之间的知识和方法上的联系。学生是教学的主题,能让学生理解是很重要的,如何借C语言之力讲解汇编语言知识,以下是笔者应用的几点:

1.传送指令部分

MOV指令是8088指令系统中首要讲解的一个指令,也是汇编程序设计中使用最频繁的指令,教学中我们应强调对操作数的要求。有几点我们可以用C来对比解释:

1.1传送类似与C语言中的赋值,只是在这里是给寄存器或存储单元赋值而已,其实C语言中的变量名本身就是一个符号地址,最终应对应到存储器的某些存储单元。

1.2两操作数的类型匹配问题C语言中已做了强调,汇编中类型匹配也是一个重点,与C语言类似这里是操作数的位数要保持一致,只是在8088中常用的类型只用字节和字而已。

1.3强制类型转换。C语言中用到了,学生也会用,汇编中又如何实现呢,很自然地我们就可以引出BYTEPTR和WORDPTR这两个操作符。当然他们是有区别的,要做解释。

2.指针概念的引入

教材中经常要对一个连续的数据块进行操作,如求以DATA1为首址的连续16个8位数的和。我们可以先提出这样一个问题:“在C语言中,求长度为16的数组a的所有元素之和,应该如何编程?”,会有一部分同学回答从第一个元素起依次累加,也会有学生回答从最后一个元素开始倒着累加。此时,我们再进一步提问:“如何找出每一个数呢?”,会有学生回答使用下表法引用数组元素,也会有学生回答用指针,这时我们要强调c语言中的数组名表示的就是数组的首址,不管用下表法还是指针都是为了找到该数的地址,这样,指针就很自然地引出来了。我们只要告诉学生在汇编中用类似“MOVDI,OFFSETDATA1”或“LEADI,DATA1”的指令就可以使指针DI指向数据块的第一个单元,找其后的元素只要通过指针的下移即可实现,即“INCDI”,此指令又类似于c语言中数组元素下标的“i++”或指针的自加一操作。然后我们还应启发学生结合c语言的编程思路来编写汇编语言程序段,其实算法思路是一样的。经过实例的解析,以后只要遇到处理数据块的题目,学生都能自然地联想到C语言中的解题思路,熟练地应用指针来解决问题,甚至可以达到一题多解。

3.变量定义和使用方面

C语言中一般用“类型说明符变量名;”格式来完成对变量的定义,同时也可以对变量进行初始化,C语言中数据类型很丰富。汇编中使用“[变量名]类型定义伪操作符操作数[,操作数……]”来定义变量,其中数据类型只有5种,常用的有两种。在教学中我们若两相对照(类型种类,初始化等方面)来介绍汇编的变量定义,学生会很快接受。但是他们还是有很大不同的,例如在C中我们可以用“charDATA=98”来定义一个字符变量,并给其赋初值98,在汇编中若用“DATADB11,33,55”定义DATA这个变量,肯定有学生提出疑问,难道DATA初始值是113355或同时赋了3个初值,这时我们就要说明C语言中定义的DATA只能对应一个存储单元,而汇编中的DATA其实表示的是一个存储区的首址,此区域有3个存储单元,并依次初始化,由DATA+1我们就可以访问33这个数,以此类推。

4.如何引入DOS功能调用

在程序设计中我们经常要考虑到数据的输入输出,在汇编语言中输入输出是通过调用DOS的系统功能来实现的。教学中我们可以先问学生“在C语言中如何实现数据的输入输出?”。绝大部分的学生都能够想到使用scant函数实现输入,printf函数实现输出。这时我们不去深究这两个函数的格式,我们要强调它们是C语言的系统函数,使用时只要给定参数就可以实现输入输出,C语言中的输入输出函数很多,包含于“stdio.h”头文件中。此时我们提出在汇编语言中是通过调用“DOS系统功能”来实现输入输出的,其中关键语句“INT21H”就类似于包含了整个头文件,若要使用某种功能还要给出功能号送与AH,再考虑参数传递的问题,我们就可以给学生总结出DOS功能调用的四个基本步骤了。接下来就可以给学生介绍常用的功能了,我们主要采用案例教学法,再配合适当的习题就可以达到很好的效果。

5.关于汇编语言程序设计的上机步骤

学生们都清楚地知道C语言的上机步骤,在进入turboc环境后,分四步进行:编辑源程序,生成后缀名为.c的C语言源程序→编译生成obj文件→连接生成exe文件→运行。

汇编语言程序设计的上机步骤与此类似,我们要强调每一步生成的文件类型,以便学生更清楚地认识为什么要这样做。但我们还要指出两点,一是汇编的环境是masm环境,如c语言一样只要装入对应的文件夹即可;二是在编辑中获得是后缀名为.asm的汇编语言源程序。接下来我们就可以通过一个具体的例子在电脑上一步步演示具体的汇编语言程序设计的过程,然后再通过实践课让学生练习。

6.结束语

以上只是我在教学中用到的几点,已经收到了很好的教学效果,由于语言的相通性,在整个汇编语言教学中还有很多地方可以把C语言知识贯穿其中,借助学生已学的知识来接受新的知识,这样汇编语言的学习就变的有趣,学生学得也有劲头,更提高了学生对C语言的更高层次上的认识,间接地对其他学科的学习也起到了很大的帮助作用。参考文献

[1]沈美明.IBM-PC汇编语言程序设计,清华大学出版社,1991。

[2]苏传芳.C语言程序设计基础,北京:电子工业出版社,2008。

[3]相岁女.论高职教育,《微机原理与接口技术》,教学的思考。(作者单位:安徽电子信息职业技术学院)