HI,欢迎来到学术之家,发表咨询:400-888-7501  订阅咨询:400-888-7502  股权代码  102064
0
首页 精品范文 汇编语言程序设计

汇编语言程序设计

时间:2023-06-02 09:59:37

汇编语言程序设计

汇编语言程序设计范文1

关键词:汇编语言;双语教学;机器指令;程序设计方法;实践教学

目前,在信息技术等相关专业,双语教学越来越受到有关专业教师的关注,这不仅是相关学科的教学改革与国际接轨的需要,也是现代高等教育发展的新趋势[1]。我校汇编语言程序设计课程组教师在多年承担该课程教学的基础上,从2005级学生开始,在计算机、软件工程、网络工程专业使用国外原版教材,采用双语教学模式讲授汇编语言程序设计这门计算机专业核心课程。在实施过程中,课程组对于双语教学的可行性论证、教材选择、教学方法与手段以及实验教学等环节,进行了有益的探索与实践。

1双语教学的可行性

汇编语言是面向机器的计算机底层语言,是软件和硬件的连接纽带。汇编语言程序存储开销小,运行效率高,它能够精细地控制硬件资源,具有高级语言无法替代的功能。从计算机教学体系上来看,汇编语言是计算机专业学生知识结构所不可缺少的一部分,它为后期开设的接口技术、计算机组成原理、计算机系统结构、操作系统、编译原理等课程,打下良好的基础,对于学生今后向更深的计算机专业领域拓展,起到重要的奠基作用。

1) 教学内容及教学目标。

汇编语言程序设计课程主要包括以下主要内容:

① 计算机中数的表示、微处理器、寄存器及其功能、存储器及存储模式、输入输出设备;

② 汇编语言的寻址方式、基本指令及语言要素;

③ 分支与循环结构、子程序结构等程序设计方法;

④ 高级汇编技术如宏指令、条件汇编等;

⑤ DOS及BIOS功能调用。

通过这门课程的学习,学生应熟悉汇编语言指令结构、掌握汇编语言程序设计方法、能够阅读、分析汇编语言源程序并具有编写、调试程序的基本能力。

2) 双语教学的有利条件与难点。

鉴于汇编语言程序设计课程的目标是训练学生利用机器指令编码,而机器指令是由CPU的指令系统决定的,其编程语言是基于英文助记符的符号语言,所以,汇编语言的编程规范与课程的教学语言采用母语还是外语无关。换言之,即使是用中文授课,学生在完成编程作业时,编码同样要采用基于英文的汇编语言源语句,从这点上看,对于汇编语言采用双语教学不仅不会增加学生的作业负担(实际上几乎对于所有的计算机程序语言都如此),甚至对于学生记忆和理解汇编语言指令还有一定的促进作用,这其实是一个有利之处。

但对于汇编语言程序设计课程采用双语教学,也存在着不少难点。例如:

① 汇编语言是面向机器的语言,它不像面向用户的高级语言那么接近自然语言,学习汇编语言要在了解硬件的基础上,准确地使用机器指令对寄存器、内存单元、接口地址进行操作并编码。这种“软硬兼施”的前提要求,往往使初学者有畏难思想;

② 利用汇编语言编程时,为了完成基本的输入输出操作,须频繁地将输入数值字符ASCII(American Standard Code for Information Interchange)码串转换成机器内部的二进制数值,或者将机器内部的二进制数值转换成ASCII字符串,然后通过编程进行DOS(Disk Operating System)功能调用或BIOS (Basic Input Output System)功能调用才能执行输入输出字符功能。初学者理解这种转换的意义和熟悉其功能的编程大多有一个较长的适应过程;

③ 若采用原版英文教材,将使得学生在解读文本时难度系数增加。

3) 双语教学的可行性。

能否对汇编语言程序设计课程采用双语教学?课程组教师分析了以上利弊,认为除了在原版教材的文本学习的语言载体上增加了难度之外,其他有关专业学习的技术难点在使用中文教材时同样存在。以课程组教师多年承担汇编语言程序设计课程的教学经验,技术难点都能够在教学过程中得到解决;而针对原版教材语言载体的难点,一方面由于普通高校本科二年级学生,其英语水平具备了一定的原版教材的阅读基础,另一方面,课程组也将在双语教学的过程中,研究教学法并指导学生培养对原文资料的阅读和学习能力。鉴此,课程组决定从我校计算机科学学院2005级学生开始,使用英文原版教材讲授汇编语言程序设计课程,这是我们对于计算机专业必修课程采用双语教学的首次尝试。

2教材选择

选择一本优秀的教材,是保证教学质量的前提。自1992级到2004级学生,我们采用的教材是由清华大学出版的《IBM-PC汇编语言程序设计》,其作者为沈美明和温冬婵教授。这本书内容详尽、案例丰富,习题全面[2],历年来的教学效果证明它是一本非常优秀的教材。

我校计算机专业的汇编语言程序设计课程在第三学期开设,其理论课时为48 学时。为了高效率地讲授课程内容,尽可能少地增加学生负担,我们拟定了选择英文原版教材的原则:内容精炼、重视例证教学、课后习题丰富。并且,考虑到个别英语基础薄弱的学生需要有一个逐渐过渡的学习过程,教材最好有相应的中文译本。

在参阅多本原文教材后,课程组重点讨论了机械工业出版社2004年11月出版的原版教材《80x86 Assembly Language and Computer Architecture》,其作者为美国田纳西州立大学Richard C. Detmer教授。此书的中文翻译版教材也已由机械出版社于2006年1月出版。《80x86 Assembly Language and Computer Architecture》一书为本门课程的双语教学提供了如下有利条件:

1) 内容精炼、习题丰富。该书包括了汇编语言程序设计中有关编程语言、编程方法的主要知识点,它与清华版教材相比,不含外设接口编程的内容。考虑到我校计算机专业教学大纲中,在汇编语言程序设计之后开设了“接口技术”课程,所以,可将这部分内容安排在后期的“接口技术”中讲授,同时也使得汇编语言程序设计课程的理论学时得以精简。该书各章节均安排了丰富的习题和编程练习实践题,有利于学生的学习和复习。

2) 实用的软件环境。该书重点采用了例证教学,每一章节都包含实际案例。用于汇编语言程序进行汇编、链接、调试的软件附带在一张CD中,其中,调试软件采用了先进的windbg平台[3]。

特别值得指出的是:该书提供的软件中有一个IO.H文件,这个文件中包括了有关的头文件和6个输入输出功能的宏文件。程序员在编程时,只须在自己的源程序中包含IO.H文件,就可以调用宏功能方便地完成数值字符串的输入或输出,不需要程序员频繁地作字符与ASCII代码的相互转换操作,大大降低了输入输出编程的复杂度。这样,在学生初学编程时,能够暂时回避繁琐的输入输出底层操作,重点聚焦在掌握指令系统、程序结构等主要知识点上。由于软件环境支持初学者方便地实现输入输出界面的编程功能,因此更容易给学生的编程带来信心,使学生有兴趣学习这门较为困难的计算机语言。当学生具备一定的编程基础后,再分析IO.H文件中的宏指令,让学生了解并掌握输入输出功能的底层实现。殊途同归,最终仍然可使学生达到掌握底层I/O编程的教学目标。

综上所述,课程组确定以《80x86 Assembly Language and Computer Architecture》作为汇编语言程序设计双语教学的教材。

3课堂教学

为了保证教学质量,针对双语特点对课堂教学采取了如下措施。

1) PPT课件。多媒体教学是提高教学效率、增强教学效果的得力手段。课程组教师根据双语教学的特点,精心制作了汇编语言程序设计课程的全英文PPT课件。为了使学生强化记识相关专业术语,在介绍各章内容之前,PPT中列表并重点强调本章的专业术语,以利于学生阅读本章节的内容。PPT课件各章节的框架结构如图1所示。

2) 双语比重权衡。为了既达到双语教学效果又保证专业教学质量,课程组教师努力提高英语能力,任课教师均具备出国留学经历,能够胜任双语教学要求,在课堂教学中全英文板书,且英语口头表达占50%以上比重;另一方面,对于教学内容的重点难点以母语解释,以便同时兼顾不同英语程度的学生,保证学生获取专业知识[4]。此外,本门课程的课堂练习、课外作业、期末考试均采用全英文方式。从学生的接受程度和适应能力来看,以上比重的权衡是合理的。

4实践教学

实践教学是计算机课程教学中不可或缺的关键环节[5],对于双语教学的课程更是如此。课程组教师在实践教学方面予以高度重视,开展了如下工作。

1) 针对《80x86 Assembly Language and Computer

Architecture》一书的编程环境编写了《上机实验指导手册》,其内容包括程序的汇编与链接过程、windbg调试工具软件的使用方法以及各章的编程练习题和编程指导。

2) 在课堂上利用多媒体设备给学生演示汇编程序的编写、汇编、链接、调试等步骤,并且鼓励学生拷贝自己的BUG(问题)程序并显示到投影仪上,在老师辅导下现场调试,直至成功运行。这种极为有效的案例教学模式,深受学生欢迎。

3) 精心安排、设计上机编程练习,使能力强的学生有难度较高的编程项目可作,编程基础相对薄弱的学生,通过学习也能达到教学要求。

5教学效果

汇编语言程序设计课程的双语教学已在我校计算机科学学院05-08级学生中实施。90%以上的学生们对这门课程的教学予以了高度评价,他们在调查问卷中这样表示:

双语教学对程序设计课程非常有益,原版教材为我们营造了用英语学习专业知识的氛围。(ID:05061245)

使用原版教材,有不明白的地方不得不去查字典,自己写的程序代码也是英文的,就像整天泡在英语之中,无形之中,英语能力有了提高。老师上课时对于难点疑点,除了用英文表述外,也用母语详解,取得了良好的教学效果。(ID:05061020)

通过“汇编语言”英文版的学习,自己英文水平和专业知识都提高了很多,尤其对原版教材的阅读,知道了很多地道的表达方式,阅读英文的速度也大幅上升。(ID:06061115)

我喜欢采用英语进行计算机课程的教学,它可以使我们在走出学校后更快更好地适应市场需求,有助于我们今后的就业。(ID:06061012)

专业课采用英语教学提高了我的英语水平,让我切实感受到计算机专业的国际化要求,开拓了视野,同时也成为我努力提升自己,让自己的知识更适应国际化发展趋势的一个催化剂。(ID:06061116)

调查问卷中也反映出少部分英语水平较薄弱的学生,存在较多地借助中文翻译版教材的现象,这是在双语教学中应重点关注并予以改善的问题。

6结语

我校汇编语言程序设计课程组教师五年以来的双语教学实践表明,采用双语模式进行计算机专业课程的教学是可行的,在专业知识的学习和接受方面,不仅不会弱化教学效果,而且在学生的英语应用能力方面起到了有益的促进作用。现在,本门课程已被遴选为湖北省精品课程。课程组将更深入地研究教学法,进一步提高教学水平,为培养高素质的少数民族高新技术人才努力工作。

参考文献:

[1] 丁学钧,温秀梅,刘建臣. 计算机专业双语教学系统模式研究与实践[J]. 计算机教育,2007(7):71-74.

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

[3] Richard C. Detmer. 80x86 Assembly Language and Computer Architecture[M]. 北京:机械工业出版社,2004:53-58.

[4] 秦奕青,佟俐鹃,赵刚. 计算机学科中的双语教学实践研究[J]. 现代教育技术,2007,17(11):105-107.

[5] 林福山.“汇编语言”教学过程探索[J]. 教育探索,2006(4): 89.

Study of Bilingual Teaching Based on Assembly Language Programming

TONG Xiaonian, LEI Jianyun, TANG Wan, XIONG Zhiyong

(College of Computer Science, South-Central University for Nationalities, Wuhan 430074, China)

汇编语言程序设计范文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.

汇编语言程序设计范文3

关键词:计算机教学;汇编语言;实验;改革创新

中图分类号:G642 文献标识码:B

文章编号:1672-5913(2007)18-0129-03

1 “汇编语言程序设计”课程存在的必要性

高职教育的目标在于培养具有组织、管理高新技术的生产,能够操作、调试和维护高新技术设备,解决生产过程中遇到的各种实际问题的高素质技能型人才,与普通本科教育有着本质的区别。眼下许多高职院校的计算机专业已经进行了各种教学改革。这些方法和措施所强调的大都是:以提高学生实践能力为主,理论够用就行,应用型不强的科目该砍就砍。所以,在许多高职院校的教学改革中,“汇编语言程序设计”被大刀阔斧地砍掉了,或者合并到“微机原理”、“计算机组成”等其他课程中。但是,尽管与发展初期相比,计算机开发和应用技术已经有了根本性的变化,我们有了各种高级语言、有了网络应用开发的许多编程工具,很多程序甚至可以自动生成,那么汇编语言是不是就真的应该退出历史舞台呢?笔者不这样认为。

汇编语言是计算机专业及相关学科一门重要的基础课程,是培养学生直接使用计算机硬件资源能力的一门课程。它不仅能帮助学生进一步理解计算机组成原理课程中的各种概念,而且还为其它课程如:操作系统、接口与通信技术和计算机控制技术等课程提供必要的预备知识。该课程在计算机学科课程设置中起着承上启下的作用。不能了解和熟悉汇编语言知识不仅将导致学生知识结构的不完整,也可能导致学生认知水平降低、开发手段贫乏。在一些应用中,汇编语言甚至是开发工具的唯一选择。

当前嵌入式系统软件的开发非常热门,其发展前景很广阔,嵌入式系统较常用的操作系统Windows CE与Windows同样是基于Win32 API的,Win32汇编语言的学习有利于开展后续课程“嵌人式系统”,为嵌人式系统的软硬件开发打下了坚实的基础。

总之,无论对于计算软件还是硬件工作者来说,汇编语言都是十分重要的基本工具。因此,高职教育中计算机及其相关专业开设“汇编语言程序设计”课程是非常必要的。

2课程改革势在必行

目前许多高职院校尤其是计算机专业的教学模式,大多是本科计算机专业的“压缩版”,在制定教学计划和大纲时,以名校相应专业的教学大纲作为自己的大纲,以名校选用的教材作为自己开展教学的教材,就如“汇编语言程序设计”这门课的教材,很多学校仍然采用清华大学出版社出版的《IBM-PC汇编语言程序设计》。这种教学模式尽管有其先进和优秀之处,但并不适合高职教育。而另一方面,汇编语言本身固有的复杂性,使学生理解起来比较困难。这体现在以下几个方面:

1) 由于汇编语言与硬件联系紧密,学生一般是在还没有学习过相关硬件课程的情况下就开始学习汇编语言的,因此初学时不易理解,容易造成厌学情绪。

2) 汇编语言的内容丰富,需要记忆的内容很多,学生在学习一段时间后容易遗忘,从而造成跟不上课程的进度而放弃的现象。

3) 由于学习高级语言后产生的思维模式,使得学生在编制汇编语言程序时易出现一些语法或逻辑上的错误。

4) 在学习汇编语言的过程中,由于课程的特点,学生不能够及时上机实现,造成学生感到课程抽象,很难理解,甚至觉得所学的知识无用,从而产生厌学情绪。

以上归纳的几点,是我们在教学实践中经常遇到的现象,要解决这些问题除了要改革教学方法以外,还要从学科特点和学生的实际出发,改革课程设置,完善课程的前后衔接,合理安排课程开设的次序等。因此,如何改革汇编语言课程以提高其教学效果和教学质量,使它跟上计算机技术的发展,是我们当前亟待解决的问题,而不是简单地取消这门课。

为了使学生系统而全面地掌握汇编语言的编程方法,把握本课程的重点,消化难点,我们用实验的方法对“汇编语言程序设计”这门课程的教学方法进行了改革,取得了一定的成绩。

3行之有效的改革尝试

在认清汇编语言的重要作用和明确其教学改革的紧迫性后,我们制定了改进的教学大纲,并据此编写了相应的实验教材讲义,开始了“升级”汇编语言教学的改革尝试。

3.1教学手段的改革

“汇编语言程序设计”课程一向都有上机实验的教学要求,但教学主体是课堂教学,无论是实验设计还是实验强度都带有强烈的“验证性”色彩。而高职院校的培养对象区别于普通高等学校学生的鲜明特点是:思想活跃、智商与情商皆高、活动能力强,但普遍存在的问题主要是学习自觉性不高、单纯凭兴趣学习的观点重、刻苦精神差等。因此,如果上课基本不听,则验证性实验的基础就不存在,实际教学效果也可想而知。所以对于这样的学生群体单凭课堂教学和一般作业,要真正领会汇编语言程序设计课程所介绍的概念、原理、方法和技巧等,是很困难的。经验表明,学习并真正体会和掌握汇编语言程序设计的最好方式是对它进行充分的实践。把实验作为学习汇编语言程序设计的主导方法,为学生提供了一个掌握汇编语言程序设计全新的学习方法,可以由此来体验汇编语言程序设计的知识及其应用技巧。当然,通过实验,也一定能够很好地提高学生汇编语言程序设计能力。

区别于传统实验,我们的理想是,用实验、实践的方法来改革理论教学方法。所以我们把课堂搬到了实验室,所有的课程都在实验室完成,让学生在实践中激发对相关理论的兴趣,再用提高了的理论水平来指导新的实验和实践活动。而我们在教学中采用“先做后说”的方法,把根据学科理论知识精心设计的实验实践环节与学科理论教学相融合,解决学生的认知困难,取得了很好的教学效果。

3.2教学内容的改革

我们在取舍教学内容时,体现了“浅、广、新”的特点。其中,“浅”体现在重点介绍基本概念、原理和方法,而没有过多地详述深入和细节内容;“广”体现在比较全面地介绍了指令系统和汇编语言所涉及的内容,形成比较完整的知识体系;而“新”更是我们教学改革的重点,介绍了简化段定义程序格式、32位指令及编程、混合编程等。根据当前国内教学实际,我们仍然以16位8086CPU指令系统和基本汇编语言知识和程序结构作为基本的、重点的内容;而将新增内容作为独立章节引出。采用微软的最新版本汇编程序MASM 6.11,但主体内容仍然适合MASM 5.0版本。教学内容中,舍弃了一些过时的应用技术,而引入了一些实用的汇编语言程序设计方法,例如开发大型程序需要的模块化方法、与C/C++语言的混合编程技术(尤其是汇编语言与Visual C++ 5.0/6.0的混合编程,非常受学生的欢迎)、新增的高级语言特性伪指令等。

新编的实验教材包括7个方面共20个实验。全部实验结合目前广泛使用的PC机Intel 80x86 CPU来开展教学,目的是通过一系列使用80x86和Windows环境下32位汇编语言的实验练习,把汇编语言程序设计的概念和理论知识融入到实践当中,从而加深对汇编语言程序设计的认识和理解。实验练习几乎覆盖了汇编语言程序设计教学的各个方面,内容涉及汇编语言编程基础、构建汇编语言编程环境、汇编语言程序设计、输入输出与中断、Win32汇编语言程序设计及汇编语言与C/C++的混合编程等。

3.3考核方法的改革

为了保证教学效果,必须进行考核。传统的汇编语言教学的考核方法多为笔试,再参考平时上机的表现,这种考核方法不能体现学生的真实水平。改革后的考核手段多样化,由平时作业、实验、论文、课程设计、阶段性练习和期中、期末考试等多种环节组成,新编的实验教材每个实验后面都有学生自测和教师评价栏目,并且得到了切实认真地执行,这样极大地改变了读书为了考试,只有考试前才读书,甚至连考试前都不读书的状况。

4实验教学中应重视教材建设

教育的一个重要原则是“因材施教”,高职教育对人才的培养,应该体现到教材建设上。教材建设不仅要做好减法――适当地降低理论要求,也要做好加法――增加探究性实验并在实践环节中有突破性的创新。要根据学生求知欲望强的特点重视扩大学生的知识面,要利用学生动手能力强的特点来提高学生的实践能力、创新能力和就业竞争能力,努力形成一个“什么都学过什么都会点”的积极局面。

教学内容要有可操作性、趣味性和适当难度。可操作性保证学生都能完成作业、实验、设计而促进学生学习信心的建立,在一定程度上减少学生抄袭的理由,克服作业、实验、论文普遍抄袭的弊病;趣味性体现“寓教于乐”以提高学生完成作业、实验、论文的积极性;适当难度有助于激发优秀学生进一步钻研的斗志。

实践证明,“汇编语言程序设计”课程的实验教学改革,取得了明显的效果,也受到了学生的普遍欢迎,通过教学改革,学生提高了学习兴趣,由被动学习变为主动学习,为后续课程的学习打下了坚实的基础。

笔者在“汇编语言程序设计”课程实验教学中所做的改革尝试,目的是为了“抛砖引玉”,试图引起更多的老师产生共鸣而繁荣计算机实验教学。

参考文献

[1] 周苏,金海溶. 汇编语言程序设计实验教程[M]. 北京:科学出版社.

[2] 李立冬,朱晓鸥. 微机原理与汇编语言基础[M]. 北京:高等教育出版社.

汇编语言程序设计范文4

摘要:“汇编语言程序设计”课程是计算机及相关专业的专业基础课,多年来随着计算机硬件和软件的发展,汇编语言从DOS汇编、80X86汇编到Win32汇编经历了较大的变化。在教学过程中如何准确的制定教学计划、确定教学内容、较好地掌握教学方法是该课程在教学过程中的关键问题。本文根据作者长期的教学经验和实践过程对“汇编语言程序设计”课程的教学内容和实践方法等方面进行了探讨。

关键词:汇编语言;教学内容;实践方法

中图分类号:G642

文献标识码:B

1引言

“汇编语言程序设计”课程是高等院校计算机及相关专业必修的一门课程,尤其是对计算机专业来说,它是一门靠近机器的语言课程,该语言在时间和空间上具有较高的执行效率,对于训练学生加深对操纵硬件的方法的理解、掌握系统底层程序设计技术、程序调试技术以及程序的代码分析都有着不可替代的作用。目前,大多数“汇编语言程序设计”的教学内容主要是在实模式下的16位/32位汇编指令和程序设计方法,然而,当前保护模式下的Win32汇编得到了广泛的应用,因此,应当合理的调整教学内容,使本门课程更适应当前的应用环境。同时,案例教学是当前教学法研究的主要探讨的问题,如何将复杂的教学内容案例化,是解决在教学过程中汇编语言复杂难学问题的关键。

2汇编语言教学内容的分析

2.1汇编语言的应用情况

汇编语言是与机器语言一一对应的语言,因此,是培养学生了解和直接使用计算机硬件资源的语言,多年来汇编语言一直是学习和理解其他高级语言的基础,在教学过程中也是计算机组成原理、微机原理与接口技术、操作系统、接口与通信技术和计算机控制技术等课程的前导课程,在计算机与相关学科课程设置中起着承上启下的作用。

在实际应用中汇编语言也是有广泛的应用需求,例如:与硬件有关的嵌入式系统的底层设计、操作系统的核心部分设计、实时控制系统的软件设计、接口电路的初始化程序,外部设备的底层驱动程序以及复杂算法的优化等,汇编语言具有执行速度快占用内存空间小的特点。值得说明的是汇编语言可移植性差,不同的应用环境采用的汇编语言也不同,但基本原理是相同的,汇编语法规则和指令格式基本相同,因此,目前大部分高校在汇编语言程序设计课程的内容设置上仍以80X86的实模式为教学的主要内容。

随着计算机技术的发展,微机的操作系统由在DOS系统变为Windows系统,在Windows系统下的汇编有较大的变化,Win32汇编的应用领域也非常广泛,例如:在Windows下的系统分析、代码优化、系统漏洞和病毒分析等,通过逆向工程技术可以还原大型软件系统底层逻辑以及顶层架构,通过反汇编的代码可以加深对Windows底层理解,对高级语言的系统调试通过反汇编解决底层bug的能力,汇编语言仍然是不可替代的。因此,为了能够适应当前计算机应用环境,汇编语言程序设计的教学内容有必然要引入Win32汇编。

2.280X86的三种工作模式

Windows操作系统是一个多任务的操作系统,可以同时处理多个程序。该系统微处理器有3种工作模式:实模式、保护模式和虚拟86模式,目前汇编语言程序设计课程主要介绍在实模式下的汇编程序设计,32位指令也是在实模式下,因此在实模式下的80X86处理器就相当于一个快速的8086处理器。保护模式是80386以上处理器的主要工作模式。在此方式下,可以寻址4GB的地址空间,同时,保护模式提供了先进的多任务、内存分页管理和优先级保护等机制。虚拟86模式可以在保护模式的多任务条件下进行16位与32位任务的切换,支持内存分页管理和优先级,内存的寻址方式和8086相同,可以寻址1 MB的空间。由此可知这三种工作模式具有一定的联系。

三种工作模式的存储结构存在较大差异,实模式是80386以上处理器工作的基础,真正能发挥Win32作用的是保护模式,保护模式是当前个人计算机的主要工作模式,因此,汇编语言程序设计课程的内容应在原来的实模式下的汇编增加保护模式的Win32汇编,但是Win32汇编结构具有一定的难度,可以根据学生的掌握情况适当增减其内容。

3实模式32位汇编与保护模式的Win32汇编的主要区别

3.1程序架构的区别

实模式汇编程序是将程序分成若干个段,如:数据段、代码段、堆栈段、附加段等段的内存模式,每个段的最大存储空间为64K,段与段之间可以重叠、部分重叠、邻接和分离。Win32程序是运行在保护模式下的,Windows操作系统把每一个Win32应用程序放到分开的虚拟地址空间中去运行,Win32程序只有一种内存模式,即FLAT模式,没有64K的段大小限制,所有的Win32的应用程序运行在一个连续、平坦的4GB空间中。由于Win32的汇编程序不用和段寄存器打交道,可以用任意的段寄存器寻址任意的地址空间,因此,保护模式的Win32汇编比实模式32位汇编在程序架构上更简捷方便。

3.2输入/输出的方法

在实模式汇编程序是通过BIOS和DOS中断完成输入/输出操作的,而保护模式的Win32汇编的输入/输出操作是调用Windows的API函数,一般要包括三个关键的动态连接库:Kernel32.dll(系统服务功能)、Gdi32.dll(图形设备接口)、User32.dll(用户接口服务),从而提供了Win32 API 的核心技术。这样使得程序员可以像使用高级语言调用库函数一样方便的使用API函数,完成很多功能。但是,虽然 Windows提供了大量的API函数,需要使用者深入的了解和掌握消息、句柄、窗口和API函数的使用方法,这部分内容实际上是“Windows程序设计”课程的主要内容,如果“Windows程序设计”课程安排在“汇编语言程序设计”课程之前,那么,保护模式的Win32汇编将更容易理解。

4汇编语言案例教学方法的思路

案例教学法是教师利用与教学内容密切相关的实际案例来解决教学中的存在的问题。通过对汇编语言程序设计课程的分析,本门课程主要存在的问题是:授课学时少教学内容多,教学内容复杂,尤其是增加了Win32汇编,因此,教学方法的改革是非常必要的。

4.1课堂教学内容和方法的改革

课程内容的设置主要完成如下部分,基础部分:微型计算机的CPU结构,存储器的组织方式,80X86的三种工作模式;80X86的寻址方式;以16位指令为基础,结合80386以上的32位指令,指令的重点在常用指令(包括32位指令),应彻底改变面面俱到的大量指令的堆砌。程序设计部分:该部分应该侧重于汇编程序的特点,切忌用高级语言的思路讲汇编语言,要注意突出汇编语言的是底层语言的特点。输入输出部分:应包括3部分,DOS、BIOS和Win32的接口程序的应用,汇编的底层概念主要体现在输入输出中断服务程序的设计和调用,虽然微机目前是Windows操作系统,DOS、BIOS的调用仍然有重要的意义和应用价值,如果只介绍Win32的接口程序,就失去了汇编语言的底层的意义。应用部分:主要是C/C++与汇编语言的混合编程和Win32汇编的程序设计,该部分内容应考虑实际应用的案例使学生充分体会汇编的魅力。

4.2实践环节的建设

将最新的技术体现在实践教学中,在教学过程中注重实践能力和创新能力的培养,需要我们重视对实验实践环节的建设。

在实践教学过程中我们编写了具有一定应用价值的实验案例指导书,任课教师将科研成果移植到教学实验中,实验案例包括:语法案例、经典案例和综合案例等。将教学内容通过实验案例在课堂上和实验中讲给学生,将复杂的教学内容实例化,让学生真切的体会到汇编的实用价值。在实验过程中采用Win32的编译系统:RadASM + MASM32,调试工具为Code View,该系统使用调试方便,为后续的继续学习和使用打下基础。

5结束语

汇编语言程序设计课程是计算机及相关专业基础课程,汇编语言具有的应用价值是高级语言不可相比的,在教学过程中教学内容的合理安排、案例的设计、实验方法与实验工具的确定是课程改革的关键,案例教学模式是提高学生对课程的理解能力、动手能力和创新能力最好的教学模式。

参考文献:

[l] 李未. 提高教育质量,培养创新人才[J]. 计算机教育,2008(1).

[2] 马力妮.80X86汇编语言程序设计[M]. 北京:机械工业出版社,2004.

[3] 赵树升,杨建军.DOS/Windows汇编语言程序设计教程[M]. 北京:清华大学出版社,2005.

[4] 严义,包健,周尉. Win32汇编语言程序设计教程[M]. 北京:机械工业出版社,2007.

汇编语言程序设计范文5

1 课程的地位与现状

“汇编程序设计”是计算机及相关专业的专业基础必修课,学生通过本课程的学习,首先,可以更加深入的理解计算机硬件系统的组成结构和原理,可以更好的理解寄存器,中断,寻址方式等概念;其次,可以促进对高级编程语言相关概念的理解,高级语言在编译时通常会先生成汇编语言代码,然后再转换为最终的机器码,学习汇编语言程序设计可以充分理解程序的编译执行过程,同时学生对于堆栈的使用、子程序调用等过程会更清晰;利用汇编语言还可以设计出效率极高的核心底层程序,如设备驱动程序,汇编语言程序能够直接有效地利用机器硬件资源,因此用汇编语言编写的程序一般比用高级语言编写的程序执行的快,且所占内存较少,在一些实时控制系统中,这点更不可缺少和替代[1]。因此本课程一直是计算机专业的核心课程之一,在整个计算机专业课教学中起着承上启下的作用,为后续课程的学习打下重要的基础。而目前以ARM为核心的嵌入式技术逐渐成为各个高校教学的主流,基于ARM架构的汇编语言程序设计是学习嵌入式技术的基础。

但是在实际教学过程中,往往教学效果并不好,学生学习的积极性不高。笔者认为主要包括以下一些问题:(1)指令多而且复杂,难以记忆;(2)课程的内容比较抽象,与高级语言程序设计有较大的差别;(3)课程内容滞后于当前计算机技术的发展;(4)课程内容连贯性强,如果有一部分内容掌握不好就会造成知识脱节;(5)实践教学环节薄弱。对“ARM汇编语言程序设计”课程教学进行改革,从而提高课程的教学质量,达到预期的教学效果是我们急需解决的问题。笔者经过教改探索,认为应从以下几点进行改革。

2 合理安排教学内容

在“ARM汇编语言程序设计”课程中主要包括三个部分,第一部分主要介绍汇编语言程序设计的基础知识和ARM系列微处理器,第二部分是ARM指令系统,第三部分是ARM汇编语言程序设计。目前授课时都是先讲完所有的指令(包括数据处理指令,Load/Store指令,分支指令,程序状态寄存器指令,协处理器指令和软件中断指令)以及伪指令后,再开始讲授如何编写汇编程序。学生需要记忆大量的指令、伪指令的格式和功能,却不知如何用来编写程序,导致无法理解消化所学内容,容易感到枯燥,学习兴趣不高[2]。

笔者认为可以将课程内容进行调整。比如讲完数据传送指令、运算类指令之后就可以讲一些顺序程序设计的实例并让学生完成一些简单的题目,在实际做题过程中更好的学习指令的功能和用法。同样在讲述指令的条件执行时与分支和循环程序设计结合起来,讲述分支指令BL时与子程序设计结合起来,将编程环节提前,通过实际的例子让学生建立起感性认识,对指令的掌握会更好,在此过程中学生会建立成就感,学习兴趣也自然产生了。

另一方面,“ARM汇编语言程序设计”课程与其它一些专业课程密切相关,在安排教学内容时要尽量注意课程之间的衔接与融合。“ARM汇编语言程序设计”与“嵌入式系统接口原理与应用”,“嵌入式软件设计与应用”等课程都密切相关,是学习嵌入式系统设计不可缺少的一部分。还有一部分同学认为汇编语言已经“过时”了,在今后的工作中不会用到,教师讲授时可以通过一个嵌入式系统应用的实例说明汇编语言程序设计在系统引导程序,接口驱动程序中的重要作用,以及具有高级语言无法比拟的优势。

3 采用比较教学法

所谓比较教学法是指将陌生的东西与熟悉的东西做比较,找出相同和不同的地方,然后进行差异化学习[3]。比如可以将ARM指令系统与我们熟悉的x86指令类比,来提速学生的理解记忆过程。ARM指令与x86指令编程操作有明显的共性,甚至很多指令助记符都是相同的。如MOV,ADD,SUB等,学生很容易接受。所以要特别突出ARM指令体系的不同之处,比如:ARM绝大部分指令可以根据状态寄存器的状态决定是否执行;ARM指令集中设置专门的Load/Store指令用于存储器的访问;ARM不设专门的移位指令,各指令中均直接可进行移位操作等等,而这些不同之处更突出体现了ARM处理器的RISC特性,所以学生很容易记忆。同样在硬件上也可以做类比,比如ARM与x86处理器的中断处理过程的区别。

还可以将汇编语言与学生比较熟悉的高级语言做类比。汇编语言也好,高级语言也好,都只不过是程序设计的工具,因此对于程序的基本功能和程序设计的基本问题都有相通的实现机制,特别是在程序设计的基本思想上。但是汇编语言和高级语言毕竟是不同级别的语言类别,高级语言语句功能更强,编程时更灵活方便,而且即便是同样的问题,如数据安排、数据处理、程序流程控制、子程序调用等,实现起来也有不同的方法。比如高级语言子程序调用时需要同时提供参数,一般格式是:函数名(参数);而在汇编语言中,子程序在定义时不需要有关参数的说明,在调用时也无需同时提供参数,子程序的调用格式为:BL子程序名。也就是说,高级语言中函数的参数传递是显式进行的,而汇编语言中的参数传递是隐式的。在汇编语言中参数传递可以利用寄存器实现,也可以利用存储单元实现,还可以用堆栈实现。在实际应用中通常综合以上方法来达到最佳效果。

4 采用多媒体与板书相结合的教学手段

充分采用多媒体的手段来授课是必要的,在汇编语言的教学中,大量采用多媒体课件,对于一些抽象难懂的知识,借助于图表、动画等进行讲解,可以给学生一个感性、直观的认识,使大家集中注意力,加深对内容的理解。比如在讲解寻址方式时,通过工作流程动画的演示,学生很容易理解各种寻址方式的不同之处。但是教师并不能完全依赖于多媒体手段,如果把所讲的程序直接做到课件中,讲解时会出现朗读课件的情况,与学生的交互不足,影响授课效果。因此最好将多媒体与板书相结合,在多媒体课件中展示程序的流程图,而将程序以板书形式展现给学生,写板书时可以与学生充分交流,让他们有足够的时间来理解编程的思路和过程,同时也大大活跃了课堂气氛。

5 实验教学注重实用性

汇编语言是一门实践性很强的语言,实验环节在整个教学活动中占据了举足轻重的地位,是提高学生动手能力的重要环节。因此,教师一方面要耐心讲解让学生熟悉汇编语言从汇编、链接到调试执行的整个过程,另一方面要让学生多进行上机实践。还可以要求学生将一些c语言的程序段的功能通过汇编语言实现。通过集成开发环境的帮助,学生可以更好的掌握两种语言编程的异同点,达到更好的学习效果。对于一些复杂的题目,可以让学生课外分组来进行设计,题目的类型可以是研讨型的让学生从更多的角度去思考编写程序。

汇编语言程序设计范文6

汇编语言程序设计是高校计算机专业的一门必修课,是组成原理、操作系统和信息安全等核心课程的先修课程。汇编语言使用指令助记符,使机器语言易学和易懂。相比高级语言编程,汇编语言程序运行效率高、可直接控制硬件,但是需要深入了解硬件,编程效率低,并且每种计算机的汇编语言编程结构不尽相同,上手较慢,降低了学生的学习兴趣,教学效果也随之下降。因此,需要对汇编语言教学现状进行剖析,并提出相应的改革措施。

1 汇编语言程序设计教学存在的问题

目前,汇编语言课程教学过程中存在以下问题。

1.1 教学内容相对陈旧,缺乏实用性

目前,很多高校的汇编语言教学还是基于十六位机,多采用清华大学出版的沈美明《ibm pc汇编语言程序设计》一书。其中,cpu内寄存器主要是16位,内存空间只有1mb,且只能在实模式下进行内存管理。而在目前的计算机技术发展环境下,内存空间以gb计算,传统的16位汇编语言教学模式明显滞后于现今的主流技术,学生学习时会觉得学过即淘汰,学习积极性较低[1]。

1.2 教学方法基本上还是采用常规的灌输式的教学方法

课堂讲授按照书本一章一节进行,知识点相对零散且枯燥乏味,难以在学生脑海中建立对语言的整体认识。特别是对于掌握了计算机基础知识和计算机语言知识的学生,在讲授汇编语言程序设计时仍延用常规的方法,不利于学生掌握大型汇编语言程序设计方法。

1.3 实验环节重视不够,实验教学方法单一

目前的实验安排都是围绕如何消化课堂内容展开,实验环节相对孤立且模仿性强,难于锻炼学生的综合问题解决能力;实验课只是布置任务让学生自己做,较少关注创新思维的培养。

2 教学改革措施

针对汇编语言程序设计教学中存在的问题,从以下方面进行了教学改革尝试。

2.1 更新教学内容

为了适应硬件系统32位大环境,让学生学有目标,需要更新汇编语言的教学内容。在16位汇编语言基础上,适当增加32位汇编语言程序设计内容,具体包括:编程结构、寻址方式和指令系统。编程结构是汇编语言程序设计的着陆点。当前,winxp等主流操作系统都工作在保护模式下,在讲授实模式编程结构基础上,再介绍保护模式的编程结构,学生会感觉新颖实用。其次,32位汇编语言的寻址方式类型和操作数位数都大为增加。再次,32位汇编语言的指令系统多达300多条指令,其源代码的数量、速度、占用的内存资源都有了质的飞跃。因此,学习32位汇编,可以深入了解操作系统运行细节,并增加学生的学习兴趣。

2.2 案例教学法的使用

常规灌输式的教学方法下,教师对语法规则和指令系统逐个进行讲解,学生仅仅是被动、机械和强制的记忆,学习后面知识点时,容易忘记前面相关知识点。而使用案例教学法,通过简单实例引出枯燥的语法规则和指令系统,让学生即学即用,便于知识的前后衔接和呼应。案例教学的主要步骤包括:(1)案例设计和准备;(2)章节重点难点讲解;(2)学生分析案例;(4)教师分析和总结案例;(5)上机验证并完善案例。在不断变化和扩充的案例中,使学生有充分的空间思考所学内容,也易于引出新知识点,使得教学内容具有连贯性,有利于学生提高自信心并系统理解和掌握汇编语言。

2.3 精心安排实验及实验教学方法[2]

汇编语言的实验内容主要包括以下内容:调试工具debug的适用、汇编语言程序设计的上机过程、基本程序结构设计、子程序设计和中断调用,此外还可以让学生了解汇编语言与高级语言的连接,时间允许的情况下,还可以设计综合实验。实验教学中,可以采取演示法、模仿法和对比法相结合的教学模式。老师借助多媒体演示工具,将实验步骤从头到尾讲解一遍,学生跟着操作,可以极大提高学习效率。模仿方法下,老师将一些经典程序介绍给学生,学生在读懂后模仿编程,一段时间积累经验后,就可以编写较复杂的程序。另外,可以将汇编语言与c语言联系起来,对比其异同,促进学生对两种语言的理解。

3 结语

汇编语言程序设计范文7

关键词:汇编语言;课程特点;教学内容;教学方法

中图分类号:TP313 文献标识码:A文章编号:1007-9599 (2010) 05-0000-01

Knowledge and Thinking on Teaching Content and Methods of Assembly Language

Shi Dongsheng

(Inner Mongolia University of Science and Technology Add,Baotou014010,China)

Abstract:Assembly Language and Programming Design is a compulsory basic course for computer majors. The thesis sets out to illustrate the characteristics of Assembly Language course and based on the narrations and in consideration to the practical teaching tasks, analysis has been carried out regarding the teaching contents of the course while countermeasures have been analyzed on the teaching methods regarding how to improve the quality of teaching and learning.

KeyWords:Assembly Language;Course Characteristics;Teaching Contents;Teaching Methods

汇编语言是计算机及电子信息类专业十分重要的基础课程,是学好徽机原理、操作系统、编译原理的知识准备。它能充分发挥和利用计算机硬件特性的语言,能够完成高级语言难以胜任甚至无法完成的任务。笔者结合工作实践,对该课程的教学内容和特点、及教学方法做以下探讨。

一、汇编语言课程的特点[1]

汇编语言是计算机能提供给用户的最快而又最有效的语言,同时能够利用计算机所有硬件特性并能直接控制硬件。所以高级语言简单、易学且开发效率高,而汇编语言复杂、难懂、开发效率低。对汇编语言的课程特点主要表现在以下两个方面:

(一)汇编语言的优点

主要变现在以下两个方面:第一,用汇编语言容易得到高时空效率的程序。由于汇编语言本质上就是机器语言,可直接、有效地控制计算机硬件,因而与高级语言相比,容易得到运行速度快、执行代码短、占用内存空间少的高时空效的目标程序。

第二,用汇编语言能设计出高级语言无法实现的程序。正是由于与机器的密切相关性,使得汇编语言能充分利用计算机的硬件特性,编写出与硬件紧密相关而高级语言又无法实现的程序来。

(二)汇编语言的缺点

主要表现在两点:第一,汇编语言难学、难理解、难调试难维护等。第二,汇编语言程序可移植性差。

二、对汇编语言课程教学内容认识

笔者根据自身教学实践,对汇编语言教学内容的安排与经验总结为以下几方面:

第一,对于十六进制的加减法运算、有符号数的补码计算要充分了解学生基础,在此基础上进行复习巩固。

第二,对处理器中寄存器的介绍,存储器的组织结构,操作数有关的寻址方式这一版块的内容,建议不要介绍与转移地址有关的寻址方式,因为相关知识还比较少,学生很难理解。

第三,就传送指令、算术运算指令和逻辑指令、系统功能调用简介来说,应该重点介绍这些指令,而其他指令分散到后面章节中或者舍去。而且每种指令也是精选最基本、最重要的指令进行介绍,如传送指令中只介绍mov、xchg、push、pop、lea、lds和les指令,力争讲过的内容精通,课堂没有介绍的可以触类旁通。

第四,伪指令用于辅助汇编语言程序设计,不作为重点,使学生可以理解汇编语言程序的格式即可,不引申不常用到的伪指令和不必要的细节。

第五,分支、循环和子程序设计版块的内容,介绍用到的一些指令及程序设计方法,采用短小精悍的程序训练学生,培养汇编程序设计的基本功能。

第六,输入输出程序设计、模块化程序设计、混合编程等高级汇编语言技术内容,经过前面的学习学生已经具备扎实的汇编语言基础知识,能够进行程序设计,引出实用技术,可以采用基于问题的教学方法,培养学生的实践能力。

三、提高汇编语言课程教学质量的对策思考

(一)教学手段的多样化

汇编语言由于其基础性,而又它不同其他基础课一样以实践操作为主,体现着它的比较抽象性,理论性较强的特征。如在寻址方式和指令系统以及源程序结构都比较抽象、复杂、难于理解。为了使学生能够较好的理解这些抽象的概念,在教学过程中针对这些内容可采用多样化的教学手段,可以从如下两方面入手:

第一,将抽象的理论形象化。计算机科学技术最大的特点是,它的最初愿望和最终目标都是模拟和实现人的思维过程,体现出计算机系统成为人的思维的延伸。因而它的许多理论与算法本质上是在人的思维基础上获得创建与发展。基于这一特点,我们教师就可以将课程中有关难于讲解和难于理解的原理、算法,和人的思维方式和对事物的处理方法以及人与人之间的关系关联起来,结合与学生密切相关的事列对原理与算法进行讲解。

第二,要利用功能程序段使学生更好地掌握指令系统。微机的指令系统的指令多达上百条。进行机械地记忆会很枯操,学生往往难以掌握和运用。但程序设计又需要熟练掌握其中的部分指令。所以,为了使学生更好的掌握指令系统,可借助各种程序范例来理解相应的指令。这样不但使学生能够知道如何在程序中具体应用指令,而且对以后的程序设计也有帮助。

(二)强实脸教学与课堂教学相结合

计算机专业的两个最基本教学目标是计算机科学和计算机文化。计算机科学主要是传授学生计算机有关的专业知识,对计算机系统要进行深人了解,强调计算机的学术价值。这一方面主要表现在对理论及算法的学习和研究。而计算机文化,它的含义是利用计算机进行信息处理的能力、操作和程序设计的能力,它十分强调实践,即上机操作。对于任何一门程序设计语言来说,上机实验操作环节都是不可或缺重要环节。

(三)发挥现代教学媒介的优势

按照任的认知规律,人的认知活动是人们对外界信息进行加工和筛选的过程。我们在教学过程中,如果把汇编语言的基础知识以直观形象、灵活多样的形式展示给学生,促使学生短时间内准确理解。我们应充分利用以计算机为核心的现代信息技术,充分运用现代化的教学媒介,使教师脱离繁琐的推理、论证、讲解,使学生在适中的教学时间内理解、掌握和获取更多的知识和信息,从而提高教学效质量。

四、结束语

教学质量是对教师劳动成果的一个重要评价指标,而课程特点又在很大程度上影响着学生的学习兴趣与学习效果,因而对教学内容的优化与改革,对教学手段的不断改进与丰富,保证教学目标的顺利实现,需要我们教育工作者进行不断的思考和探索。

参考文献:

汇编语言程序设计范文8

【关键词】C语言 编程 结构化

1 C语言的编程特点

1.1 C语言的定位

很多人都普遍的认为C语言是在B语言的基础上发展过来的一种高级编程语言。然而从编程语言的层次结构方面来说,我们应该认为C语言,是在汇编语言的基础上发展而来的,它比汇编这类编程语言要高级,但是比一些可视化的编程语言又低级,所以准确来说,C语言应该算是中级编程语言,或者称为准高级程序设计语言。目前很多高级程序设计语言都是在C语言的基础上发展而来的,或者至少借鉴了C语言程序设计的思想。80年代初,Bjarne Stroustrup在贝尔实验室对标准C进行了改进和完善,C++得以诞生,使得面向对象的程序设计思想得以提出和落实;21世纪初,人们将C语言和单片机相结合,开发出来了应用于单片机编程的C51语言,使得单片机的程序设计从反复的汇编语言设计中抽身出来,大大的提高了程序的设计效率。

可见C语言在整个编程语言的发展过程中属于承上启下的作用,同时其自身的应用领域又在不断的更新和发展。

1.2 C语言的编程特点

通过上述C语言的定位可知,它既具备高级程序设计语言的结构性和层次性特点,同时也兼具了低级程序设计语言的实用性。

(1)用相应的C语句可以实现对微机操作中的字节、地址等进行直接访问。

(2)基于函数的结构化特点,使得复杂的软件系统可以由多个人,以设计子函数的形式,分别各自进行程序开发。之后进行函数的汇总,最后由主函数,按照既定的程序流完成对各个子函数的调用就行。

(3)丰富的数据类型,尤其是指针类型,可以很方便的应用于复杂数据和大数据的访问和处理。

(4)由于C语言基本上不向低级语言那样直接涉及到对硬件的操作,所以C语言程序往往具有很好的通用性,方便程序移植。

2 C语言的编程技巧

2.1 扎实基本工

在进行C语言程序设计之前,首先要熟悉运算符、表达式以及各钟类型数据的定义和使用方法,其次对顺序、分支和循环三大程序结构要有较好的把握,并熟练使用while循环、for循环、switch语句等。如果要在程序的设计上有进一步的提高,那就需要对“指针”能够进行熟练的使用了。指针可以用于表示变量,但更多的是用于代表数组、存储地址以及函数地址。在代替不同变量时将返回不同的值,可以说指针的功能十分强大。对其熟练使用有助于程序设计的简洁和便利。

2.2 立足C语言的结构化的特点,熟练程序设计基本构型

C语言典型的特点就是结构化,在进行具体的程序开发时,应该首先要根据设计的软件项目,然后进行任务的细分,由于C语言不需要编程人员去配置硬件资源,因此程序设计人员可以把更多的精力放在各个细分任务的子函数设计上,考虑用最简单的程序结构去实现。在数据类型的选择上,能够用短数据类型就尽量用短数据类型。

另外,为了提高程序代码的执行效率,建议C语言程序设计人员要了解C语言程序最终运行的硬件的基础机构,是在微型计算机上运行,还是在单片机上运行。在了解硬件平台结构及内部资源的前提下进行相应的程序设计,将有助于提升程序的运行效率。

3 C语言的实践应用

3.1 混合编程

很多程序设计人员都认为C语言比汇编语言高级,所以认为没有必要去学习和了解低级语言。其实这种思路是及其错误的。汇编语言之所以称之为低级语言,是因为其更加贴近于硬件。在编程时一定要明确的在代码中描述清楚,数据如何从一个存储单元送入另一个单元,因此显得编程复杂,由于其直接和硬件打交道,所以被称为低级语言。但是其运行效率却是最高的。所以在C语言程序设计上要有质的飞越,有必要了解汇编语言的编程思路和理念。有条件的话可以将C语言和汇编语言混合编程,从而发挥出两类编程语言各自的优点,达到设计程序的最优化。

在进行C语言和汇编语言的混合编程时,无论是采用C语言调用汇编,还是汇编调用C语言,还是C语言嵌入汇编的方式,都应该对调用关系、各模块的连接以及参数的传递进行妥善的处理。对于调用关系,则需要对调用的函数和过程进行说明;通过明确函数和变量的命名以及存储模式的关联性,从而实现各模块的有效连接;通常情况下往往通过堆栈的方式来实现参数的传递。

3.2 C语言在工程上的应用

C语言在电力电气系统、交通控制系统以及机器人控制方面都有广泛的应用。下面以工厂通风控制系统的C语言程序设计为例来加深对C语言软件编程思想的理解。

工厂通风控制程序的设计时采用模块化得设计思想,即单独的编写初始化函数void Initial(void);中断处理函数void**(void)interrupt;数据采集函数unsigned char ADconvert(unsigned char address)以及其它函数等。然后由主程序负责对各个子函数的调用,从而实现对工厂通风系统的控制。简化的主程序如下:

main( ){ ... Initial(void);

while(l){ReadAi( );ADconvert(unsignedchar address);

DataChange( ); DisPlay( ); …}

整个系统由于需要不停的对工厂数据进行采集,所有主程序的结构就设置成了循环结构,当通风控制系统有序的进行准备工作之后,通过调用初始化函数,程序就开始进入主循环,主循环中通过调用采集程序,完成对测量对象的循环检测以及对显示程序,数据处理函数的循环调用。一遍又一遍的不停循环执行主程序。在这个主程序循环的过程中,如果有异常情况发生,则随着中断触发事件的发生,将进入中断响应,实现对中断函数的调用。

4 总结

C语言作为编程语言中经典的一类程序设计语言,因其结构化、可移植化、编程简介的特点,被广泛的应用国民生产的各个领域。而随着信息技术、互联网技术以及物联网技术的飞速发展,未来C语言的应用领域将变得更加广泛。对C语言在软件编程方面的研究和分析将变得更有意义。

参考文献

[1]顾泰龙,李远静.基于C语言的计算机软件编程实验研究[J].软件工程师,2013(08).

[2]李强.计算机软件开发语言的选择探讨[J].电子制作,2013(09).

作者单位

汇编语言程序设计范文9

近年来,我们在高职《汇编语言》这门课程的教学实践中,摸索出一套“实验教学与理论教学相融合,教学做合一,抓实验实践教学促进理论知识学习”的教学方法,有效地提高了学生的学习兴趣,进而提高了教学效果和教学质量。

一、高职《汇编语言》课程教学现状

随着windows、linux以及unix等多任务的操作系统出现,特别是随着计算机开发和应用技术的发展,出现了各种高级语言、出现了了网络应用开发的许多编程工具,可以自动生成很多程序,建立在dos操作系统之上的http://8086汇编语言逐渐远离了人们的视线。因此在许多高职院校的教学改革浪潮中,《汇编语言》被大刀阔斧地砍掉了,或者合并到其他课程中,即使开设这门课程,大部分高职院校的课程内容仍然是单任务操作系统dos下的8086汇编语言。

汇编语言是计算机提供给用户的能利用计算机的所有硬件特性并能直接控制硬件的语言,它是计算机组成原理、接口技术、操作系统等核心课程的先修课,在计算机学科课程设置中起着承上启下的作用,在计算机语言发展过程中扮演着不可替代的角色。对于训练学生掌握程序设计方法和技能,熟悉计算机内部运行机制,熟悉上机操作和程序调试技术有独到之处,因此,对于计算机及其相关专业的学生以及喜欢计算机的一般学生和读者来说,汇编语言程序设计肯定是需要掌握的重要专业基础知识之一。

但是由于汇编语言非常抽象复杂,相对于高级语言开发效率又低,使学生学起来枯燥乏味,理解起来十分困难,容易造成厌学情绪。要解决这些问题不是简单地取消这门课,而是要从学科特点和学生的实际出发,精心设计课程内容、改革教学手段等。我们用实验的方法对《汇编语言》这门课程的教学方法进行了改革,取得了一定的成绩。

二、课程教学改革

(一)教学内容的设计。

目前,许多高职院校的《汇编语言》的教学内容已严重滞后于实际应用,学生产生“学无所用,纯粹理论”的感觉,缺乏学习的兴趣动力,导致教学效果不理想。如何解决这个问题呢?我们主要应该考虑教学和实践紧密结合,充分体现计算机专业的特点,突出教学内容的可用性。所以,我们先要做的就是改革教学内容。我们在取舍教学内容时,体现了“浅、广、新”的特点。其中,“浅”体现在重点介绍基本概念、原理和方法,而没有过多地详述深入和细节内容;“广”体现在比较全面地介绍了指令系统和汇编语言所涉及的内容,形成比较完整的知识体系;而“新”更是我们教学改革的重点,我们在16位8086cpu指令系统的基础上,新增windows系统下的32位汇编。教学内容中,我们舍弃了一些过时的应用技术,而引入了一些实用的汇编语言程序设计方法。

(二)教学手段的改革。

传统的《汇编语言》课程采用理论讲解为主,实验为辅,教学主体是课堂教学,无论是实验设计还是实验强度都远远不够,实验带有强烈的“验证性”色彩,这样高职教学的技能培养与实践能力强的特点无法在教学过程中得到实现。所以我们把《汇编语言》的教学全部课程内

转贴于

容放在计算机机房进行,把实验作为学习汇编语言的主导方法,让学生在实践中激发对相关理论的兴趣,再用提高了的理论水平来指导新的实验和实践活动,以调试为主,让学生不断重复程序设计的每个步骤以及debug调试工具,这样学生很容易领会课程所介绍的概念、原理、方法和技巧等,程序设计的能力也就http://能够迅速提高。

为了更好地培养学生动手能力和解决问题的能力,除了在教学过程中进行的实验之外,还应在后期安排汇编语言课程设计,用一周左右的时间让每个学生根据给定的题目或自选题目进行汇编语言程序设计,并单独作为一门课程来处理。加强学生应用汇编语言解决实际问题的能力、培养和考核学生对汇编编程知识的理解和综合应用能力。

(三)考核方法的改革。

为了保证教学质量,必须进行考核。传统的汇编语言教学的考核方法多为笔试,再参考平时上机的表现,这种考核方法不能体现学生的真实水平。

汇编语言程序设计范文10

Abstract: Assembly language has complex instructions and many provisions which lead to the weariness of students. In order to improve the teaching effect of assembly language programming, this article explains how to easily learn assembly language from the comparative perspective of English and C language grammar in order to improve the interest of learning.

关键词: 单词;词法规则;语法规则;语法成分;语句

Key words: word;lexical rule;grammar rule;grammatical component;statement

中图分类号:TP313 文献标识码:A 文章编号:1006-4311(2014)19-0193-02

1 绪论

作为最接近机器语言的编程语言,汇编语言可以称得上是最接近于计算机操作本质的语言。其直接面向硬件的特性,使得在使用汇编语言编程时,能够清楚感知计算机的运行过程和原理,充分认识应用程序和计算机硬件之间的联系与交互。相对于高级语言来说,汇编语言对编程者思维逻辑的锻炼表现尤为突出,对于形成软、硬兼备的编程知识体系具有举足轻重的作用,而且指令集合简约,指令操作直接。很多硬件设施的嵌入式编程使用的都是汇编语言,因为汇编语言更直接,更有效率。例如现在很多数码产品赖以生存的芯片、主板等,都包含了嵌入式程序,而这些程序中,汇编语言的使用是非常普遍和相当重要的。对于计算机专业语言类课程的学习来说,从汇编语言开始学习更符合循序渐进的学习原理。特别是在计算机技术专业的学习中,汇编语言具有十分重要甚至说不可代替的作用。因学生有英语、C语言学习的基础和习惯,故本文从英语、C语言语法对比的角度,说明如何轻松学好汇编语言,以便更好地由英语学习、C语言学习自然过渡到汇编语言学习。

2 汇编语言课程的特点

汇编语言是计算机能提供给用户的最快而又最有效的语言,同时能够利用计算机所有硬件特性并能直接控制硬件。所以高级语言简单、易学且开发效率高,而汇编语言复杂、难懂、开发效率低。优点:①用汇编语言所编程序时空效率高。由于汇编语言本质上就是机器语言,可直接、有效地控制计算机硬件,因而与高级语言相比,容易得到运行速度快、执行代码短、占用内存空间少的高时空效的目标程序。②用汇编语言能设计出高级语言无法实现的程序。正是由于与机器的密切相关性,使得汇编语言能充分利用计算机的硬件特性,编写出与硬件紧密相关而高级语言又无法实现的程序。缺点:①难学、难理解、难编程、难调试、难维护等。②汇编语言程序可移植性差,它是面向机器的语言,不同的机器CPU不一样,一个CPU一个指令系统,硬件CPU的不兼容导致程序移植困难。

3 英语与汇编语言的对比(表1)

例如以下程序:

Data segment ;data段开始

X dw 10,20,50,70,-90 ;data段正文

Data ends ;data段结束

Code segment ;code段开始

Assume cs:code,ds:data

Main: mov ax,data

Mov ds,ax

Mov bx,offset x

Mov cx,5 ;code段正文

Mov ax,0

L: Add ax,[bx]

Add bx,2

Loop l

MOV AH,4CH

Int 21h

Code ends ;code段结束

End main ;整个程序书写结束,从语句main开始执行

该程序的功能是求数据10,20,50,70,-90的累加和

4 单词的种类

4.1 常量(常数)单词 ①10进制整形常量。词法规则:以D结束(D可省略),由0-9构成 如 123D,456。②16进制整形常量。词法规则:以H结束,由0-9,A-F构成 如 123H,456H。③8进制整形常量。词法规则:以Q结束,由0-7构成 如 101Q,456Q。④2进制整形常量。词法规则:以B结束,由0-1构成 如 101B,110B。⑤字符型常量。词法规则:单引号括起来的字符,其值为其ASCII码如‘1’的值是41H,’AB’的值是4241H,’ABCD’的值是44434241H,字符顺次存放,其值是低位在低地址部分。

4.2 名字单词 词法规则:以字母或下划线开始,由字母,数字,下划线构成的串。如xyz,flag,名字可以是段名,子程序名,指令的名字,常量名,变量名,寄存器名等。

4.3 运算符单词 算术运算符:如+,-,*,/。伪指令运算符:如offset,seg,xor。

4.4 操作码单词 区分不同的操作(运算),含义必须硬记。如ADD(加法),SUB(减法),MUL(乘法),DIV(除法)。

5 语法成份――表达式

语法规则:由常量,运算符,括号,名字构成。如123+456+x,其中最常用的表达式有:①100:数据100。②[100]:100号单元,100不是数据,是地址,100号单元的内容是数据。③BX:BX单元。④[BX]:BX所指向的单元,并非BX单元。⑤10[BX]或书写成[10+BX]:BX所指向的单元,下10个单元。⑥[SI][BX]或书写成[SI+BX]:BX所指向的单元,下SI个单元。⑦10[SI][BX]或书写成10[SI+BX]或书写成[10+SI+BX]:BX所指向的单元,下SI个单元,再下10个单元。

6 语句格式

自然语言格式是:动词(做什么)宾语(对谁做)状语(怎么做)。汇编语言格式是:动词(做什么)宾语(对谁做),省掉状语(运算结果怎么办,隐含给出)。

语法规则:[名字][:]操作码目的操作数,源操作数;注解。表示做何种操作的代码称为操作码,参加操作的数称为操作数,操作数无非是常量,名字,表达式。存放结果的称为目的操作数,仅参加运算的数称为源操作数。运算后,目变源不变。

语义规则:目的操作数操作上源操作数,结果送到目的操作数(运算结果怎么办,隐含给出)。

如 ADD AX,BX表示AX的内容加上BX的内容送AX,(AX)+(BX)送AX。

7 汇编语言与C语言的比较(表2)

8 结束语

计算机由硬件软件两部分构成,汇编语言可直接在硬件层上编程序,高级语言有编译程序,该软件层遮盖了硬件层,使得用户看不到硬件,看到的只是编译程序的语法约定。故学好汇编语言,对于理解计算机内部运行机制及产品开发尤为重要。

参考文献:

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

汇编语言程序设计范文11

关键词:计算机组成原理;汇编语言;教学改革

中图分类号:G642.3 文献标识码:A 文章编号:1002-4107(2016)07-0014-02

一、“计算机组成原理”课程的特点

“计算机组成原理”是研究生入学考试的必考科目。该课程以冯・诺依曼型计算机为基础,围绕计算机的运算器、控制器、存储器和输入输出设备等五大部件详细介绍它们的工作原理与算法以及具体实现的电路结构。通过学习本课程,要求学生熟练掌握单总线结构CPU的工作原理和设计实现的方法,同时要求学生初步掌握精简指令系统、流水线结构、多体并行存储器、中断的工作原理等知识,为后续课程“微机原理与接口技术”、“计算机系统结构”做好准备。该课程首先讲授了8086CPU的编程结构,然后引申出8086汇编语言的寻址方式和指令系统,学生在掌握上述知识的基础上,进行汇编语言程序设计。汇编语言程序设计可以让学生加深对程序设计方法的理解,同时程序的编写和调试使学生对计算机硬件有一个感性的认识, 为以后他们学习“微机原理与接口技术”、“操作系统”等课程做准备。

根据国家教育部高教教执委的新的教学改革精神,结合我院的具体情况,我院将“计算机组成原理”与“汇编语言”两门课程合并成一门全新的“计算机组成原理”课程。在新的教学体系中,我们将两门课程有效地结合起来去糟取精删繁就简,舍去了两门课程中的重叠部分而突出重点,形成了一套新的教学体系。

二、“计算机组成原理”与“汇编语言”教学内

容的融合

在传统的“计算机组成原理”课程中,教师始终围绕着计算机的五大部件按照运算器、存储器、控制器、输入输出系统这个顺序进行讲解,在讲授过程中经常会用到一些实例进行说明,而很多时候是以汇编语言做例子讲解的,两门课程融合在一起的最大好处就是教师在讲授“汇编语言”的部分时,可以更好地兼顾“计算机组成原理”,让这两门课程做到无缝对接。

在基础知识部分,我们首先要介绍冯・诺依曼型计算机的特点。冯・诺依曼型计算机是串行计算机的始祖,所有的串行计算机都要符合冯・诺依曼型计算机的特点,这是“计算机组成原理”基础知识部分的重点。在课程讲授过程中,教师都会画一幅五大部件的关系图,通过图形示意来表示一条指令是如何在五大部件之间流动的,从而使用户从外部观察到计算机处于运行状态。我们考虑从这里引入8086CPU的编程结构,从计算机组成原理过渡到汇编语言,让指令举例更加具体化,再结合指令的寻址方式,借机说明8086的汇编语言指令是如何在CPU中执行的。

在接下来的讲授过程中,我们将介绍8086汇编语言的寻址方式和指令系统。由于在计算机组成原理课程中也有一章介绍指令系统,我们可以把这个部分与汇编语言的内容合并,以计算机组成原理的部分强调基本概念,以汇编语言的内容来强调具体应用,把内容更加具体化,举例更具有针对性,可以使学生更好地理解寻址方式和指令系统。在这里我们在教学上做了一点改变,我们考虑到汇编语言指令数目较多的特点将指令分类,每类指令选出一到两个具有代表性的指令进行详细说明,其他略讲,然后采用写出指令执行结果的方式进行大量练习,从而巩固这部分知识。

在讲授了汇编语言的程序设计方法之后,再讲授计算机组成原理部分的运算器与运算方法部分。在这部分我们可以利用学过的汇编语言知识,结合布斯算法和加减交替法编写定点数乘除法的汇编语言程序,还可以编写浮点数运算的模拟程序。在讲授控制器的部分时,我们可以设计一个类8086的CPU,把它作为课堂上的CPU设计举例,这样把一条8086汇编语言指令放在这个CPU中运行,可以更直观地反映指令的工作细节,促进学生对控制器的工作原理和汇编语言的理解。

三、“计算机组成原理”与“汇编语言”实验内

容的融合

“计算机组成原理”与“汇编语言”都有实验课,由于在讲授上先讲“汇编语言”的内容,因此相关实验先进行,然后进行“计算机组成原理”的实验。我院的“计算机组成原理”实验课程使用的是由清华大学计算机学院研制开发的TH-union+教学实验系统,该系统主要用于“计算机组成原理”课程的硬件教学实验,还支持监控程序、汇编语言程序设计。在硬件上同时实现了硬布线方式和微程序方式两种控制器结构,既支持用中小集成度的芯片实现CPU的方案,又支持用高集成度的FPGA门阵列实现CPU的方案。在软件上可实现指令级模拟,也可以软件模拟硬布线和微程序的操作,为学生学习硬件理论知识起到了重要的辅助作用。但是该实验系统的汇编语言指令与8086汇编语言是不兼容的,这使学生在短期内很难快速掌握实验系统的汇编语言指令,因此经课程组全体教师研究决定,另外开发一款新的汇编语言转换软件,用来实现两种不同种类的汇编语言互相转换。

该软件是利用linux模拟环境Cygwin开发实现的。Cygwin是cygnus solutions公司开发的一个在windows平台上运行的类UNIX模拟环境。在这里我们主要使用了Cygwin开发环境里的flex和gcc两个工具软件。利用flex工具软件编写的源代码必须转换成c语言代码格式,然后由linux下的c语言编译器gcc编译成可执行文件,完成最后的开发。

由于TH-union+教学实验系统的汇编语言指令共48条,采用精简指令系统,每条指令的寻址方式是固定的,因此不单独设置关于寻址方式的标志位,当指令进行译码操作的时候,实验系统电路通过分析指令的操作码既了解了指令的操作功能也了解了指令操作数的寻址方式。而8086汇编语言指令是一个复杂的指令系统,每条指令对应着多种不同的寻址方式,因此我们把教学实验系统的汇编语言看成是8086汇编指令系统的子集。通过对转换程序my的使用,帮助学生对比两种汇编语言之间的相同点和不同点,通过对比学习,学生可以更快速地熟悉实验系统汇编语言。

在这里对于不可转换的汇编语言指令可采取两种处理方式:方式一,发出警告提示并忽略此条指令;方式二,发出错误提示并强行结束程序转换。转换程序your分析了操作码之后开始分析操作数的寻址方式。在这里,我们假设所有指令都采用双操作数,因此在结构体中设置了两个对应寻址方式的变量。具体操作时,如果分析出该操作数的寻址方式可以被实验平台支持,那么就将对应数值保存在结构体的对应变量中以便转换,如果不是实验平台支持的寻址方式,系统将提示用户:“你的程序中使用了不可转换的寻址方式”,并强行结束转换。在寻址方式转换过程中,有一些特殊情况需要系统自动追加指令。

最后,要对输入输出指令单独处理。输入输出操作是后续课程“微机原理与接口技术”的重要知识点。在编写汇编语言程序过程中,当遇到输入和输出操作都是直接调用DOS中断或BIOS中断来实现的。但是教学实验系统没有任何中断程序辅助操作,遇到输入和输出操作只能由学生自己编写。在编写8086汇编语言程序过程中,凡是遇到输入和输出操作都通过调用这两个宏来实现。每次进行输入输出操作时必须先对指定的状态寄存器的标志位进行判断,以确定硬件是否准备好,是否可以进行输入输出操作。具体做法是使标号由英文字母和数字构成,每次产生新的标号,后面的数字部分就加1,保证新标号与旧标号不同。

“计算机组成原理”和“汇编语言”是计算机科学与技术、软件工程专业的专业课程,这两门课程存在着很多联系同时也有一些区别,把这两门课程合并成一门全新的“计算机组成原理”课是我院一项新的教学改革方案。如何把两门课程很好地融合在一起就成了课程组面临的一个新的挑战,本文结合课程组全体教师的多年教学经验,抛砖引玉,初步提出了一些在教学和实验上的改革方案,希望各界同人多提宝贵意见。

参考文献:

[1]唐朔飞.计算机组成原理:第二版[M].北京:高等教育

出版社,2008.

[2]王诚,刘卫东,宋佳兴.计算机组成与设计:第三版

[M].北京:清华大学出版社,2008.

[3]沈美明,温冬婵.IBM PC汇编语言程序设计:第二版

[M].北京:清华大学出版社,2001.

汇编语言程序设计范文12

关键词:汇编程序;C语言;编排技术

1 引言

在平常编写程序时,我们一般都希望选择C、Pascal、Basic等这样的高级语言来编写,高级语言由于有编译器的支持,它们的语法更接近于自然语言,表达能力强,使用灵活,具有强大的库函数,更重要的是高级语言与机器无关,可移殖性较好,这样使程序开发周期比较短,省时省力。为了提高程序运行速度,或直接访问硬件,用汇编语言编程可以提高程序的运行效率。为了既能缩短程序开发周期,又能保证程序的执行效率,较好的解决办法是程序的框架或主体部分用C语言编写,要求执行效率高的部分用汇编语言编写。这里就涉及到了混合编程的问题,这种混合编程的方法将C语言和汇编语言的优点结合起来,所以成为目前单片机开发最流行的编程方法。混合编程的关键是解决好高级语言与汇编语言的接口问题,可采用两种方法:一是使用嵌入式汇编,即在高级语言的语句中直接使用汇编语句,这种方法比较简洁直观,但功能较弱;另一种方法是独立编程,分别产生各自的目标文件,然后经过连接,形成一个完整的程序。

2 汇编语言和C语言程序的变量相互调用

在一个工程中,一般都会由多个汇编文件和多个C/C++程序文件有机组成。在这些汇编文件和C/C++文件之间就存在变量相互访问和函数相互调用的问题。内嵌汇编不用单独编辑汇编语言文件,比较简洁,但是有诸多限制,当汇编的代码较多时一般放在单独的汇编文件中。这时就需要在汇编和C之间进行一些数据的传递,最简便的办法就是使用全局变量。

2.1 汇编程序中访问C程序变量

在C/C++程序中声明的全局变量可以被汇编程序通过地址间接访问。具体访问方法/步骤如下:

①C/C++程序中声明全局变量;②在汇编程序使用IMPORT/EXTERN伪指令声明引用该全局变量;③使用LDR伪指令读取该变量的内存地址;④根据该数据的类型使用相应的LDR或STR指令读取或设置该变量的值。对于无符号变量,使用LDRB/STRB访问char;使用LDRH/STRH访问short;使用LDR/STR访问integer。对于有符号数,使用LDRSB/LDRSH。

在汇编的源程序中调用C语言风格的字符串需要使用IMPORT伪操作。IMPORT相当于C语言中的extern关键字,告诉编译器引用的符号不是在本文件中定义的,而是在其他的源文件中定义的。

伪操作的格式:

IMPORT symbol[,WEAK]

symbol是声明的符号的名称;[,WEAK]指示编译器如果发现symbol在所有的源文件中都没有找到,那么它也不会产生任何的错误信息。

2.2 C程序中访问汇编程序变量

在汇编程序中声明的数据可以被C/C++程序所访问,具体访问方法/步骤是:在汇编程序中用EX-PORT/GLOBAL伪指令声明该符号为全局标号,可以被其他文件应用;C/C++程序中定义相应数据类型的指针变量;对该指针变量赋值为汇编程序中的全局标号,利用该指针访问汇编程序中的数据。

3 汇编语言和C语言程序相互调用

3.1 在C程序中调用汇编函数

在C程序中调用汇编函数一般情况下,在C中要调用一个汇编编写的函数,需要首先在C语言中声明此函数的函数原型,同时C语言希望所有的外部标号均以下划线/_0开头,如果汇编模块中定义的函数及变量准备供C调用,应以下划线开头。如若有函数F_Sub,要定义为供C调用的函数,在汇编程序中应定义为PUBLIC _F_Sub。因为C语言区别对待大小写字母,所以在编写准备与C模块相连接的汇编模块时,应该注意符号名的大小写,以便保持一致。以下是在C中调用汇编程序的实例:

//C语言主函数main()

void F_Sub(void); //声明要调用的函数的函数原型,此函数无参数传递

intmain(void){

while(1)

F_Sub(); //调用汇编函数

return 0;

}

//汇编子函数F_Sub()

.CODE

. PUBLIC _F_Sub

_F_Sub:

NOP

RETF

以上程序在IDE集成开发环境下编译连接后即可运行。

3.2 在汇编程序中调用C函数

在汇编函数中要调用C语言的子函数,应该根据C函数原型所要求的参数类型,分别把参数压入堆栈后,再调用C函数。调用结束后还须再进行弹栈,以恢复调用C函数前的堆栈指针。以下是汇编调用C函数的。

例如下面的程序,利用函数调用形式输出字符串″Hello world e″

Extern void display(void)L

Main()

{

display()L

}

.model small

.data

string db ″Hello world e$″

.code

public _display

_display proc

mov ah,9

mov dx,offset string

int 21h

ret

_display endp

end

说明:①在C程序中使用关键字″extern″对函数作显式说明;②对不同的存储模式要选用不同的汇编语言格式。当C程序为微型、小型、紧凑型模式时,汇编用近过程;当C程序为中型、大型、巨型模式时,汇编用远过程;③汇编程序取C的参数。远过程返回地址占四个字节,BP压入占二字节,所以第一个参数在BP+6所指向的单元,而近过程第一个参数在BP+4所指向的单元;④汇编程序中寄存器的保护。TurboC允许子过程使用SI 和DI存放局部变量,当寄存器变量多于两个时,多余部分会自动转到堆栈中存储。因此,汇编过程的格式为:

PUSH BP

MOV BP,SP

PUSH DI

PUSH SI…

…………

…………

…………

POP SI

POP DI

POP BP

RET

⑤返回值。每种C语言的数据类型都有一个标准的返回位置,一般在AX (微型、小型、紧凑型模式)或DX:AX(中型、大型、巨型模式)中,如:char,unsigned char,short int等,返回值位置为AX,且返回数据必须放置在RET指令之前。汇编子程序要定义为远过程,并用public伪指令把过程名定义为公共。

4 结束语

本文研究了汇编语言与C语言混合编程的编程问题,重点对编程时C语言与汇编语言和C语言变量与程序的相互调用问题进行了分析,并给出了实例。当采用两种或两种以上的编程语言组合编程,彼此相互调用,进行参数传递,是一种有效的程序设计方法。这种方法可以发挥各种语言的优势和特点,充分利用现有的多种实用程序、库程序等,使软件的开发周期大大缩短,是当前程序接口技术的一个重要研究和应用领域。

[参考文献]

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