汇编程序范文

时间:2023-11-27 19:58:11

汇编程序

汇编程序篇1

引言

“汇编语言与微机原理”是计算机科学与技术专业的必修基础课程。该课程融合了汇编语言程序设计和微机原理与接口技术两门课程的内容,要求学生重点掌握汇编语言程序设计的方法和微型计算机系统各个部件的工作原理。掌握汇编语言是掌握微机原理的基础,因为实现和验证微机系统各个部件的工作过程需要用到汇编语言,并且更高层次的综合系统设计也离不开汇编语言。

汇编语言与微机原理课程中,汇编语言子程序设计这部分内容的知识掌握起到承上启下的作用。其“承上”的作用体现在:作为一个独立的模块,子程序设计涵盖之前所学的汇编语言的指令系统、伪指令、数据类型及三种基本控制结构(顺序结构、分支结构和循环结构)。其“启下”的作用体现在:①后续接口芯片的功能应用基本上都是以子程序的形式实现;②中断系统中的中断服务程序就是一种子程序,中断系统是微机系统中非常重要的组成部分,可以说不理解中断系统就不能理解计算机的工作原理[1],而掌握子程序设计是本文由收集整理理解和应用中断系统的基础之一;③子程序设计是开发大型程序的基础,对于培养编程能力十分重要[1]。因此,汇编语言子程序设计这部分内容无论在教学上还是在实验中都必须给予足够的重视。但目前鲜有文献涉及这方面的问题,本文针对目前汇编语言与微机原理课程中汇编语言子程序实验设计中普遍存在的问题给出相应的对策,并给出一个实验设计实例。

1 实验设计存在的问题及对策

⑴ 实验学时安排不够。据粗略调查,大多数院校汇编语言与微机原理课程的实验学时为18个学时[1],有一些院校还附加一个课程设计。对于这18个实验学时普遍的分配方式如表1所示。

表1 汇编语言与微机原理实验项目及学时安排表

[类别\&项目\&学时\&汇编语言程序设计部分

(12学时)\&汇编语言上机过程及debug的使用\&2\&dos系统功能调用\&2\&三种基本程序结构\&6\&子程序\&2\&接口芯片部分

(6学时)\&可编程中断控制器8259\&2\&并行接口芯片8255\&2\&可编程定时/计数器8253\&2\&]

从表1可以看出,子程序实验仅安排了2个学时,学时太少,难以取得良好的训练效果,可以考虑将实验“dos系统功能调用”融合到“三种基本程序结构”中,腾出2个学时给子程序实验,有助于学生深刻全面的理解子程序的相关知识。

⑵ 实验内容“片面”。对于汇编语言子程序实验,大多数院校的实验内容只涉及到两方面的知识:①子程序的类型(近子程序和远子程序);②三种参数传递方式(寄存器传递、内存单元传递、堆栈传递)[2]。这并不全面,与子程序密切相关的知识应该还包含宏和中断服务程序,所以有必要在实验中安排相应的内容让学生理解子程序与宏的区别,以及如何把一个子程序“注册”为中断服务程序,然后通过软中断指令(int n)调用该程序的过程,这样做有助于后面对中断系统的学习。中断是学习汇编语言的重点、难点部分,能否真正掌握汇编语言对中断的理解和掌握至关重要,中断也是汇编语言的魅力所在[3]。

2 实验设计的一个实例

针对前面提到的问题,在此给出一个汇编语言子程序实验设计实例,主要内容如下:

⑴ 实验学时:4学时。

⑵ 实验目的:

① 掌握子程序的编写及调用方法;

② 掌握近子程序和远子程序的区别;

③ 掌握三种参数传递方式的差别;

④ 掌握子程序与宏的区别;

⑤ 掌握编写中断服务程序的方法以及通过软中断指令。

⑶ 实验内容:

① 编写一个近子程序实现将一个字节的数据以十六进制的形式输出,采用寄存器参数传递方式;

② 编写一个远子程序,功能与①相同,采用堆栈参数传递方式;

③ 变量str中存有一个以’$’作为结束符的字符串,编写一个子程序实现将str中所有的大写字母全部改为小写字母,采用内存单元参数传递方式;

④ 用宏实现①中的功能;

⑤ 编写一中断服务程序实现①中功能。提示:利用dos系统功能调用的35h号功能和25h号功能提取和设置中断向量,具体如表2所示。

表2 dos系统功能调用的35h号和25h号功能说明[4]

[功能号\&功能\&入口参数\&出口参数\&25h\&设置中断向量\&ds:dx=所设置中断向量的段基址:偏移量al=欲设置中断向量所对应的中断号\&无\&35h\&取中断向量\&al=欲取中断向量所对应的中断类型号\&es:bx=取得的中断向量的段基址:偏移量\&]

该实验设计实例特点鲜明,首先实验所要求完成的功能都是汇编语言中简单而又常用的功能,这一方面可以使学生不必花太多功夫在算法实现上,而把主要精力集中在子程序本身的语法上,另一方面实验中所完成的程序在后续的实验中可以直接调用,减轻了学生在后续实验中的负担,同时加强了各实验之间的有机联系。我们的实验内容涵盖了与子程序相关的各种知识,特别是子程序与中断服务程序的关系,这也是本实验设计的创新之处。

3 结束语

汇编程序篇2

关键词:《汇编语言程序设计》;学习兴趣;教学方法;教学内容

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2013)39-0041-03

一、引言

20世纪80年代,汇编语言是非常流行的程序设计语言之一,随着一些开发效率更高的高级语言的出现,汇编语言就逐渐退出了流行语言的行列。但在大多数高校的计算机专业中,作为计算机原理、计算机接口技术、操作系统主干等课程的先修课,《汇编语言程序设计》依然作为一门专业必修课保留着。由于汇编语言并不直接面向当前广泛应用的信息处理软件开发[1],出于就业等方面的考虑,很多学生把精力放到Java、C#等他们认为用途更大的高级语言学习中。加之汇编语言中有众多繁杂的规则和枯燥的指令需要记忆,很多学生有意无意就怠慢了这门“古老”的语言。实际上,汇编语言在帮助理解计算机工作原理和程序运行过程方面起着非常重要的作用[2]。为了改变汇编语言这种尴尬的处境,让其在计算机专业学生的知识体系中发挥应有作用,任课教师有必要在教学方法、教学内容等方面进行改革。

二、讲好第一堂课

在人们之间的交往中,第一印象非常重要。学习也一样,要想让学生学好这门课,第一堂课一定要讲好。第一堂课应该讲些什么呢?根据多年的教学经验,总结出以下三点:首先,把汇编语言在计算机知识体系中的位置及该门课程的主要内容用简短的几句话向学生做一个介绍,让学生了解本学期的学习目标即可。其次,通过举例,介绍一下汇编语言在当前计算机中的一些独特应用,例如:汇编语言可以应用到杀毒软件的病毒扫描和UNIX操作系统的启动;在一些实时性要求比较高的场合,汇编语言比高级语言更有优势,曾经有人做过实验,汇编语言编写的程序比其他高级语言编写的程序在速度上大约快10倍[3]。通过这些实例可以让学生感觉到汇编语言并没有过时,在当前的软件开发中仍有它的一席之地。最后,从往届学生的大作业中选择几个有代表性的进行展示,鼓励学生:到本门课程结束时,你也可以用汇编语言写出这样的程序,以此来激发学生的学习兴趣。通过第一堂课的“动员”,让学生对汇编语言有一个感性认识,同时最大限度地激发他们学习汇编语言的兴趣。现在的大学生能量很大,只要感兴趣了,学好一门课对他们来说并不是什么难事。

三、教学内容的改革

汇编语言是一门低级语言,其指令与机器指令基本上一一对应。每条指令的功能很“低”,同样功能的程序,用汇编语言写要比用高级语言写长得多。同时,汇编语言的指令多,相关规则也多。这些劣势足以让初学者讨厌它。为了让学生能够迅速接受它而不产生抵触情绪,需要任课教师在教学内容的处理上采取一些措施。

1.列出教学难点与重点。目前,大多数学校的汇编语言教学还是以8088/8086汇编语言为主,归纳起来,有两个难点和一个重点。一个难点是内存的分段管理。逻辑地址(段地址:偏移地址)到物理地址的转换是这个问题的核心,其公式为:物理地址=段地址×10H+偏移地址。通过课上的讲解和做习题,要让学生真正地明白该公式的含义,这对后继的汇编语言编程和调试至关重要。与内存的分段管理有关的其他知识,如:段的最大长度、段之间的重叠、物理地址的唯一性、逻辑地址的不唯一性等知识,在其他高级语言中是不会学到的,也要给学生逐一讲解清楚。另一个难点是与数据相关的七种寻址方式[4]。在学习C语言时,指针[5]的概念让很多学生头疼不已,现在寻址方式增加到了七种,部分学生会产生畏难情绪。在讲授这部分内容时,任课教师可以通过一些具体的应用来帮助学生理解和记忆这些寻址方式。以寄存器相对寻址方式为例,这种寻址方式与高级语言中大家熟悉的一维数组无论是形式还是内涵都很相似,通过一维数组的遍历过程可以很生动地介绍这种寻址方式,学生掌握起来也会很容易。一个重点是指令的记忆。对于习惯用高级语言编程的学生来说,汇编语言几十条指令以及相应的规则记忆量有点儿大。而指令是编程的基础,学生要想编出程序,这些指令是必须要记熟的,这一点没有任何商量的余地。在讲课过程中,尤其是学习汇编语言的前几周,这两个难点和一个重点要不断地重复讲授和应用,让学生真正弄懂、记熟,为后继的程序设计打好基础。

2.调整教学顺序。大多数汇编语言教材中,通常是先把相应的原理和全部指令介绍完,然后再介绍编程。很显然,这种方法使教材的知识结构比较清楚,但是对于学生来讲,大半个学期都在记忆指令,看不到成果(自己编写的程序),就会觉得既枯燥又没有成就感,学习的积极性也会随之减弱。在近几年的汇编语言教学中,我们调整了教学顺序,把指令分散到各个章节中进行讲授。例如,把算术运算指令和逻辑运算指令与顺序程序设计放在一章中,把控制转移指令与分支循环程序设计放在一章中,经诸如此类的顺序调整,每一章都是先介绍一些指令,紧接着就用这些指令进行编程训练,指令记忆和编程训练同步进行,学生也很喜欢这种安排。

四、教学方法的改革

1.采用多媒体课件与传统板书相结合的教学方法。多媒体教学具有信息量大、图文并茂等优点,目前已被广泛应用到课堂上。在汇编语言的教学中,大量采用了多媒体课件,对于一些抽象、难懂的知识,借助于图表、动画等进行讲解,可大大提高学生的接受度。比如在讲解exe文件装入内存的过程时,涉及的知识较多,有内存的分配、多个寄存器值的变化、exe文件结构等,通过动画演示,繁杂零乱的知识一目了然,充分体现了多媒体课件的优势。动画截图如图1所示。

当然,多媒体课件在程序讲解方面也存在一些劣势。如果把所讲的程序直接做到课件中,教师在讲解程序时就会出现朗读程序的现象,与学生交互不足,造成学生跟不上节奏,影响授课效果。这时,最好的办法就是多媒体课件与板书相结合。在多媒体课件中给出程序的流程图,然后把程序以板书的形式展示给学生,写板书时与学生进行充分地交流,让他们有足够的时间来了解编程的思路和编程的过程,同时也大大活跃了课堂气氛。

2.采用对比的教学方法。在学习汇编语言之前,学生已经有了C语言的基础。在讲解汇编语言的一些知识时,可以与C语言中相应的知识进行比较,以此来加深学生对汇编语言的理解。例如,汇编语言中没有专门的分支指令,只能通过一些影响标志位的指令结合条件转移指令来实现。图2是一个典型的分支结构,在该结构中,sign=0和sign=1是互斥的,不会同时执行。用于实现该结构的C语言程序段如下所示:

if(x>=0)

?摇sign=0;

else

?摇sign=1;

对于汇编语言的初学者来说,沿用C语言的习惯,很可能就写出下面的程序段:

CMP x,0

JGE L1

MOV sign,1

L1:MOV sign,0

L2:……

想当然地认为“MOV sign,1”和“MOV sign,0”这两句是互斥执行的,而实际则不然,上述指令在计算机中运行时,不论x是何值,sign的值最后都是0,不能实现图2所示的功能。正确的汇编语言程序段应为:

CMP x,0

JGE L1

MOV sign,1

JMP L2

L1:MOV sign,0

L2:……

正是这句“JMP L2”让学生理解了汇编语言中该如何编写分支程序。通过与C语言的对比,加深了学生的印象。

3.通过小测验及时监测学生对知识的掌握情况。《汇编语言程序设计》中的内容前后连贯性强,如果有一部分内容掌握不好,就会造成知识的脱节,严重影响后继内容的学习。教师在课堂上所讲的内容学生即使听懂了,也需要通过课后作业加以巩固。为了验证学生课后作业的完成情况,每次课抽出5分钟左右的时间搞小测验,考核学生对上次课所讲内容的掌握情况。“你不能总是交白卷吧”,这句话对学生本身既是一个警示,也是一个激励。教师也可以在测验中发现问题,通过有针对性的讲解,及时解决学生的疑惑,最大限度地避免平时学习不踏实,考前突击的现象,让尽可能多的学生真正掌握汇编语言的精髓。

4.通过屏幕录像帮助学生尽快熟悉操作环境。相对于高级语言,汇编语言对计算机硬件知识的要求较多,但其在本质上终究还是一门语言,上机操作依然是学习这门课程必不可少的环节。利用汇编语言编写的程序在上机时要用到宏汇编系统MASM和调试程序DEBUG,没有集成环境,学生上机练习时难度较大。一些学生会因为得不到及时的帮助知难而退,严重影响了整个课程的学习。为了让学生快速地熟悉汇编语言的编程、调试过程,我们利用屏幕录像工具制作了上机操作的录像,包括编辑、汇编、连接、调试、运行等过程,课后学生自己做上机时,遇到操作问题可随时观看录相,这对初学者来说非常有帮助,解决了以前学生在操作方面入门难的问题。

5.通过大作业进一步提高学生的编程能力。编写简短的程序可以加强学生对基本指令、语法的掌握,编写大作业则可以进一步提高学生的编程能力。大作业通常在课程学习过半之后布置,分两种形式完成:第一种形式的大作业由十几个小程序组成,涉及到累加求和、分支、循环、数据的输入/输出、字符统计方面的知识,每个程序的长度在十几行到三四十行不等,这种大作业针对的是编程能力稍弱的学生,侧重点是对基础知识的掌握,最后通过上机限时测试完成考核。第二种形式的大作业是一个规模较大的综合题,所涉及的知识有些在课堂上可能并未讲过,需要学生通过查阅参考资料来获得。程序的规模大约在二百行左右。例如有如下大作业题:从键盘输入一个不超过80个字符的字符串,编成实现如下功能:(1)对字符串中的数字做求和运算,并以十进制形式输出结果;(2)将字符串中除字母、数字之外的其他字符用红色显示出来;(3)将字符串中的所有小写字母用绿色显示并闪烁。学生在完成基本要求的前提下,可加入输出定位、动画等技术。从历届学生大作业的完成情况来看,很多学生都有丰富的想象力,所编写的程序无论是结构还是功能,都有很多可圈可点的地方,学生的编程能力在完成大作业的过程中得到了很好的锻炼,更重要的是他们还收获了信心。最后的考核以答辩的方式进行。对于这两种形式的大作业,学生可以根据自己的条件进行选择,做到了因材施教。

《汇编语言程序设计》是大多数高校中计算机专业学生的必修课,要求学生既要掌握相关的硬件知识,又要具有良好的软件编程能力,为了让学生学好这门课程,任课教师要在教学方法和教学内容的改革上多下功夫,最大限度地激发学生的学习兴趣。为了做到与时俱进,任课教师的知识结构也需要不断地更新,在讲授8088/8086汇编语言的同时,适当地引入win32汇编的内容,让这门课程的内容常讲常新,让这个“古老”的语言重新散发出“青春”的活力。

参考文献:

[1]田鄤,樊景博.汇编语言课程内容设置与教学方法规范化探讨[J].网络与信息,2012,(4):34-35.

[2]姚富光.高校计算机专业“汇编语言”课程教学改革探究[J].重庆教育学院学报,2012,25(3):62-64.

[3]王海彬.汇编语言程序设计教学改革与探索[J].中国电力教育,2011,(27):164-165.

[4]吴卫江,赵建辉.汇编语言程序设计[M].山东:中国石油大学出版社,2010.

[5]谭浩强.C程序设计[M].北京:清华大学出版社,2010.

基金项目:中国石油大学(北京)2010年青年骨干教师基金

汇编程序篇3

关键词:课程改革;汇编语言;课程建设

中图分类号:G642文献标识码:A文章编号:1009-3044(2007)12-21735-02

A Study on College Course Reform of the Assembly Language Programming

WU Guang-yu, CHEN You-xuan

(Zengcheng College of South China Normal University, Guangzhou 511363, China)

Abstract:By analyzing educational actualities of Assembly Language Programming course,a course reform project is proposed. This paper points out the main problems remained in the course practice. Finally, the author proposes a series of reform solutions to the teaching materials, experiment designing and course testing of Assembly Language Programming. The paper also extracts experience from educational reform and practice.

Key words:course reform; assembly language; course developments

1 引言

汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而在对于程序的空间和时间要求很高的场合,汇编语言是必不可少的。因此,各院校的计算机及相关专业均开设了“汇编语言程序设计”。在以往的教学中,学生普遍反映这门课程难学。究其原因有:(1)学习汇编语言需要具备计算机的硬件知识配合,需要比较坚实的程序语言设计基础;(2)汇编语言和高级语言相比有大量的语法规则需要记忆,较琐碎,没有高级语言的完整结构化语句,程序结构不是很明显;(3)上机调试结果不直观且容易出错;(4)再加上近年来较易掌握的高级语言的快速发展,使得汇编语言的角色逐渐在淡化。在教与学的过程中,初学者首先从外界接受到的是汇编语言难学,从主观上就对该课程产生了畏惧心理;而另一方面初学者又受自身的知识面所限,认为汇编语言在应用开发中很少用到,结果给该课程下难又没用的结论。因此,针对现状,纠正学生对课程的认识,改进教学方法已经刻不容缓。

2 教学改革措施

2.1 纠正学生认识,调整教学内容,注重实例教学

纠正学生对课程难学而又没用的认识,才能使课程的教学得以顺利开展。而另一方面毕业生又面临较大的就业压力,其中很大一部分原因就是能培养出人才与社会需求脱节,没用按照市场真正需求确定目标,专业领域紧缺的技能应用型人才存在很大的缺口。因此,加强包括汇编语言在内的硬件体系课程的教学很有必要。

清华大学出版社出版的沈美明等编写的《 汇编语言程序设计》第3章的指令系统的时候,按照传统的教学顺序,把所有的指令讲完,过多的指令在缺乏实际应用实践的支撑下,枯燥乏味。所以在介绍这章的指令的时候。先把基本的数据传送指令、算术运算指令、逻辑运算指令、移位指令讲完。对于控制转移指令、串处理指令、循环指令、中断调用等其它指令分散到分支、循环程序设计,中断调用,I/O程序设计等相应的章节去。让学生能够切身体会学以致用,更能够在指令的应用中加深理解,达到更好的教学效果。

而在程序设计方法的章节里,改变以往一节一个(多个)例子的做法,把程序设计方法设计在一系列有前后关联的例子里,通过每一次课逐步扩充例子的功能,程序设计方法也逐步展示出来。这一系列的例子从把BX的内容以十六进制形式输出,到统计BX中二进制1的个数并输出,到从键盘输入一个十六进制数到BX,到把BX中的内容以十进制形式输出(分无符号数和带符号数),一直扩展到从键盘接受一个数组并排序输出。把最后的例子介绍完后,已基本覆盖课程的基本内容,包括程序格式,三个基本结构,子程序的应用,宏的使用,输入输出程序设计等。通过这样处理课程的连贯性大大增强,很多相关的内容都串联起来,学生也能在较为熟悉的例子中尽快的接收新的知识,从逐步扩展的例子找到程序设计方法之间的差异,方法的适应范围等。

2.2 灵活应用辅助教学手段

利用CAI课件开展课堂教学,对教学的直观性和可视性,提高课堂教学效率都有很大好处。对课程中的重点难点,比如寻址方式及其物理地址计算,堆栈操作指令,子程序调用的堆栈变化等知识点,用动图形式演绎。既可以增加趣味性,又可以达到事半功倍的效果。

2.3 实践环节的教学

针对程序设计课程实践性极强的特点,引入新的编程调试工具TurboDebugger(TD),并编写相关的实验指导书。TD工具相对DOS的Debug,提供的较好的图形界面,同屏能显示所有寄存器,标志位,代码段,数据段还有堆栈段的内容,为调试和理解提供更多的便利。同时,也体现了“机器”和“程序”相结合这一思想,使学生对“计算机”的认识更为深入。

理论课教学有机地和实践环节教学结合。在实验课中,继续沿用理论教学的例子作为基础再进行扩展功能,使学生在熟悉的例子练习中实践,便于把所学知识快速应用于实践中,不但有利于其程序设计能力的提高,也提高了学生对汇编语言的兴趣。

2.4 完善课程的考核方法

任何的教学都需要评价,教学评价在教学过程起激励和监督作用,使教师和学生在评价中受到鼓舞和鞭策,促进教师的技能,激发学生的学习动力。所以考试上的改革也不可或缺。

在考试方面大胆采用开卷考试的形式,重点突出“程序设计”,考核利用语言解决问题并设计程序能力,也就是程序的“读”(分析)和“写”(设计)的能力,为此在题型上,我们放弃了以往的选择题,采用简答题问答题的形式,要求作答时必须写出关键问题的分析或者关键的步骤。以下是我们设计的一份试题(表1)。

在总评成绩的比例上调整平时成绩和期末考试成绩的比例,期末考试成绩50%,平时(包括实践环节)50%。通过调整更注重平时成绩的评定,调动了学生平时学习的积极性,避免他们只靠考试周“冲刺”蒙混过关。

3 其他一些必须注意的问题

3.1 该课程与其他相关课程的关系

与《汇编语言程序设计》相关的有计算机专业的多门主干课程《C程序设计》、《计算机组成原理》、《接口技术》和《单片机》等,在授课时要特别注意前后课程的联系,比如C语言的变量和函数与该课程的数据定义和子程序作比对进行学习,高级语言和汇编语言进行程序设计时思路的异同,还有对和后继课程有纵向联系的汇编指令要重点讲解。

表1 试题的设计

3.2 因材施教,积极引导

对于基础和学习能力不同的学生,可以尝试布置不同梯度的编程题目(项目)以供选择。兴趣浓厚的学生还可以组成活动小组,分析设计更高层次的程序课题。不搞“一刀切”,学生自身根据学习情况选择难度合适的题目,使其能真正去思考,避免抄袭。

3.3 阶段性的检查反馈尤为重要

阶段性的检查如作业,模块测试和实验项目,通过这些手段了解学生的相关知识点与程序设计技能的掌握情况。可以针对教学中一些比较抽象的、容易混淆的基本概念,算法的理解,寄存器的使用和程序的编制等方面进行。发现问题集中以习题课的形式组织学生讨论,进行集体学习,在这个过程中不断会有多种解决方案的提出、已有问题的解决以及新的问题产生,这样,学生的独立思考能力就能得到锻炼和提高。通过学生对习题实验的完成情况的了解,及时发现问题,并采取适当的方法进行补救,以达到阶段性的教学目标。

4 实际教学效果

在将近3年的教学实践中,以上一系列措施的实施,首先课题教学气氛活跃,师生互动得到有效加强;其次实验课中,学生提出的问题质量有所提高;再次,从后续课程《接口技术》等反映,学生汇编语言基础扎实,对机器原理理解较为透彻。

5 结束语

已有高校对该课程进行“以教授Win32汇编语言程序设计为主要内容的Win32汇编语言程序设计”教学改革。而我们根据学校学生的实际情况,主要是教学方法,实践教学和考核方法的整套教学改革措施,课程的主要内容如何进一步改革,还值得同行一起探讨。

参考文献:

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

[2]何克抗, 等. 教学系统设计[M]. 北京:北京师范大学出版社,2002.

[3]谭浩强.C语言程序设计 [M].北京:清华大学出版社,1999.

[4]刘爽. 汇编语言[M]. 北京:清华大学出版社, 2003.

[5]冯建文, 等. “汇编语言程序设计”课程的改革与探讨[J]. 吉林大学学报,2005.8.

汇编程序篇4

关键词:汇编语言程序设计; 教学方法; 内联编程

1课程的现状

汇编语言不同于其它高级语言,必须要求编程人员有一定的硬件基础,如对CPU的结构、CPU与存储器等部件的数据传送过程必须要有基本的了解,这样才能学好这门课程。在教学过程中,我们发现学生对高级语言编程学习积极性高,对汇编语言课程缺乏兴趣,因为课程本身指令复杂,规定繁多,再加上学习汇编指令前对CPU的相关工作过程理解不透,导致学生厌学,又由于本课程面对的低年级学生只有高级语言的基础,习惯于高级语言的自然表达,初次接触计算机硬件知识心理上有恐惧感,更难以适应繁杂的低级语言。

针对本课程的特点,对教学内容、环节、过程等进行了精心设计,下面就教学方法的设计、实践教学方法、课程考核形式等方面进行的一系列改革进行详细探讨。

2教学方法设计改革

为了避免学生因指令复杂,规定繁多、难度大而对该课程产生畏惧的学习心理,教师有必要对教学内容进行合理组织,对教学过程进行精心的设计。

2.1利用FLASH技术,使教学难点容易理解

在多年的教学过程中,我发现学生在学习CPU结构这章节中,对介绍的CPU由哪些寄存器(名称、大小)构成,各个寄存器的含义,用途,CPU与存储器等部件的数据传送过程,会觉得很抽象,多数同学都是采用死记硬背的方式,这章节是第二章节的内容,也是能否学好该课程关键的一章,如果理解不深,这无疑为后续的学习,特别是寻址方式的学习埋下了隐患。

针对这个问题,教师有必要对教学过程进行精心的设计。

在这章节中我们利用FLASH技术,把各种寻址方式下传送指令的CPU与存储器等部件的数据传送过程以动画形式展现给学生,使得复杂,抽象的过程变得直观,学生理解比较容易,也加深了对寻址方式的记忆。

2.2对比法教学

目前计算机专业的课程设置中,《汇编程序语言的程序设计》课程通常是学习完C语言课程之后开始学习的。所以在教学中可以采用对比法来讲解课程,对某些语法知识点和程序设计过程我们可以以C语言和汇编语言对应分析。

例如在介绍寄存器时,由于在一般的c语言程序中并没有直接使用到寄存器。因此,我们使用vC++6.0环境下的调试工具显示一个c语言程序及其对应的机器码,让学生看到编写汇编程序寄存器的用途,加深了学生对汇编语言程序的理解。

int m=5,n=6,c;

004010E8 mov dword ptr [ebp-4],5

004010EF mov dword ptr [ebp-8],6

c=m+n;

004010F6 mov eax,dword ptr [ebp-4]

004010F9 add eax,dword ptr [ebp-8]

004010FC mov dword ptr [ebp-0Ch],eax

在介绍语法知识时,比如变量的定义:

C语言中的变量定义形式如下:

int c1,c2=0;

汇编语言的变量定义形式如下:

cl DW ?

c2 DW 0 转贴于

2.3抽象概念的比喻教学法

在对段地址和偏移地址的讲解过程中,可以采用比喻法,把操作数比喻成学生,把教室的房间号比喻成段地址,教室内每个座位编个号,编号就是偏移地址,要想到教室把某个学生找到,就要找到相应的教室号,再到对应的座位号找到这个学生,同理,要想把主存中的操作数找到就要找到段地址和相应的偏移地址,另外要让学生知道每个教室里的座位号都是从0号开始编号的,也就是每个段里的偏移地址如果不特别指定,也是从0号开始编号的。

3实践教学改革

3.1增强实验环节,做一些实际项目

程序设计对于大多数的初学者来说有一定的难度。对于给定的一个实验题目,许多学生往往感到无从下手。目前的上机实验时间往往很短,常常是学生才刚刚有点入门,实验环节就结束了;且课外实践环节几乎没有,导致学生即使课内学的再好也不会应用。

在实验设计方面可以先把一些经典的程序提供给学生,例如分支结构的设计、循环结构的设计等,让学生在写出C语言程序之后再设计汇编程序,找出两者编程思维的区别。这样通过一段时间的经验积累,就能够编写比较复杂的的程序,由于上机时间有限,可以每次实验课之后布置一些题目供学生选择思考,让学生课外分组来设计这些程序,题目的类型可以是研讨型的让学生从更多的角度去思考上机实验过的题目,编写出不同的程序;另一种为编程型,

例如可以设置这2道题目,音乐小键盘、贪吃蛇游戏等,以加强同学们的编程能力的训练。

3.2采用与高级语言混合编程

目前越来越多的场合要使用汇编语言和高级语言进行混合编程,因此在教学时应强调汇编语言和C/C++的混合编程,并且这样也可以为今后嵌入式系统软件开发的学习打下坚实的软硬件基础。

在实验课中可以借助 Visual C++开发工具,采用内联汇编的方式,在 C/C++源程序中嵌入汇编指令序列完成一定的功能,并让学生设置断点然后跟踪执行,同时注意观察寄存器的内容和变量的值。这样可以一方面让同学们熟练掌握两种语言的切换使用,另一方面让他们感受到两种语言各有特点。例如可以利用汇编语言处理高级语言中不方便处理的一些问题。

4课程考核形式改革

因为“汇编语言程序设计”是实践性很强的一门课程,所以实验课成绩应该在总成绩中占有相当大的比重。目前大多数高校的汇编语言课程的实验课成绩只占很小的比重,即理论知识往往占课程期末考核总成绩的70%~80%,这样往往会导致学生不得不将大量的精力放在理论知识的学习中,结果只会造就大批的应试高手。在教学中,我们遇到过有的学生考试试卷能考90分以上,却连最基本的计算机操作都不能动手。今后这门课程的考核,实验课成绩应该提高到占总成绩的1/2。老师在实验中应该营造出互动气氛,检查每个学生的完成情况同时做好记录,根据学生的实际动手情况给出他们的平时实验成绩,而不是只依据交上来的实验报告,这样也能杜绝抄袭之风。

5结束语

通过教学改革的实践,在一定程度上提高了他们对本课程的学习积极性,又降低了学习难度。良好的教学效果是永远追求的目标,在今后的教学中,我们还需要不断进行探索、研究和尝试,不断更新观念,发现自身教学过程中的问题,找到解决办法,提高教学效果。

参考文献

[1] 王成耀.80x86汇编语言程序设计[M].北京:人民邮电出版社,2008(第2版).

[2] 卜登立,彭嵩松,唐卫东,龙侃.“汇编语言程序设计”课程教学改革研究与探讨[J].井冈山学院学报,2009,30(10):124-127.

[3] (美)布鲁姆著,马朝晖译.编语言程序设计[M].北京:机械工业出版社,2006.

汇编程序篇5

入党程序和步骤

一、 积极分子的确定、培养与政审

1. 申请:向党支部递交入党申请书;

2. 推优:团组织向党组织推荐优秀团员入党,党支部确定入党积极分子;

3. 考察和学习:党支部、党小组和培养联系人定期对入党积极分子进行教育和考察。期间,入党积极分子需入党校进行学习。入党积极分子每季度至少需向培养联系人上交一份思想汇报,考察期一般为一年;

4. 确定发展对象:入党积极分子党校结业,经党支部通过对其分析排队,党支部对发展对象进行政审、征求党内外群众意见并进行公示,公示七天后没有异议者,可上报上级党组织审查。

二、 党组织接收预备党员

1. 党支部向上级组织预报,并对发展对象进行预审;

2. 党支部确定入党介绍人;

3. 申请人填写《入党志愿书》;

4.申请人必须通过民意测评才可进入下一程序;

5. 参加接收预备党员的支部大会;

6. 组织员与申请入党者谈话;

7. 党委审批;

8. 党支部与预备党员谈话,并分配新党员一定工作;

9. 预备党员入党宣誓。

三、 预备党员的教育、考察和转正

1. 预备党员预备期至少为一年,在此期间党支部对其继续进行培养、教育和考察;

2. 预备党员到期前提出转正申请;

3. 支部委员会进行审查;

4. 党支部召开支部大会讨论预备党员转正;

5. 党委审批,审批合格即成为正式党员;

6. 党支部与专政的预备党员谈话,提出希望。

第一步:递交《入党申请书》

第二步:教育培养

经党支部或团组织推荐,支委会讨论后确定的入党积极分子,由两名正式党员为其培养和考察。在这期间,入党积极分子需要及时主动地找自己的入党培养联系人进行谈话,提交思想汇报(每月一份),不断地进行党的理论学习和进行实践锻炼,关注国际国内大事和党的路线方针政策,把工作做好,把学习搞好,积极服务同学、帮助同学,在同学之中发挥好先锋模范作用,让自己的理论水平和在各方面的行为表现都再上新台阶。不断地对照党章中对于一个共产党员的标准来严格要求自己,发扬优点,改进不足。入党积极分子经过一年以上培养教育后,在听取党支部、培养联系人和党内外群众意见的基础上,经支委会讨论同意,提交支部大会讨论通过,可列为发展对象。在此期间,应积极找培养人交流思想,主动汇报自己的思想动态。听取培养人的意见和建议。

注意,并不是只要交了入党申请书或者只要党课结业就是积极分子。所有申请入党的同学,只要还没有被发展成预备党员,其政治面貌就还是维持其原来的状态,比如说原来是群众那就还是群众、原来是团员那就还是团员。

第三步:在推优秀共青团员产生入党积极分子并填写”推优记事卡”

推选细则

(一)、推选程序

1、申请人上台介绍对党的认识、争取入党的原因和自身现状。

2、党支部委员参与班级进行班内同学民主投票,推选出候选对象若干名;接着,全班同学和老党员分别对这几名候选对象提出意见和建议,指出其不足和值得改进之处。

3、党支部委员会综合班级推选结果,其选票大于有效票一半以上者被确定为入党积极分子。

4、所有自荐的同学演讲完毕后,进行班级投票,选出候选对象。党支部监票、团支书唱票,抽选班内若干同学进行计票。

5、所有候选人必须严格具备“推优”条件。

(二)在推选积极分子过程中团支书的职责:

1、会前:提前学习推优评选办法,及时传达支部通知,为推优大会作好准备。

2、会上:有序地开展推优大会,介绍推优流程及实施细则,协助唱、统票工作

3、会后:整理原始资料,填写推优表格,上交推优大会结果及材料。

第四步:纳入预审名单确定发展对象

继续培养和考察一年左右,以确定是否可以列为发展对象。经过政审和党支部预审如都顺利通过,就可以填写《入党志愿书》。志愿书一般由申请人亲自填写,入党介绍人指导,填写要规范,字迹要清楚,不允许涂改。志愿书填写后,由党支部审阅。党支部会召开接收预备党员大会,会上党员会进行表决,支部书记或组织委员向大会宣读决议。表决时,必须是赞成人数超过应到会有表决权的正式党员的半数,方可予以通过。会议之后,党支部填写党支部决议,上报党总支。而后由党总支指派专人找发展对象谈话,着重了解发展对象对党的认识、入党动机和现实表现,对党的基本知识进行抽查,将群众的意见向发展对象反馈并提出要求和希望。谈话后应认真负责地填写谈话情况和谈话人的意见。然后,党总支召开党总支委员会议审批。审批结果出来后总支会通知到支部。(接到审批通过的通知以后,该发展对象的政治面貌就成了预备党员了。

第五步:预备期间的考察工作

成为预备党员后,党支部会与其进行谈话,向预备党员介绍党支部情况,提出要求,并将其编入党支部、党小组参加活动;通过党的组织生活和实际工作锻炼,对他们继续进行教育和考察。接下来的时间里,党总支会组织预备党员进行宣誓。此后,党支部对预备党员继续教育和考察一年的时间。此段过程中,预备党员仍需及时主动地与培养人交流、提交思想汇报,从各方面提高自己,按时参加党组织的活动。

第六步:转正事宜

预备期一年预备党员本人主动以书面形式向党组织提出转为正式党员的申请,其内容包括:说明入党、预备期满的时间;对自己在预备期中的表现作出全面的总结,尤其是入党时同志们提出的缺点,在预备期间改正得如何;写出今后的努力方向,提出按期转正的申请。(内容要真实,报告应在预备期满前一个月之内递交党组织)。

党支部审查。支委会征求党内外群众的意见,对预备党员的书面申请进行认真讨论,充分发表意见,根据预备党员的转正申请、党内外群众的反映,对照党员条件,全面分析研究预备党员能否转为正式党员,提出意见,提交支部党员大会讨论。在党员大会上,申请转正的预备党员汇报主要优缺点,今后努力方向和要说明的问题;支委会介绍预备党员的表现和对其进行教育考察的情况,提出能否转正的意见;党员讨论,肯定优点,指出缺点,提出希望,表明能否转正,并表决。表决时,必须是赞成人数超过应到会有表决权的正式党员的半数,方可予以通过。会后,党支部填写党支部决议,上报党总支,党总支召开党总支委员会议进行审批,并把审批结果通知给支部。如果审批通过,则转为正式党员。

转正后,更需以党员标准严格要求自己,不断进行学习、提升自我,及时进行自我批评,参加组织活动,保持党员的先进性。将来毕业或工作调动,记得及时做好党组织关系的转接。

入党申请书范文

敬爱的XXX党支部:

回顾两年多的高中生活,刚进校时,我还是个稚气未脱的大孩子,如今,丰富多彩的中学生活,使我开阔了视野,增长了才干,强健了体魄,我已经成长为一个有志向,有理想的新青年。所以,现在我怀着十分激动的心情,郑重提出我酝酿已久的申请:我志愿加入伟大的中国共产党!实现我回报祖国,为人民服务的理想!

我是一名高中生,也是一名共青团员,入团6年以来,我一直履行着一个团员的责任与义务,维护着共青团的名誉,一直积极参加学校以及团组织的各项活动。生活中我自强不息,学习中我热情投入,不断充实自己,完善自我。我之所以要加入中国共产党,是因为中国共产党始终代表着中国先进社会生产力的需要,始终代表着中国先进文化的前进方向,始终代表着中国最广大人民群众的根本利益。中国共产党是建设中国特色社会主义的领导核心,只有社会主义才能救中国,只有社会主义才能发展中国。我深信,由中国共产党领导的共产主义事业必然会成功。从领导全国人民顺利地进行社会主义改造,到十一届三中全会,全党工作重心向经济建设的转移,再到改革开放,全面建设小康社会。无论是2009年 ,还是过去的2008年,或由此追溯至建国初期,太多的事实证明,中国共产党是光荣的,伟大的,由她领导我们走向社会主义的美好生活是正确的!

2008年北京成功举办了奥运会,向全世界展示了中国人的风采,展现了伟大祖国的繁荣与富强。在2008年我们也经历了几十年,几百年不遇的四川汶川特大地震和南方大雪灾。我们在中央政府的领导下,在中国共产党的领导下,抗震救灾,向世界诠释了中华民族的团结和13亿中国人的力量。2008年是中国震撼世界的一年,无论是从媒体还是身边,越来越多的共产党员,使我强烈地领略到了党的光荣和伟大,她们都将是我今后生活和学习的源动力。

我志愿加入中国共产党,拥护党的纲领,遵守党的章程,履行党员义务,执行党的决定,严守党的秘密,积极学习.工作,为共产主义奋斗终身。我将在实践中磨砺自己,完善自己,不仅是独善其身,还应积极的用自身行动去影响身边的人,使更多的人投入到建设社会主义祖国的伟大事业中!我愿接受党组织的意见,请组织考验我!

此致

敬礼

申请人:

汇编程序篇6

混合编程方法包括C语言调用汇编语言子程序、汇编语言调用C语言子程序和C语言程序嵌入汇编语言三种。第一,C语言调用汇编语言子程序需要遵循以下规则。一是根据参数顺序,依据反序顺序将参数压入堆栈中。二是依据参数的值进行传递;三是使用“EXTERN”对函数显示进行说明,函数名使用下划线格式的8个字符以内的名字命名;四是对代码段加以说明,并使用“—TEXT”作为代码段命名原则。五是汇编程序的参数取C程序的参数;六是汇编程序需要兼顾保护寄存器。基于以上6个原则,C语言与汇编语言混合编程时,汇编过程需要遵守规定的开头及结尾格式。第二,汇编语言调用C语言子程序则不需要改变汇编语言主程序和子程序的格式,只需主程序和子程序的格式保持一致,再开始前使用“EXTREN函数名”用于表明身份,表示该函属于调用C语言子程序的外部函数。第三,C语言程序嵌入汇编语言包括两种:一是C程序调用汇编子程序模块和C程序嵌入汇编指令两种。C程序调用会汇编子程序模块需根据主程序和模块编写语言确定,如果主程序为C语言、模块为汇编语言,则需要使用C程序调用汇编子模块。C程序嵌入汇编指令主要用于处理C语言无法控制硬件的情况。例如修改中断标志寄存器、重复使用某种功能可采用C语言嵌入汇编指令的方式实现。

二、C语言与汇编语言连接的关键问题要实现

C语言与汇编语言之间的连接还需要解决参数关系、确定调用关系和模块连接三个问题。参数关系是混合编程过程中必须解决的问题,多数程序员均采用堆栈方式解决参数传递问题,具体操作为:以汇编语言中的BP作为机制寄存器,以反序多为调用顺序,将C语言中的参数压入堆栈中,且BP根据参数加入相应的偏移量即可实现参数使用。而确定调用关系则需要说明要调用的函数或过程,并确定调用及其调用关系。外部模型可调用被调用的函数或被调用过程,调用程序需说明被引用的外部模块的名称。实现汇编程序与C程序模块连接需要保证不同语言模块的存储模式相同以及遵守C兼容的函数及变量命名约定。

三、结语

随着计算机技术的提高及计算及应用范围扩大,许多领域的控制工作都得到极大的简化,而且C语言这一高级程序设计语言的应用也愈加广泛,丰富了计算机软件的功能及内容。然而,信息技术始终处于不断发展状态,人们对计算机软件编程的要求也在逐渐提高,程序员仍需要深入了解C语言的特性,强化C语言运用,利用C语言实现计算机软件的多功能,不断创新和开发信的软件。最后,程序员还需要合理运用C语言和汇编语言进行综合编程,简化软件编写过程,提高软件使用效率。

汇编程序篇7

计算机语言分为机器语言、汇编语言和高级语言。机器语言是计算机能直接识别的语言,它是一种由0和1组成的二进制语言;汇编语言是对机器语言符号化了的语言,与机器指令一一对应,它与机器语言都是一种低级语言;高级语言是一种自然语言,是用语句和函数表示的语言,符合我们平常的语言表述,容易被人们接受。

汇编语言比机器语言的可读性要好,但跟高级语言比,可读性还是较差,且不符合自然语言的表述。但它编写的程序具有存储空间占用少、可直接调用硬件资源、执行速度快的特点,这些都是高级语言所无法比拟的。在实际应用中,是否使用汇编语言,取决于具体应用要求、软件开发时间和质量等方面。

汇编语言是将操作码和操作数用约定的符号表示,所以比机器语言容易掌握和运用。又因为要使用到硬件资源,得有一定的硬件知识,所以比高级语言要难掌握。那么在什么场合需要用汇编语言呢?一般来说,有以下几种场合可以使用:

①程序要具有较快的执行时间,或只能占用较小的存储容量。例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。

②程序与计算机硬件密切相关,程序要直接、有效地控制硬件。例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。

③大型软件需要提高性能、优化处理的部分。例如,计算机系统频繁调用的子程序、动态连接库等。

④受存储容量限制的应用领域,如:家用电器的计算机控制功能等。

另外,汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、逆向分析,对有害代码的分析和防治计算机病毒等等;高级语言编写程序如果涉及硬件的操作,一般用汇编语言来编写子程序供高级语言来调用。

说到这,有的同学可能会问,那么与高级语言相比,汇编语言有什么不同之处呢?具体的讲,有以下几点不同:

①汇编语言与处理器密切相关。每种处理器都有自己的指令系统,相应的汇编语言各不相同。所以,汇编语言程序的通用性、可移植性较差。

②汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,所以编写程序比较繁琐,调试也比较困难。高级语言提供了强大的功能,采用类似自然语言的语法,所以容易被掌握和应用,它不必关心诸如标志、堆栈等琐碎问题。

③汇编语言本质上就是机器语言,它可以直接、有效地控制计算机硬件,因而容易产生运行速度快、指令序列短小的高效率目标程序。高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大、程序难以优化,所以运行速度较慢。

可见汇编语言的主要优点是可以编写在“时间”和“空间”两方面最有效的程序。但它的缺点也是明显的,它与处理器密切有关,要求程序员比较熟悉计算机硬件系统、考虑许多细节问题,因此,有时可以采用高级语言和汇编语言混合编程的方法,互相取长补短,更好地解决实际问题。

汇编语言最大的特点就是采用指令语句,也就是用符号语言来代替机器语言,例如用汇编语言书写的指令:MOV AX,BX和ADD AX,8。前者功能是要求CPU把寄存器BX的值传送给寄存器AX;而后者是要求把寄存器AX的值和8相加,并把结果传送给寄存器AX。是翻译过程中:汇编程序能把左边汇编语言源程序翻译成右边的机器指令序列。其中,把汇编语言指令“MOV AX,BX”和“ADD AX,8”分别转换成机器指令898DH和050800H,而后者是CPU能直接识别的,也就是机器语言,所以,计算机可以直接执行它们。由此可见,汇编语言只是把机器语言逐条指令代码来表示,这样做的好处是把难于理解和记忆的二进制语言(机器语言)转化为易于理解和记忆的符号。

另一个特点是它所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那必然就存在着寻址方式,如上面的例子,我们就不能像高级语言一样直接使用数据,而先要从相应的寄存器AX、BX中把数据取出。这增加了复杂性,因为这部分工作是由编译系统来完成的,而在汇编语言中是由程序员自己来完成的,这无异增加了复杂程度。

再者,汇编语言指令是机器指令的一种符号表示,而不同类型的CPU有不同的机器指令系统,就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。所以,除了同系列、不同型号CPU之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)cPU之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。

很多高级语言如Visual C++和Visual Basic等对实现的细节进行了封装,由于封装的关系,各种高级语言或多或少就存在着某种“缺陷”,比如,VB不支持指针,很多需要使用指针的API用起来就很不方便,像多线程一类的特征在VB中就无法实现;而汇编语言见到的是一个最真实的操作系统,可以用最灵活的方式使用各种系统功能。

汇编语言是各种编程语言中与硬件关系最密切、最直接的一种,在时间和空间的效率上也最高的一种,它是高等院校计算机应用技术必修的专业课程之一,对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术有着重要的作用;并对已有程序的代码分析和重新开发有着不可替代的作用。我们可用它作为工具来分析已有的软件,找出其优点,改进其不好的地方,提高其原有系统的性能。

总之,汇编语言在计算机语言发展过程中扮演了不可替代的角色。计算机专业的学生,不应仅仅满足于利用他人的成果来解决实际问题,还应具备有分析、研究原有软件系统,改进、完善、原有系统功能供用户使用的能力。当前我国的汇编语言人才缺乏,很多大公司、企业都需要这方面的人才。因此,当大家都在为各种高级语言而不遗余力的时候,我们可以独辟蹊径,相信可以闯出一片属于自己的天地。

汇编程序篇8

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

中图分类号: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).

上一篇:全寿命周期范文 下一篇:源程序范文