汇编语言程序设计范例6篇

前言:中文期刊网精心挑选了汇编语言程序设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

汇编语言程序设计

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

关键词:浮点DSP;需浮点运算;TMS320VC33;汇编语言优化;汇编语言程序设计

中图分类号:TN913文献标识码:A文章编号:1009-2374(2009)10-0139-02

TMS320VC33是TI公司推出的性价比很高的浮点DSP芯片,既适应于浮点运算,又适应于控制,同时还具有速度适中,功耗低,接口方便等优点。因此它被广泛应用于通用DSP算法实现,远程通信,语音处理,图像和图形处理,高速控制等领域。

由于TMS320VC33具有复杂的硬件结构,使用汇编语言开发软件过程中,按照传统的汇编语言编程方式编程会导致代码效率比较低, 执行速度比较慢。为了充分发挥TMS320VC33的性能, 汇编语言程序设计的最优化成为产品开发人员的终极目标。作者以多年来从事TMS320VC33应用的产品软硬件设计的经验,总结了汇编语言程序设计的几种优化方法。

一、TMS320VC33的硬件结构及软件资源

(一)TMS320VC33的硬件结构

DSP的硬件结构特点决定了它在执行指令时的特殊性。因此对DSP硬件结构的了解是理解DSP编程优化的基础。

TMS320VC33是32位的高性能数字信号处理器。其总线采用哈佛结构,允许数据在程序存储器和数据存储器之间传输。其内部包含了两块2K×32位和两块16KX32位的快速RAM块。独立的程序总线,数据总线和DMA总线使得取指、读写数据和DMA操作可以并行进行。64X32位的高速缓冲存储器(以下简称Cache)用来存储需要经常使用的语言块,这可以大大减少片外访问的次数,从而提高程序的运行速度。由于主总线的地址线是24位,因此TMS320VC33可以访问多达16M的存储器空间,程序、数据1/0空间都包含在TMS320VC33这个16M字的空间中。

TMS32OVC33提供28个寄存器,这些寄存器可以由乘法器和ALU操作,可以用作通用的寄存器。但是,他们也有一些特殊的功能,如八个扩展精度的寄存器(RO~R7),可当累加器使用,特别适合用于存放扩展精度的浮点结果。八个辅助寄存器(ARO~AR7)支持一系列的间接寻址方式,并且可以用作通用的32位的整数和逻辑寄存器。其它的寄存器提供一些系统功能,如寻址、堆栈管理、处理器状态、中断和块重复等。

TMS320VC33的外设是通过存储器映射的寄存器对外设总线进行控制,外设总线由32位数据总线和24位地址总线组成,允许与外设直接通信。TMS320VC33的外设包括两个可支持8/16/32位数据交换的串行口和两个32位定时器。

(二)TMS320VC33的软件资源

TMS320VC33的汇编语言指令集特别适合于数字信号处理。所有指令占一个机器字长,大部分指令是单周期的。指令集可以分为以下几类:数据装载和存储指令、两操作数算术/逻辑类、三操作数算术/逻辑类、程序控制类、低功耗控制类、互锁操作类及并行操作类。TMS32OVC33提供相当灵活的程序控制。软件的程序控制包括重复、跳转、调用、陷阱及返回等。流水线操作是TMS320VC33具有的高性能的特性之一,五个功能单元控制TMS320VC33的操作,取指、读操作数、执行、和DMA。流水线操作就是一个基本指令的取指、译码、读操作数和执行的并行操作。此外,TMS320VC33支持多种不同的寻址方式。特别是一些特殊的寻址方式更是为了数字信号处理而专门设计的。

二、汇编语言程序设计的优化方法

DSP的软硬件资源为高性能提供了必要条件。在使用汇编语言编写程序时,如何充分利用这些硬件资源及开发工具,对程序进行优化,使应用达到最优性能,是每个编程人员应关注的问题。下面是总结的几种程序优化方法:

(一)利用延迟跳转

跳转分有条件和无条件跳转,无论哪种方式都要执行4个指令周期。TMS320VC33提供的延迟跳转指令可在一个周期内完成,而指令后的三条指令都照常执行,若少于三条指令,可加NOP指令。这样可以节省机器时间。

(二)利用单指令重复或块重复

在这种情况下,可实现无开销循环。但要注意,在需要中断的场合,要用块重复指令,而不能用单循环指令。

(三)利用并行指令

TMS320VC33具有一系列并行指令,如乘加、存取、取存、二次取、二次存等,利用并行指令可增加在单个周期内执行的操作次数,但要比普通的指令多许多限制,如乘法指令,其目的寄存器只能为R0和R1,而加法指令,其目的寄存器只能为R2和R3。因而在高密度运算中,会出现寄存器拥挤现象,造成系统效率下降。当多条并行指令一起执行时,往往由于前面的结果在后续的寄存器中还要用到,因而必须保留,但后续指令就会因无空闲的目的寄存器而不能采用并行执行,在这种情况下,可以将寄存器内容暂存于片内存储器中,然后在利用取数指令将暂存的数据从存储器取回寄存器。另外应注意TMS320VC33不存在任何能与堆栈操作并行的指令,故不采用压栈方法来保存寄存器数据。

(四)充分利用Cache

当TMS320VC33需要从外部存储器的某一地址处取指令字时,首先检查Cache中是否已经存放有该地址处的指令,所以可以将指令存储在TMS320VC33提供的64X32位的Cache中,从而达到节省取指时间,加快程序运行的速度的目的。因此在编程时确保在程序初始化时Cache己使能。

(五)利用内部RAM

TMS32OVC33内部提供了34K的内部RAM,这些RAM的存取速度特别快。在单个指令周期内,可从内部RAM中取出两个操作数。如果采用并行使用DMA和CPU来将数据传送到内部RAM,则可使性能达到最佳。

(六)用比较快的寻址方式

使用比较快的寻址方式会大大减少指令周期。例如,如果数据是顺序存放时则采用寄存器寻址方式,操作完后自加1而指向下一数据.可以减少很多指令周期。使用循环寻址可以大大方便实现数字滤波器中的卷积运算。

(七)避免流水冲突

流水线操作是TMS32OVC33实现高速运算的重要手段,如使用不当会引起程序执行时间的增加。TMS32OVC33 一条指令的执行包括取指、译码、读、执行四个时钟周期,由于上述四个步骤在不同的单元实现并行操作,从而实现单指令周期。当程序发生流水线冲突时,一条指令执行将占用四个时钟周期,大大消弱了CPU 的数据吞吐能力。流水线冲突可归为三类:分支冲突、寄存器冲突和存储器冲突。分支冲突发生于标准分支BR、CALL、IDLE、RPTB、RPTS、RETI、RETS等指令以及中断和复位。寄存器冲突包含了用于寻址目的寄存器的读和写,发生于相应的寄存器没有准备好或已被使用,从而使CPU处于等待状态。存储器冲突最为常见。当两个CPU数据访问内部RAM块,同时又要从同一块取程序;或当一个外部端口启动CPU数据访问,同时必须从同一端口取程序时都会发生存储器冲突。调试的方法是使用模拟器或者仿真器的跟踪功能,查看程序执行时各个寄存器的变量的值的变化。

三、结语

TMS320VC33汇编语言的优化是一个资源充分利用、结构不断趋于合理的过程。在此过程中,应最大程度地发挥TMS320VC33效能,最大限度地利用其资源。本文介绍的对TMS320VC33汇编语言编程的优化方法,使用后能够有效降低在TMS320VC33上运行软件的内存占用和系统开销,在软件开发中非常有实际意义。对TMS320C3x系列DSP同样适用,可以为从事TI及其他公司各系列DSP芯片的开发和应用打下良好的基础。

参考文献

[1]党瑞荣,谢雁,李利品,等. TMS320C3xDSP原理与应用[M].西安:陕西科学技术出版社,2006.

汇编语言程序设计范文3

摘要:“汇编语言程序设计”课程是计算机及相关专业的专业基础课,多年来随着计算机硬件和软件的发展,汇编语言从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.

汇编语言程序设计范文4

关键词:汇编语言;实验教学;模仿法;演示法

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

1引言

汇编语言是所有程序设计语言中最原始的语言,它与机器语言最为接近,简言之,汇编语言是符号化的机器语言,通过汇编语言可以直接访问计算机的硬件,如果要深入了解计算机的工作原理和底层细节,就必须学习汇编语言。著名的计算机科学家Donald Knuth坚持推崇汇编语言,并且曾经说过“我坚持认为除非你了解了各种底层细节,否则根本不可能为态度认真的程序员写书。”①汇编语言的地位是任何高级语言都无法取代的。因此,汇编语言程序设计成为计算机专业的必修课程。

然而汇编语言程序设计课程的教学普遍存在诸多问题,已经引起了广大教师的研究与关注,如考文献中的[1][2][3][4][5]等。就目前看来,汇编语言教学大多不能体现“以学生为本”的教学理念,主要表现在对实验教学的重视程度不够。汇编语言程序设计是实践性很强的一门课程,学生只有在程序设计的实践中才能真正掌握。所以我们认为汇编语言教学应该“老师少讲课、学生多动手”,也就是要充分重视实验环节,让学生唱主角,改变传统的以课堂讲授为主的教学模式。

为此,本文进行汇编语言实验教学的研究与探索。下面分别从实验安排、教学方法和考核方式三个方面介绍作者在多年的汇编语言实验教学中的体会。

2精心安排实验

2.1学时安排

目前国内高校的汇编语言程序设计课程大多是基于Intel 8086/8088微处理器的②,总学时一般在60学时左右,实验课学时一般占总学时的1/4到1/3。我们认为60个总学时是比较合理的,但是实验课学时远远不够。事实上,对于任何一种程序设计语言来说,不需要教师讲解太多的内容,关键是让学生多动手。我们认为汇编语言的理论课学时和实验课学时各占总学时的1/2是比较合理的。

2.2实验内容安排

汇编语言的实验课内容应该包括但不限于:

(1) 调试工具DEBUG的使用:汇编语言程序的调试要比高级语言程序的调试困难得多,熟练使用DEBUG是汇编语言程序设计的基本技能。

(2) 汇编语言程序设计的上机过程:汇编语言程序的编辑、汇编、连接、运行和调试是汇编语言实验的必备知识。此外,学生还应当懂得在此过程中所产生的各种文件(.obj、.lst、.crf和.exe等)的用途。

(3) 基本程序结构设计:任何复杂的程序都是由三种基本结构(顺序结构、分支结构和循环结构)组成的,因此,基本程序结构设计训练是编写复杂程序的基础,是汇编语言实验不可缺少的内容。

(4) 子程序设计:所谓子程序,相当于C语言中的函数。子程序是结构化程序的基本组成,子程序设计是开发大型程序的基础,对于培养编程能力十分重要。

(5) 中断调用:操作系统和BIOS(Basic Input Output System)以中断调用的方式为程序员提供了一组功能强大的程序库,屏蔽了复杂的硬件细节,从而极大程度地减轻了程序员的负担。而且,不理解中断系统就不能理解计算机的工作原理。因而学习中断调用是汇编语言实验课的必要内容。

此外,中断服务程序的编写和汇编语言程序与高级语言程序的连接等内容也应该让学生有所了解;在实验学时允许的前提下,也可以安排一个综合性实验。

3选择合适的教学方法

对于实验课,只布置任务、让学生自己做实验的方法并不可取,因为其结果往往是只有少数学生能够达到实验要求,而大多数的学生收获很小,甚至有的把实验课用来玩游戏了。所以,实验课应该有专门的任课教师。当然,从培养学生的创新能力的角度讲,应该尽可能地让学生独立完成任务,但是创新能力的培养有赖于足够的基础知识和基本技能。我们认为汇编语言实验课应该以基础知识和基本技能的学习为主,适当地关注创新能力的培养,在照顾到大多数学生的前提下,给创新能力强的学生提供独立发展的空间。要做好这一点,我们认为有两种十分有效的教学方法:演示法和模仿法。

3.1演示法

在实验课上,我们经常发现有许多学生向老师问同一个问题,如果一一解答,不但使任课教师十分疲惫,而且严重浪费了资源和时间。对于这些共性的问题,可以通过投影仪向学生演示解决问题的办法,所以在实验室中安装投影仪将为实验教学带来极大的方便,目前大多数高校具备这样的硬件条件。特别是对于调试工具DEBUG的使用和汇编语言程序设计的上机过程的学习尤为有效。初学者对于程序的编辑、汇编、连接、改错和调试过程往往不知所措,如果老师从头到尾演示整个过程、让学生一步一步地跟着操作,就能极大地提高学习效率。一次简单的演示往往要胜过千言万语的解释。

3.2模仿法

程序设计对于大多数的初学者来说有一定的难度。对于给定的一个实验题目,许多学生往往感到无从下手。事实上,老师可以把一些经典的程序提供给学生,例如怎样实现分支结构、怎样实现循环结构、怎样使用系统调用、怎样编写子程序、怎样编写中断处理程序等,让学生在读懂之后模仿着编程。模仿的程序多了,编程也就熟练了。通过一段时间的经验积累,就能够编写比较复杂的和具有创造性的程序,正所谓“熟能生巧”。我们在教学中发现这种模仿的方法十分有效。当然要特别注意的是,不能把模仿变成抄袭。

3.3对比法

一般说来,在学习汇编语言之前都要学习C语言。汇编语言与C语言的学习是相辅相成的。老师应该通过对比的方法向学生指出汇编语言与C语言之间的千丝万缕的联系。例如,一块数据区的开始地址为BASE,要寻找的操作数相对于开始地址的偏移量为SI,我们发现几乎所有的学生会把这个操作数写成[BASE+SI],而不会写成BASE[SI],因为第一种写法更直观,而第二种写法令人费解。然而,如果教学生把BASE看成C语言里的数组、把SI看成下标,那么学生就会恍然大悟了。通过对比教学法,能够使学生更深入地理解高级语言中的数据类型、变量、函数、数组、指针等概念的理解,同时也必将大大促进汇编语言的学习。

4改革考核方式

因为“汇编语言程序设计”是实践性很强的一门课程,所以实验课成绩应该在总成绩中占有相当大的比重。我们认为以闭卷考试成绩为主要依据的考核方式是不合适的,甚至可以取消考试、以实验课成绩为主,如果要考,也应该是开卷的。然而由于许多现实困难,目前大多数高校的汇编语言课程的实验课成绩只占很小的比重,这也是学生不重视实验课的重要原因之一。提高实验课成绩所占比重的主要困难在于学生多、抄袭成风、老师负担重、实验条件有限、考核的主观性太强等。尽管面临诸多困难,我们认为实验课成绩应该占到总成绩的1/2。老师可以根据学生的实验表现按五级分制(优、良、中、及格、不及格)或二级分制(通过、不通过)考核。为了减轻教师的负担,可以只针对一个综合性实验(而不是所有的实验)加以考核。

5结束语

本文根据作者多年的教学体会,对汇编语言实验教学进行了深入的思考。从“以学生为本”的教学理念出发,根据汇编语言程序设计课程所具有的实践性强的特点,提出“老师少讲课、学生多动手”的教学模式,主张提高实验课学时和实验课成绩的比重,重视实验教学,并从实验内容、教学方法和考核方式三个方面介绍了作者的想法。然而由于学生过多、资源有限、我国高等教育长期投入不足和体制缺陷等许多现实困难,汇编语言实验教学的改革依然任重道远。

参考文献:

[1] 张全福. 汇编语言程序设计实验教学改革与探索[J]. 教学研究,2005,28(6):545-546.

[2] 周代英,杨晓霞. 汇编语言课程教学方法改革探索[J]. 中国科教创新导刊,2008(6):55-56.

[3] 吴媛,茹庆云,杨富超. 汇编语言程序设计的教学研究[J]. 中国科技信息,2005(14):215.

汇编语言程序设计范文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],培养学生综合运用模拟电子技术、数字电子技术和汇编语言、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.