首页 > 文章中心 > 汇编程序

汇编程序

汇编程序

汇编程序范文第1篇

关键词:汇编语言程序设计;教学改进

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)09-2111-02

Teaching Thinking of Assembly Language Programming Course

LUO Xing

(Hanshan Normal University, Hanshan 521041, China)

Abstract: This paper discusses the problem appear in teaching of assembly language programming course, propose some methods to improve student's ability to master the knowledge and learning interest. Discuss the assembly language teaching in Win32 platfrom in the last.

Key words: assembly language programming; teaching improvement

1 汇编语言程序设计课程教学现状

汇编语言程序设计作为一门计算机专业的课程,其存在的合理性在近年受到争议。有些人认为,汇编语言作为一种低级语言,指令繁多,难以掌握。另外,编程效率也不高,一个高级语言用一条语句实现的功能,在汇编语言中需要很多条指令才能实现。此外,汇编语言在时间上和空间上的优势由于高速CPU和大容量存储器的出现,也变得意义不大。

我认为学习汇编语言仍然具有重要意义。可以归纳如下:

1) 可以比较深入了解计算机硬件的底层工作原理,例如:CPU的工作模式,寄存器的概念,内存的寻址方式,中断的工作原理等。

2) 熟悉各种数据表示方法。如各种数制的转化,各种类型的数据在内存中的存储方式。学生在系统学习汇编语言程序设计这门课程后,对二进制,十进制以及十六进制相互间的转换应该非常熟练。对数据在内存中两种排列方式即大端方式(Big Endian,低地址存放高位字节)与小端方式(Little Endian,低地址存放低位字节)有清晰的理解。而这些相关的概念的牢固掌握对高级语言中的数据类型以及计算机网络编程的学习具有很大的帮助。

3) 通过汇编语言编程学习,可以促进对高级编程语言相关概念的理解。高级语言在编译的时候,一般都是先生成汇编代码,然后再生成的二进制代码。所以,通过对比分析汇编代码与高级语言代码的实现方式,对程序的执行效率,数据在内存中存放方式,堆栈的概念,函数的调用及参数传递的方式等都会有进一步的了解。

在教学中,我也遇到一些问题。一方面就是学生的积极性不高。主要原因包括:指令很多,难以记忆。对于几个大类的指令,如果每次课上一类,学生课后如果不进行主动复习,往往到下一次课的时候,就会忘记前面所学的内容或者发生混淆。另外,在学习汇编课程之前,他们已经学过一门高级语言,如C/C++等,汇编语言的学习方式与高级语言的学习方式有所不同,高级语言比较容易上机练习,也容易对程序运行结果验证,对于开发实用软件也相对容易,所以学生的兴趣比较大。而汇编语言一方面涉及到底层的硬件概念,比较难以理解,另一方面上机也比较困难,可以这么说,如果按照课本的顺序讲课,要到差不多讲完课,学生才可以上机完成一个功能比较完整的程序。

2 促进学生对知识的掌握

要解决这些问题,我认为要在学生的知识掌握方式以及学习兴趣的培养上下功夫。对于知识的掌握,除了每次新课内容讲完后,精心给学生布置作业习题之外。还应该注意到由于汇编语言的指令及相关的知识点很多,对于刚接触这门课程的学生一开始往往不大适应,容易混淆前面学过的内容,所以教师及时对所学过知识点进行比较和总结就很有必要。此外还应该定期对学生的学习效果进行检测,从过去的教学经验看,汇编语言这门课程是学生比较容易与教师的教学进度脱离的一门课程,不少学生在一开始由于在掌握知识遇到困难,问题越积越多,最终可能放弃听课。在检测的方法上,可以借助网上考试系统。教师可以自主出题,也可以让系统自动出题。通过分析学生的测试结果,教师可以及时调整教学进度,学生也会有一定的学习压力,使他们花更多时间查补缺漏的知识。

程序设计学习的最佳方法就是上机实践。汇编语言上机练习跟高级语言的上机练习相比,对于学生来说比较困难。一方面是由于一个完整的汇编程序涉及的知识点很多,而教材往往按知识点分类进行编排。所以学生要想在刚开始学习阶段,就编出完整的程序有一定的难度。另一方面,汇编程序的运行结果较难在屏幕上输出,汇编语言只有字符与字符串的输入输出,对于一道简单的算术运算题目,其结果的输出都要通过一大段的转换程序来实现。对于第一个问题,教师可以对教材内容进行选讲,把实验所涉及到的知识点先进行讲解。对于第二个问题, 我认为应该重点培养学生熟练使用调试工具的能力,通过掌握调试工具如DEBUG,CV等的使用,一方面学生可以直接观察程序的运行结果,另一方面,对于程序的逻辑错误也可以进行跟踪、分析以及解决。此外,由于汇编语言作为一种低级语言,编程都由一条条指令进行构造,所以相对繁琐,应尽早让学生应用模块化思路,掌握子程序及宏的使用方法。这样把一些常用功能做成模块,如输入输出功能,以后学生在编程的时候就可以直接调用这些模块,从而专注于实验的其它方面。

3 提高学生的学习积极性

对于如何提高学生的学习兴趣,我认为主要让学生意识到汇编语言的作用。一方面可以引入一些接口技术相关内容,使学生熟练掌握中断的概念以及I/O指令,然后上机编写中断程序,在中断控制器(8259A)进行验证,由于这些实验有按键输入,有屏幕输出,还能直接看到程序控制设备的效果,所以学生兴趣会比较大。此外,教师也可以适当拓展一些知识,如嵌入式编程相关概念,有兴趣的同学可以在课后自主进行学习。另外,由于不少学生对硬盘相关的问题感兴趣,比如硬盘数据的存放方式,数据的修复等。可以引导学生对这些问题进行思考,然后通过汇编语言提供的I/O指令和中断子功能,编程实现对硬盘的MBR,文件分配表等数据结构的读取,备份,修复等功能。教师通过布置一些学生比较感兴趣的课外作业,并适当提供协助,往往能提高学生的学习积极性。

另外,在汇编语言的学习过程中,教师应该有意识引导学生将汇编语言与高级语言的各个对应的部分进行比较。学生在学习汇编语言之前,通常已经学过一门高级语言,如C/C++等。高级语言在编译的时候,一般是先转换成汇编代码,所以它们具有相通性。大部分学生编写应用程序的时候是用高级语言,所以通过比较分析高级语言与低级语言在数据定义,程序流程控制,函数的定义及调用等的对应部分内容,对于学生更好的使用高级语言编写程序是很有帮助的。比如:汇编语言里有分段的概念,一般把变量定义到数据段,把代码定义的代码段。而C语言是把数据与代码都定义在一起,那么C语言编写的程序在编译成可执行文件后,它的全局变量,局部变量的空间是如何分配的。另外,对于动态内存分配,堆与栈的区别在哪里。还有函数的定义与调用,参数的传递顺序是如何的?这些疑问,都可以让学生编写简单的C语言程序,生成可执行文件后,然后通过调试工具进行反汇编进行分析。此外,在利用VC++,Dephi等IDE开发工具进行程序编写时,都会用到里面的调试功能。基本上调试功能都会包括反汇编与内存查看的功能,教师可以引导学生进行这方面的训练,使他们在以后编程时能熟练应用这个工具解决一些疑难问题,例如:内存非法访问,指针的非法引用等。

4 Win32平台下的汇编语言教学思考

目前很多高校在汇编程序设计教学中讲解的是8088/8086 CPU实模式环境,实际上是虚拟8086模式,因为真正的实模式工作DOS下,而现在汇编语言实验环境都是在windows 2000以上。由于现在大部分CPU都是32位以上,并且是工作上保护模式之上,此外这些CPU的寄存器类型以及寻址方式都已经发生较大变化。所以教师有必要对实模式与保护模式在逻辑地址转化为物理地址的方式的差异,还有16位与32位的指令在用法的不同点进行重点讲解。因为汇编语言现在的实际应用基本上采用工作于保护模式的Win32平台,在Windows操作系统控制下,汇编语言虽然不能再直接存取硬件,但是能通过调用系统提供的API函数完成各种功能。其实这里的API函数当于DOS下的中断调用,但是Window API函数无论从数量上、功能上还是易用性上都大大超过了DOS或BIOS的中断调用功能。所以现在在Win32平台下,汇编语言就像高级语言一样,可以方便的开发各种Windows应用程序。有些教师认为,既然在实模式讲解汇编语言很少涉及实用性,那就应该直接迁移到Win32汇编平台,讲解用汇编语言开发的Windows应用程序设计实例,从而提高学生积极性。我认为如果采用这种教学方法,可能会存在以下问题:首先由于上课时间有限,学生需要大量的时间才能熟练掌握各类指令,汇编语言的语法,程序结构等方面的知识。如果过多涉及Windows程序设计实例,对于不熟悉Windows编程机制的学生的来说,又多了一个不小的学习负担,这样子反而影响了汇编语言基础知识的掌握。另外,DOS下的实模式与Window下的保护模式下的编程在本质上并无很大的区别,只要学生熟练掌握各类指令用法,理解16位与32位的指令及寻址方式的区别,逻辑地址与物理地址转换机制等知识,他们就可以通过自主学习,较容易的掌握用汇编语言进行Win32应用程序的开发。对于教师,除了帮学生打好汇编语言的基础,可以适当以课外作业的形式,引入一些汇编语言在不同应用领域的简单实例,如加密与解密,软件的逆向工程等,这些课外作业的完成对学生汇编语言的应用能力的提高将会有不小的帮助。

5 结束语

汇编语言难教难学是教师与学生的共识,但是作为计算机科学中一门低级程序设计语言,通过对它的良好掌握,确实可以促进对计算机软硬件底层的了解,而这又能促进编程能力的提高。作为教师,在教学中应该不断尝新的教学方法,不断积累经验,只有这样,才能把这门课上好。

参考文献:

汇编程序范文第2篇

关健词:汇编语言;案例教学法;考核方法

中图分类号:G642文献标识码:A文章编号:1009-3044(2011)10-2459-03

Research on Teaching Method of Assembly Language and Programming

HE Li-xin, WANG Kun-lun, LIU Deng-sheng, WU Xiao-qin, TU Jing

(Key Laboratory of Net work and Intelligent Information Processing, Hefei University, Hefei 230601, China)

Abstract: At present,it is very hard to get a satisfied effect of teaching. This paper discusses how to get a better effect on teaching of assembly language by four facets. The four facets include that interesting the students in studying the course, and declining the difficulty of the course, and improving the teaching of experiment, and that a reasonable method of assessment is established. Practice proves the efficiency of this method.

Key words: assembly language; case methods of teaching; methods of assessment

《汇编语言程序设计》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。 在实际应用当中,可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,还可以直接被用于嵌入式软件开发之中,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。因此,搞好《汇编语言程序设计》课程的教学很重要,如何搞好该课程教学值得广大教师们探讨和总结。

1 现状分析

目前,汇编语言课程教学存在的如下问题:

1)绝大多数同学对汇编语言课程的目的认识不够,且错误地认为汇编语言已经过时,没有用,从而对这门课程的学习没有兴趣。

绝大多数学生把汇编语言作为一门纯粹的编程语言课程来对待,这是一个较大的误区,这从思想上和意识上把汇编语言放到一个普通的程序设计软件的位置,这样势必难以达到较好的教学效果。而本课程的一个主要目的就是让学生学习与认识基本存储控制思想、底层设备操纵方法、系统输入输出特点等内容,为学生在高层应用与底层的系统结构组织与实现之间架设一座桥梁,使他们能够建立一个完整的系统思想体系,为将来更好地应用和发展打下一个良好的基础[1]。

另外,目前直接用汇编语言编写软件的情况的确不多,所以有不少学生都错误地认为在高级语言盛行的时代汇编语言已经过时且在企业的实际应用中没有用途,因此对这门课程没有兴趣。

2)汇编语言难学,挫伤了学生对该课程的学习热情。

由于汇编语言程序设计涉及到计算机底层硬件,学习内容枯燥,需要记忆的内容繁多,起步比较困难,不像计算机高级语言起步容易并在现在的应用程序设计中占有绝对的优势,相对于汇编语言,高级语言接近人类的自然语言,易学易用,很多功能用高级语言里只要一条语句就可实现,而用汇编语言则要好几条甚至几十条语句才能实现,这在很大程度上挫伤了学生对该课程的学习热情。

3)实验内容枯燥无味,实验考核方法不够好,实验课效果差。

当前绝大多数学校的实验与实践环节的组织对学生学习汇编语言没有起到太大的帮助,汇编语言实验内容仍然停留在程序三大结构、数据组织与数值计算、代码转换和数制转换等方面,这会导致学生对本课程实验和实践环节没有兴趣,不能激发学生的学习热情。另外,很多实验课基本上是学生做实验,有问题请教老师,教师指导,实验课结束就意味着同学们都通过了该实验这种方式进行的。很显然这种方式对自我要求不高的学生没有任何监督力,实验课教学效果差是很自然的事情。

4)课程考核方法不够完善,对学习过程的考核不够严谨。

传统的考核方法是按照期末考试占70%,平时成绩占30%来计算总评成绩的,有点甚至直接用期末考试成绩代替总评成绩。显然这些方法对学习过程的表现考虑不够,这就导致有些平时不爱学习的同学,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。

2 问题的解决方案

1)引领学生认识汇编语言课程的重要性,结合企业对汇编语言人才的需求和实例激发学生学习汇编语言的兴趣。

人们常说“兴趣是最好的老师”,事实的确如此,当学生们对课程产生了兴趣时他们会很主动地去学习,遇到困难会积极思考。为了激发学生的学习兴趣,作者在教学中使用了如下方法:

第一、强调《汇编语言》课程的重要性。《汇编语言》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。同时也是我们学习高级语言的利器[2]。

第二、介绍汇编语言在计算机系统维护等方面的实际应用,并选择有代表性的问题现场演示,让学生亲身体会到汇编语言的用途。虽然目前用汇编语言编写软件的情况的确不多。但是在实际应用中可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,另外在一些嵌入式软件开发中有时还需要用到汇编语言,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。

第三、用与生活中密切相关的实例现场演示,激发兴趣。

演示事先准备好的用汇编语言开发的与日常生活密切相关的应用实例,如:交通灯系统,空调单暖温度控制器,以及银行排队系统等等。使学生亲身体会到汇编语言的用途,从而彻底扭转学生们的编语言没有用的思想,激发学生学习汇编语言的兴趣。

第四、强调企业中需要懂汇编语言的人才。空口无凭,可以打开百度或Google的网页,输入“汇编语言 招聘”进行搜索就会发现的确有不少企业在招聘懂汇编的高级人才且待遇丰厚。亲眼见到上述企业的招聘广告,学生会深刻体会到《汇编语言程序设计》决非无用课程。

教学的实践表明:当学生明白了该课程的重要性和学习该课程的目的,学生们就会觉得学好该课程是很有必要的;而当学生们亲眼见到汇编语言在计算机维护等方面的实际应用和用汇编语言开发的与生活中密切相关的应用实例的演示时,他们就会体会到汇编语言的用途,激起他们的兴趣;最后当学生们看到网上不少企业在招聘懂汇编的高级人才且待遇丰厚时,学生们就会真正感受到汇编语言课程的魅力,激起他们更大的学习兴趣。

2)通过合理安排教学内容和充分利用多媒体教学的优势等方法降低汇编语言学习的难度,提高教学效果。

有了学习兴趣固然是好事,但如果在学习过程中遇到的困难太多或太大都会挫伤学生的学习热情。

而要想学习好一门课程,首先要选择一本好的教材。我们选择教材的原则是:结构清晰、主线特出,内容要有一定的深度和广度,所选例题要有代表性。根据该原则,我们选用普通高等教育“九五” 国家教委重点教材(沈美明,温冬婵 编著.《80X86汇编语言程序设计》. 北京:清华大学出版社, 2001.7)作为本课程的教材[3],该教材也得到了全国广大汇编语言教师的认可。经过多年的教学以及和学生的交流中我们发现,如果直接按照该教材的顺序教学效果不是很好。为了提高教学效果,作者在教学过程中做了如下四方面的改进。

第一,合理调整课程内容的先后顺序,将枯燥无味、需要大量记忆的内容分散到多个章节中讲授。例如:本书第三章 80x86的指令系统和寻址方式,这一章的指令太多,内容太杂,枯燥无味,要记忆的内容多。 若将该章中的串处理指令、控制转移指令等放到第五章的循环与分支程序设计中结合例题讲解效果更好,而将与子程序相关的指令放到第六章讲更合适,因为经过这样调换后,不仅避免了指令集中讲解时的指令太多,太枯燥,难记忆等问题,而且刚刚讲到的指令很快就能在例题中得到应用,学生对指令的理解和掌握会更加深入。第六章的dos系统功能调用内容也应该放到第五章中穿插讲授,这样提前的目的是为了让学生在实验中使用dos系统功能调用,因为上到第五章时就要求学生上机动手编写程序并用到这些知识点。

第二,充分利用计算机综合处理教学中的文字、声音、图象、图形、动画等教学信息,进一步优化《汇编语言程序设计》多媒体教学课件,从而降低汇编语言的学习难度。例如:初学者对于用汇编语言编写程序往往较难入门,可以首先对问题进行分析,用多媒体动画形式画出流程图,并用动画形式将每一步流程图与相应的实现该步骤的汇编指令一一对应起来,教学实践表明这样学生入门起来就要容易得多;再如:在子程序递归调用的讲解中,堆栈中的数据变化是学习的难点,很多学生被搞糊涂了,此时若将指令的逐条执行与相应的堆栈内数据变化情况采用动画的形式表现出来,学生就很容易理解这样难点内容了。像这样的例子还很多,由于篇幅有限,在此就不再列举了。

第三,抓住汇编语言的教学主线(即存储控制思想)进行教学。 汇编语言不像其他程序设计语言采用抽象了的数据,它采储存取控制的方式组对数据进行组织和操作,这既是汇编语言和其他程序设计语言的不同之处,同时也是这也体现出汇编语言与计算机硬件和操作系统之间的有着紧密联系,因此,汇编语言课程的教学主线是存储控制,该主线贯穿于整个教学过程。牢牢把握该主线,有利于掌握汇编语言程序设计的思想精髓和更好地抓住汇编语言面向机器的特点。

第四,采用案例教学法[4]进行教学。在教学当中,我经常使用案例教学法,教学效果很好。案例教学法就是教师使用与教学内容密切相关的实际案例来解决教学中的各种问题,以提高学生思考问题、分析问题和解决问题的能力,培养学生浓厚的学习兴趣的一种教学方法。运用这种教学方法,关键在于教师要准备大量与教学内容紧密相关的案例,并有计划、有意识、灵活地运用到教学实践中去,以取得预期的效果和目的。

3)增强实验内容的实用性和趣味性,增加汇编语言与高级语言混合编程的教学内容,建立合理可行的实验制度和考核方法。

对于任何一门计算机语言课程来说,实验都是教学中非常重要的一个环节,实验可以加深对理论知识的理解,提高学生的实践动手能力。

为了避免传统的程序三大结构、数据组织与数值计算、代码转换和数制转换等方面的枯燥无味的实验,我们将实验内容和实际应用相结合,如将汇编语言和计算机的系统维护等实际相联系,用汇编语言编写简单的设备驱动程序等等,增加图形化的实验内容等方法和手段,使实验变得实用有趣,增强学生动手的积极性和提高学生的动手能力。

另外,在实验中还要增加汇编语言与高级语言混合编程的教学内容。高级语言在软件开发中比汇编语言的使用要广泛的多,但是汇编语言有它自己独特的优点:占用空间小,速度快,可以与硬件直接打交道,而且与硬件直接打交道时汇编语言也是唯一的选择。因此要使汇编语言具有更多更好的应用性,就必须增加汇编语言与高级语言混合编程的教学内容,以引导学生在今后的实际应用程序开发中合理使用汇编语言开发出高效率的软件。

实验制度和考核方法的建立有利于进一步提高实验课的学习效果,实验课应使学生做到实验前预习,实验后总结,实验中逐个通过的方法。实验前预习是为了让学生在实验前对实验题目进行分析,查找相关资料,做好充分的准备以便保证学生在规定时间内完成实验;实验中逐个提高的方法是对每个完成实验的同学进行单独提3至4个问题,让其回答,只有回答正确才算该实验通过,这样做的主要目的是防止作弊和查找学生薄弱点;实验后总结则是总结经验和不足之处,达到进一步加深对相关知识点的理解和应用。上述三个环节在实验考核中分别占30%、40%和30%。教学实践表明建立实验制度和考核方法可以在很大程度上促进学生学习。

4)建立既注重期末考试结果又注重平时学习过程的课程考核方法

每门课程学习结束都需要对学生进行考核,有些同学平时不爱学习,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。

为了防止这种现象的产生,在教学中采用“N+2”的考核方法,其中的“N”是教学过程中的考核次数或项目数,“N+2”中的“2”中的“1”是期末考试,另一个“1”是课堂笔记。针对每门课程, N不小于3且不大于5,过程考核可采用的形式有:作业、平时表现、单元(阶段)测试、期中考试、课程论文、课程实验、综合性实验等。一般来说课堂笔记占总分比例不得超过10%,期末考试占总分比例范围为40%~50%,实验占20%,其他的根据实际需要灵活选择。在这种考核方法下,那些临时抱佛脚的同学即便在期末考试中考了六七十分,但也会由于平时成绩不理想也无法通过该课程的考核,也就是说这种考核方法既注重期末考试结果又注重平时学习过程,因此那些原本平时不爱学习的同学在这种考核制度的要求下也不得不抓紧时间学习了。实践表明该考核方法的确行之有效,平时学习的同学越来越多了,知识的掌握程度有了明显的提高,补考的人数显著下降,有些班级甚至没有人需要补考。

3 结束语

本文是作者将自己在教学过程中如何激发学生学习兴趣,通过适当的方法和手段降低课程学习难度,重视和严格要求实验教学,建立合理可行的课程教学制度和考核方法,从而达到改善教学效果的一些方法做了初步探讨,作者深知要想取得更好的教学效果还需要广大教师付出更多的努力,进行更多的探索和广泛的交流。

参考文献:

[1] 陈晓东.《汇编语言》教学方法探讨[J].山西农业大学学报,2006,5(6):70-71.

[2] 掌握汇编仍然是技术高手的必经之路[J].程序员,2004,(10):108-112.

汇编程序范文第3篇

《汇编语言程序设计》是高等院校计算机及相关专业的专业课程之一,是计算机组成原理、系统结构等核心课程的先修课。汇编语言与硬件有重要联系,用汇编语言获得的可执行程序具有运行速度快、占用内存空间少等优点,能更有效地对硬件设备进行控制及开发。另外,学生掌握汇编语言,对其深入学习计算机工作原理、程序设计技术和程序调试技术等都有十分重要的作用。

与其它高级语言相比,汇编语言存在指令繁多、寻址方式多样、程序可读性差、编程效率不高等缺点,这使得学生对该课程的重要性认识不足。此外,学生的学习目的相当务实,有些学生认为即便是在计算机应用场合,使用汇编语言的可能性也很小,所以怕苦怕难,没有学习这门课的积极性。实际上,只有通过学习汇编语言,学生才能深入了解计算机的硬件和软件,从朦胧的计算机世界中走出来,进而理解编译和解释程序,在审视高级语言的时候,才能够透彻地理解最根本的计算机技术[1]。所以,不了解汇编语言, 不仅会导致学生认知水平降低,编程开发手段贫乏,更会导致学生的知识结构失衡。

2实验教学在《汇编语言程序设计》教学中的作用在培养人的科学思维、创新意识,掌握科学方法、提高综合实践能力方面,实践环节有着重要的作用,是课堂理论教学无法替代的。实验课是进行实践教学的重要学习场地,学生通过对实验内容的思考,对课堂上的理论知识进行了巩固;实验过程中的操作,可以发现理论教学的不足;实验过后的心得分析,为以后解决实际问题打下坚实基础。实验还可以将算法的实现和计算机的操作过程相结合,使学生体会到算法的逻辑含义是通过计算机的实际执行过程实现的[2]。

汇编语言与硬件关系密切,通过实验课,学生可以更好地理解cpu、寄存器、存储器、接口及外部设备的工作原理。《汇编语言程序设计》课程的实验是培养学生的动手能力、增强学生的学习兴趣、提高学生阅读、编辑和调试程序能力的关键环节。

3实验教学中存在的问题

3.1教学内容安排方面

计算机语言课程的学习需要理论联系实践,实验课是学好计算机语言的必备条件,汇编语言的学习亦是如此,实验课程开始越早对学生的学习越有利。《汇编语言程序设计》这门课程的教材安排顺序一般是:基础知识、计算机系统的组织、汇编要素、基本指令、程序设计、输入/输出、系统调用、高级汇编语言技术。实验教学往往是配合理论教学进行,通常在理论课程第5~7周后,实验课才得以开设。这样的教学安排效果并不理想,在实验课程开设的前几周不利于学生很好地掌握学习内容,从而对汇编语言产生厌学情绪。

高等院校普遍存在对专业课程的课时进行压缩的现象,使得《汇编语言程序设计》的理论课时和实验课时都有不同程度的压缩,实验课时的压缩相对于理论课时更加严重,导致实验内容的安排不能覆盖该课程的重点,而且重点实验内容也相对浅显,无法进行深入研究。

另外,有些教师围绕课本基础结构部分的知识讲授,没有结合实际应用进行扩展,对实验内容的设计也比较浅显,无法激起学生的兴趣。这些行为都导致了学生对汇编语言的学习兴趣降低甚至放弃。

3.2学生态度不够端正

很多学生认为实验课不重要,实验做得好否对最终的成绩判断没有关联。目前多数院校的学生学习成绩判定, 以期末考试成绩为主,这就使得很多学生重理论、轻实验。另外,汇编语言不像其它高级语言那样应用广泛,学生认为其对就业帮助不大,从思想上轻视汇编语言,对《汇编语言程序设计》的实验课程更是不愿付出精力,甚至出现拷贝代码的现象。

3.3考核体系不明确

汇编语言的实验教学环节没有受到足够的重视,导致没有明确的评价体系。在进行实验课时,有些教师只是布置了相关的实验内容,实验过程没有进行必要的监督和辅导,导致学生对实验教学态度怠慢,出现学生在实验课上玩游戏和课下实验报告抄袭的现象。

4提高汇编语言实验教学效果的措施

4.1合理设置实验内容

实验课的内容按照由浅入深、循序渐进的方式进行,以启发思维为主。对设计型、综合型实验只要能达到实验目的,其实验过程和步骤可以多样,通过实验课复习理论知识,引出欲

讲解的新内容。针对学期初不安排实验的问题,可以尝试开展“先实验后理论”的教学,在实验中理解基础理论,加大实验课的比例并且及早实行开展实验教学,在整个教学过程中实行以“学生动手为主,教师讲解为辅”的教学模式[3]。

4.2引入新的实验教学模式,培养学生学习兴趣

实验教学中要充分调动学生的积极性,照顾不同层次的学生。汇编语言指令繁琐,初始使用时比较抽象,学生对待实验内容往往无从下手,所以任课教师应该先对实验内容进行讲解。起初的实验内容,教师应该进行详细的演示,可以先引导学生“临摹”,避免学生出现无从下手、丧失信心等问题。后面的实验内容可以进行讲解并提示实验方法,但不要求每个学生都按照此方法进行实验,鼓励学生创新,并在考核中给予一定的奖励。每次实验内容,任课教师都要进行总结,以解决学生在实验过程中的“通病”。

《汇编语言程序设计》的实验一般设置16~24学时,存在实验学时偏少的问题。为了尽可能提高实验效率,教师可以提前给学生布置实验内容,给学生留出时间准备。如果在实验课上临时给出实验内容,大多数学生无法按时完成实验目标,会打击学生学习的积极性。对实验内容进行准备后再上机操作,大多数学生就可以在规定的时间内完成实验。学生在上机的过程中获得了成就感,树立了信心,就会产生学习兴趣,并主动在课下花时间钻研有关课程实验的内容。

为了培养学生的团队合作精神,也可以设计一些综合应用实验,让学生分组完成。每组选出一位组长,负责组织学生课下进行实验内容的预习、实验方案的制定和课上组员提出问题的解决方案等工作。教师在进行实验考核时,要对每个组的完成情况进行总结,对于完成较好的组,给予成员一定的加分,以鼓励学生注重团队合作精神,培养学生的学习兴趣。

4.3建立严格的考核体系

《汇编语言程序设计》课程一般需要16~18个教学周才能完成教学任务,在这段时间内,很少有学生能对其一直保持较高的学习热情,大部分学生都是以成绩驱动自己的学习,所以需要一套严谨的实验考核体系,公平公正地评价学生的实验过程[4]。笔者学校的实验课程成绩由学生出勤、预习、实验操作过程和实验报告4部分组成,涵盖了学生实验上机的全过程。各部分的比例按10%、20%、40%、30%的权重计算实验总成绩。除了出勤情况外,预习、实验操作过程和实验报告这3部分按等级评定,每个等级对应的分数为: a(90~100)、b(80~89)、c(70~79)、d(60~69)、e(50);对于前4个等级,教师可根据学生完成的情况给出该等级的加减等级。以a等级为例,a+对应100分,a对应95分,a-对应90分,这样每个等级都有对应的分数,可以做到客观地评价学生的实验过程。

5结语

本文根据笔者的教学实践,分析了《汇编语言程序设计》课程的教学现状,指出了实验教学在《汇编语言程序设计》教学过程中的重要性,并对汇编语言的实验教学进行了深入的分析和思考。根据实际情况提出了几点可行的措施,即合理安排实验内容,引入新的实验教学模式和建立严格的考核体系,从而达到发掘学生潜能、提高实践动手能力、增强学习汇编语言兴趣等目的。《汇编语言程序设计》课程的实验教学还需要广大教师积极探索,引入多种符合实际的教学方法,使汇编语言对计算机专业课程后续的学习发挥应有的作用。

参考文献参考文献:

\[1\]刘正红.对汇编语言实验教学的几点看法[j].信息与电脑,2012(6):198199.

[2]木林.《汇编语言程序设计》实验教学的探讨[j].呼伦贝尔学院学报,2012 (4):9295.

[3]张学,陆庆.汇编语言实验教学的思考[j].教学研究,2009(15):8182.

[4]侯宏霞.提高汇编语言课程实验教学质量的几点思考[j].内蒙古农业大学学报:社会科学版,2011(13):173174.

[5]金海溶,周苏,孟学多.用实验方法改革汇编语言程序设计的教学[j].计算机教育, 2007(1):3437.

汇编程序范文第4篇

“微机原理与接口技术”是电子电气信息类专业中一门非常重要的专业基础课程,其内容包括微处理器基本结构与工作原理、汇编语言指令系统、常用接口芯片的基本原理与编程方式、通过系统总线与外设接口进行连接的基本方法等,具备软件与硬件紧密结合的显著特点。该课程帮助学生从根本上认识和理解计算机的底层工作原理[1],培养学生综合运用模拟电子技术、数字电子技术和汇编语言、C语言等相关知识,理解接口电路工作原理,设计接口电路及对接口电路进行初始化编程的能力。其中,汇编语言的编程能力对学生理解硬件工作原理及对接口芯片进行初始化编程具有非常重要的意义。笔者在实验教学中利用Debug[2-3]调试程序引导学生对汇编语言程序的执行过程进行详细跟踪分析,帮助学生理解计算机底层[4]工作的实质,取得了显著的效果。

1 主要命令简介

2.1 排序前内存中数据的存储情况

阅读此段程序可知,子程序disp用以显示字符串“Hello World!”,将disp子程序定义为中断处理子程序,分配的中断类型号为67H,利用指令“int 67h”实现中断调用显示字符串。子程序init_int将67H号中断原来的中断向量从中断向量表中取出来加以保存,将disp子程序的入口地址填写至中断向量表中把原来的中断向量替换掉。子程序restore_int用以恢复原来的中断向量。对程序调试过程如下。

4.1 查找原中断向量和数据段的值

5 结束语

利用Debug调试程序的主要命令,结合实例阐述了汇编程序执行过程的跟踪方法,展示了Debug调试程序强大的功能。在教学中,要充分利用Debug调试程序的几个主要命令,对课程内容做层次化设计[8],引导学生对汇编语言程序的执行过程加以详细跟踪和比较分析,从而深入理解计算机底层工作的实质,这种方法不仅适用于“微机原理与接口技术”课程,对于其他微处理器和高级语言的学习都是有价值的。

参考文献:

[1] 曹玉波.Debug软件在微机原理课程教学中的应用与实践[J].吉林化工学院学报,2010.27(5):21-24

[2] 龙祖强,梁昔明,杨利容.汇编语言程序调试工具DEBUG浅析[J].衡阳师范学院学报,2008.29(6):33-35

[3] 董洁.浅谈DEBUG程序的主要命令用法[J].赤峰学院学报,2007.23(5):61-62

[4] 孙丹岭,蒋方炎.汇编语言和微机接口技术实验教学探讨[J].计算机教育,2011.17:43-45

[5] 钱晓捷.汇编语言程序设计[M].电子工业出版社,2000.

[6] 罗万钧.田立炎,冯子纲,冯世蔚.汇编语言程序设计[M].西安电子科技大学出版社,1998.

汇编程序范文第5篇

关键词:汇编语言程序设计;实验;教学改革

中图分类号:G64 文献标识码:A

文章编号:1672-5913(2007)01-0034-04

在传统教学模式中,理论教学 (或者说是课堂教学) 与实验教学是区别对待的,后者通常用来“辅助”前者 (例如实验教材历来被认为是辅助教材) ,学生通过实验教学环节来“验证”理论教学的内容。但是,在大众化高等教育的背景下,课堂教学的效果普遍出现滑坡,导致淡化了“验证性”实验的基础,因而严重地影响了课程的教学质量。

近年来,我们在多门计算机课程的教学实践中,摸索出一套“把实验实践环节与理论教学相融合,抓实验实践教学促进学科理论知识学习”的教学方法,有效地提高了学生的学习兴趣,以此提高了大众化高等教育背景下计算机专业课程的教学效果和教学质量。本文中,我们结合“汇编语言程序设计”课程的实验创新,来探讨新的教育形势下计算机课程教学方法的改革。

1汇编语言及其教学的现状

计算机中真正可以处理的只是由“0”和“1”组成的二进制代码,这种指令代码易出错且不易修改。于是,人们发明了“指令的助记符”,用几个字母 (往往就是其含义的英文单词或缩写) 来代替某条指令,如加法用ADD表示,减法用SUB表示等,这种符号系统最终扩大形成了汇编语言。汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。使用汇编语言编程,优点是运行效率高,可直接对硬件内部进行控制,缺点是使用者需要对硬件有更深入的了解,编程效率不高,并且汇编语言与机器的体系结构有一定的依赖关系,每种计算机都有自己的汇编语言,使用极不方便。

汇编语言易学却很难真正掌握,编写快速、高效,并且能够让计算机处理器“舒服地执行”的汇编语言程序是一件很困难的事情。由于教师开展教学困难,学生学习和掌握困难,教学效果很差,以至于不少学校甚至取消了这门课程。

尽管与发展初期相比,计算机开发和应用技术已经有了根本性的变化,我们有了各种高级语言、我们有了网络应用开发的许多编程工具,很多程序甚至可以自动生成,但机器语言、汇编语言和高级语言的程序设计语言体系仍然是计算机技术的基础,也是计算机技术的重要知识体系之一。对于计算机及其相关专业的学生以及喜欢计算机的一般学生和读者来说,汇编语言程序设计肯定是需要掌握的重要专业基础知识之一。不能了解和熟悉汇编语言知识不仅将导致学生知识结构的缺乏,也可能导致学生认知水平的降低、开发手段的贫乏。在一些应用中,汇编语言甚至是其开发工具的唯一选择。

汇编语言是机器语言之外最接近计算机硬件的编程语言。由于它如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。用汇编语言编写的程序的速度通常要比高级语言(例如C/C++),快很多倍,甚至成百上千倍。选择汇编,意味着选择性能而不是可移植或便于调试。在一些实际的应用系统中,我们往往会用汇编彻底重写某些经常调用的部分以期获得更高的性能。应用汇编也许不能提高程序的稳定性,但至少它也不会降低稳定性;与此同时,它可以大大地提高程序的运行速度。至少,汇编语言的知识可以告诉你一些有用的东西,比如,你有多少个寄存器可以使用。有时,手工的优化比编译器的优化更为有效,而且,你可以完全控制程序的实际行为。

“汇编语言程序设计”课程的任务是为“计算机原理”、“计算机接口技术”、“操作系统原理”等后继课程提供必要的基础知识,它对训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用,为从事计算机的应用开发提供了强有力的编程工具。

通过学习汇编语言,学生可以了解到如何有效地设计数据结构,让计算机处理得更快,并使用更少的存储空间;同时,学习汇编语言可以让学生熟悉计算机内部运行机制,并有效地提高调试能力。经验表明,调试一个非结构化程序的困难程度,要比调试一个结构化程序的难度高很多,因为“结构化”是以牺牲运行效率来提高可读性与可调试性的,这对于完成一般软件工程的编码阶段是非常必要的。然而,在一些地方,比如,硬件驱动程序、操作系统底层,或者程序中经常需要执行的代码,结构化程序设计的这些优点有时就会被它的低效率所抹煞。另外,如果你想真正地控制自己的程序,只知道源代码级的调试是远远不够的。

通常情况下,“汇编语言程序设计”课程的教师必须决定其课程是集中于问题和理论,还是为学生提供一个能够对汇编语言程序设计进行实验的环境。“汇编语言程序设计”课程本身具有的理论抽象性和鲜明的应用性,决定了我们必须充分重视这门课程的实践环节。

2教学内容的分层次设计

教育部计算机科学与技术专业教学指导分委员会在其的“中国计算机本科专业发展战略研究报告”中指出:大多数院校都有比较完善的教学大纲、教学计划和进度表、教学档案等,实践着一套有效的管理规范。但同时教学内容的研究则需要加强。报告进一步指出:

1) 有些学校计算机专业的教学内容设计存在明显的盲目性,还有些学校在培养人才定位上有明显偏差。尽管CC1991开创了一种对计算机科学教育的创造性的、理性的思考,但它并不应该成为我国所有大学计算机专业教学实践所共同追求的目标。

2) 作为一种比较普遍的规律或者现象,学生就业通常会有较强的地域性:一个企业通常在周边地区招收较多员工,一个学校的毕业生大都就业在学校周边地区的单位。因此,学校周边地区社会发展的情况对计算机专业的教学内容的设计应该是很有参考意义的。

……

由于大多数大专院校一般都设置有计算机科学技术及其相关专业,我们至少可以认为:根据所在院校的办学类型不同、培养目标不同、所在地及其周边地区社会需求的不同,这些计算机专业的教学内容应该有所不同,这些计算机专业对于“汇编语言程序设计”这门课程的教学内容也应该是有所不同的。对于那些非研究型院校的相关专业,对“汇编语言程序设计”的教学可以集中在适度的理论知识和充分的操作实践上,通过实验与实践,了解汇编语言程序设计的基本概念和知识,激发对相关理论知识的学习兴趣,理解和掌握汇编语言程序设计的基本方法。

汇编语言程序设计的应用面广,涉及技术领域宽泛,要让学生真正理解汇编语言程序设计的基础理论知识,具备将汇编语言技术应用于社会实践的能力,积极加强汇编语言程序设计课程的实验环节是至关重要的。