汇编语言程序设计十篇

时间:2023-03-16 10:26:37

汇编语言程序设计

汇编语言程序设计篇1

【关键词】汇编语言程序设计 现状 问题 改革

随着我国国际化的发展进程越来越快,我国对高等院校教育水平的重视度也越来越高。为了加快接轨国际高等教育的进程,在近几年中,我国对教育事业的投入力度不断加强,提高了对学生实际动手能力以及创新能力的培养力度。《汇编语言程序设计》课程教学是高校计算机、通信、电子以及自动化等相关专业课程中的基础课程,对学生在学习过程中的创新能力以及实践能力的提高有一定的促进作用。另外,在对教师对问题进行研究的过程中,对提高其相应的科研水平以及意识也有一定的积极影响。

一、《汇编语言程序设计》课程教学的现状以及存在的问题

1.相应的教材内容单一陈旧,无法激发学生的学习兴趣

《汇编语言程序设计》课程在我国所有高等院校相关计算机专业的课程中都占有重要地位,然而随着时代的飞速发展,计算机的相关配置也得到了相应的发展。在《汇编语言程序设计》教学中,其硬件教学中有些相关教材内容与计算机的发展现状不相符,存在一定程度的滞后性。在某些新开发的汇编得到广泛使用的时候,大多数学校的相关专业的汇编语言教材依旧还停留在以前的版本中,跟不上实际的发展进程。

2.没有明确的教学目的,对课程重要性认识不足

《汇编语言程序设计》课程教学是高校计算机、通信、电子以及自动化等相关专业课程中的基础课程,对学生在学习过程中的创新能力以及实践能力的提高有一定的促进作用。在对《汇编语言程序设计》课程的学习过程中,大多时候得不到学生以及教师重视,对其学习的重要性认识不足。而且,大多数老师在对这门课程进行教学的过程中,受到相应教学的课时以及大纲限制,在课堂教学过程中过于偏重对具体指令的相关应用以及功能的讲解,从而缺少了对各个课程之间的特点串联。这样的问题导致教师在教学过程中,对学生的学习兴趣不能充分的调动,从而导致学生对正确的学习方法不能很好的掌握。

3.教学方法偏差,教学手段存在缺陷

在对《汇编语言程序设计》课程进行教学的过程中,其在相应的教学方法上存在一定程度的偏差,从而导致一些编程中非法指令经常性出现。而且,教师在对这门课程进行教学的过程中,教学手段太过单一,在教学过程中主要就通过多媒体对课堂内容进行讲解。在教学过程中对多媒体的运用虽然存在直观生动以及信息量大等相关优势,但其也在一定程度上使学生产生了学习惰性。

二、对《汇编语言程序设计》课程教学中相应的问题进行改革

1.加强对课程重要性的认识

在对《汇编语言程序设计》课程进行教学之前,对其相应的重要性进行讲解,从而使学生对汇编语言的具体特点进行充分掌握,对汇编语言相较于高级语言的具体优势进行具体明确,使学生对其在应用领域中必要性有充分的了解。在对《汇编语言程序设计》课程进行学习的过程中,要注意对其实用性的具体教学,使学生能够做到对具体知识的学以致用,注重对教学内容相关知识点的训练和拓展。另外,教师在教学过程中,还要注重对学生知识面的拓宽,从而使学生在对汇编语言的学习兴趣得到相应的提高。

2.采用多样化教学,提高学生学习兴趣

在对《汇编语言程序设计》课程进行学习的过程中,想要对相应的指令进行掌握,就要对其相关的寻址方式进行具体的理解和掌握。在对汇编语言进行教学的过程中,由于其相较高级语言而言,没有足够的易读性,不容易学生的理解,所以,在教学的时候要掌握多样化的教学方法以及教学手段,从而使学生在对其进行学习的过程中的学习兴趣得到最大的提高,培养学生学习的自主性,使其对汇编语言的相关知识的理解和记忆更容易清晰地掌握。

3.增加实践环节,提高学生具体的实践能力

在对《汇编语言程序设计》课程进行学习的过程中,对学生具体动手实践课程进行加强,使学生在具体实践的过程中对教材上的知识点进行具体的理解和掌握。在实际动手过程中学习实践理论,使实践与理论达到很好的结合,从而提升学生的学习效果。其中,在实践的过程中,教师要注意对具体实验内容的控制,对实验的重点着重突出,避免实验的时间太过漫长。除此之外,还要注意积极引导学生多多参与相关实践项目,在一定程度上为他们提供一些参与实际研究项目的机会。

三、结束语

综上所述,随着时代的飞速发展,我国对高等院校教育水平的重视度也越来越高,计算机的相关配置也得到了相应的发展。《汇编语言程序设计》课程作为计算机、通信、电子以及自动化等相关专业课程中的基础课程,其硬件教学中有些相关教材内容与计算机的发展现状不相符,存在一定程度的滞后性。为了提高学生在学习过程中的创新性以及实际动手能力,对《汇编语言程序设计》教学课程的教学效果进行相应的提高和改善,从而使学生在学习的过程中对其课程中相应的知识内容进行更清晰精准的掌握。

参考文献:

[1]陈燕俐,许建.“汇编语言程序设计”课程教学改革探索 [J].中国电力教育,2012,10(04):193-194.

[2]李黎.《汇编语言程序设计》课程教学改革探究 [J].产业与科技论坛,2013,15(08):197-198.

[3]陶雪丽,郭凤英.汇编语言程序设计课程教学改革与实践 [J].中国教育技术装备,2012,25(01):192-193.

汇编语言程序设计篇2

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

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

汇编语言程序设计篇3

关键词:汇编语言;C语言;混合编程

汇编语言的优势就是速度快,占用存储空间不大,而且可以随时控制硬件,这些优点是其它的程序语言无法取代的。汇编语言也有不足之处,就是在高级程序的编写与调试时存在着较大的困难,特别是在处理一些数据或者一些混合运算时显得更加困难。

C语言,它的优势就是在于功能全面,表达形式多样且灵活,开发使用效率很高,具有其它高级语言无法具有的优势。通常在软件开发过程中,大部分程序采用高级语言编写,以提高程序的开发效率;但在要求执行速度快、占用空间少或要求直接控制硬件的场合,则利用汇编语言编写,以提高程序的运行效率。

1.汇编语言和C语言混合编程的方法

C语言和汇编语言混合编程的具体方法有以下几种。

2.1 参数传递

汇编语言程序和C语言程序在调用时会涉及到参数传递,一般采用堆栈进行传递。在汇编语言中将BP作为基址寄存器,调用程序先将来自于C语言程序中的参数依次压入堆栈中,然后当需要使用这些参数时,再用BP加上不同的偏移量依次对堆栈中的数据进行存取操作。

2.2 调用关系的确定

对于将要涉及到调用的过程或函数需要事先说明和建立调用与被调用关系。被调用的过程或函数应预先说明为外部类型,以便被外部模块引用,而调用程序也需要在程序中说明将要引用的外部模块的名称。在说明调用关系时还应根据不同的存储模式确定相应的汇编语言格式。C程序小模式对应汇编程序的近类型过程,而C程序大模式则对应汇 编程序的远类型过程。

总而言之,汇编语言和C语言的混合编程方法可以使汇编语言与C语言之间取长补短,充分发挥各自优势,相互交叉调用,进行参数传递,共享数据信息和数据结构,使由此开发的软件更实用、更安全可靠,使开发和编程工作达到事半功倍的效果。

参考文献:

[1] 罗南超,向昌成,李唐辉. 汇编语言实现多种进制的通用输入输出[J]电脑知识与技术, 2008,(36) .

[2] 崔卫东. VC++与汇编语言混合编程的研究与实现[J]福建电脑, 2007,(05) .

[3] 宋金华. 汇编语言和C语言在图形处理中的综合应用[J]湖北广播电视大学学报, 2010,(12) .

汇编语言程序设计篇4

关键词:MCS-51 单片机 汇编 IDE 编译器

中图分类号:TP313 文献标识码:A 文章编号:1007-9416(2013)05-0029-01

1 单片机简介

1.1 单片机介绍

单片机是一种集成电路芯片,它将CPU、RAM、ROM、I/O接口、中断系统等等功能集成到一块硅片上,构成一个微型计算机系统,所以单片机也叫做微控制器。在工业控制领域中,单片机具有非常重要的地位。MCS-51单片机是一种8位单片机,虽然目前已经有32位单片机的出现,但8位单片机在很多行业中仍在被广泛使用,其性能较之以前也有巨大的提升。

1.2 单片机发展方向

单片机发展有两个方向:

(1)改进集成电路工艺,提高芯片速度。

(2)根据不同领域需要,在保留基本外设装置和公共指令的基础上,将不同的外设装置集成到芯片中。

(3)MCS-51单片机指令。MCS-51单片机的指令系统功能强、指令短、执行的速度也快,一共有111条指令以及8条伪指令,可以从功能上将其划分为数据传送、逻辑操作、算术操作、程序移位操作等四大类;空间属性上来分,分为单字节指令、双字节指令和三字节指令;时间属性上来分,分为单机器周期指令、双机器周期指令和四机器周期指令。MCS-51单片机的指令由操作码和操作数组成,操作数又有无操作数、单操作数、双操作数三种情况。格式如下:

【标号:】操作码助记符【目的操作数】【,源操作数】【.注释】。

伪指令不用计算机做任何操作,只是帮助汇编,不影响程序执行。

2 IDE简介

2.1 IDE介绍

IDE(Integrated Development Environment,集成开发环境),包括代码编辑器、编译器、调试器、用户界面等,是用于编程语言开发的应用程序。目前的单片机IDE,主要是由国外几大面向嵌入式系统的软件公司来开发,如:德国的Keil,美国的Franklin等,国内几乎没有自主研发的优秀的单片机IDE。

2.2 IDE主要功能

(1)代码编辑。程序员在使用IDE进行程序开发时,大部分的时间都是在进行代码的编辑,一个好的IDE应该在代码编辑中为用户提供帮助,提高他们的开发效率,例如:通过改善显示效果来提高程序可读性;让部门代码自动生成从而简化用户输入的动作;方便用户进行程序阅读等等。(2)项目管理与编译控制。(3)平台信息管理。主要是针对嵌入式开发环境,针对不同的CPU体系、开发板名称,将所有的平台信息在信息管理模块中分类记录,用户选取相应的配置文件来使用新的开发平台,这样就能最快的进入最终应用开发阶段。(4)调试功能。IDE的调试功能是十分重要的,它能检查出软件执行过程中出现的错误,当然,在嵌入式系统开发中,还要支持远程调试。

2.3 在IDE中单片机汇编程序的开发

基于MCS-51单片机汇编语言程序的应用系统开发,有以下几个步骤:(1)源代码编辑。(2)生成目标程序。(3)下载或编程。(4)调试。

3 设计思路与详细步骤

3.1 界面设计

设计IDE时,选择微软的VC++工具,它是面向对象的程序设计工具,可视化功能强,界面友好,易于解决大型问题,软件维护方便。选好设计工具,就开始进入界面的设计,要让单片机汇编语言的初学者较好掌握这门语言,IDE就应该简单直观,易于操作。编辑框当中包含以下几个部分:(1)文件(file):新建、打开、保存、关闭、打印、退出;(2)编辑(edit):剪切、复制、粘贴、查找、撤销;(3)编译(compile):编译连接、装载程序;(4)实验演示和参数设置;(5)系统登录。

3.2 编译器设计

3.2.1 分解

一个编译器的整个工作流程是分阶段进行的,这几个阶段是:词法分析、语法分析、语义分析、目标代码生成。如果编译过程中发现源程序有错误,编译程序要报告出错误的性质和发生的地方,将错误的影响尽量限定在很小范围内,使得程序的其他代码能继续被编译。

3.2.2 设计步骤

(1)总体设计。设计时使用两遍扫描,第一遍是建立符号表和确定源程序每一行的偏移地址,同时检查汇编程序是否有错误;第二遍是利用第一遍扫描所生成的符号表,产生可供微处理器执行的机器代码文件,并产生一个列表文件。

(2)指令系统设计。MCS-51单片机共有111条可执行的指令和8条伪指令,建立一个对象,用来存储用户使用的指令系统的信息,如序号、操作数对应的Token码等,为了在编译时能够判断输入的语句正确与否,先要建立一个指令表和操作码表,然后将语句与111条指令进行匹配。

(3)词法分析设计。MCS-51单片机汇编语言程序,是将若干条MCS-51指令行组合而成,指令行格式:

【标号:】MCS一51操作码【操作数1】,【操作数2】,【操作数3】【;注释】

伪指令语句格式:

【标号:或字符串】MCS-51伪代码表达式列表【;注释】

定义一个类来进行词法分析,设置两个变量a,b,分别代表读入单词的头指针和尾指针,先将b的值赋值给a,然后通过循环逐个判断,得出a的真正位置,从而实现对词语的判断。

(4)符号表管理设计。符号表一个链表中的每个元素都是一个结构体,每个结构体包含多个域,如果遇到一个词语并判断出它是变量,就将它的名字、类型、值描述出来,存入符号表。

(5)出错处理设计。发现的错误必须由用户对源程序进行改正后再重新编译,错误信息和警告信息包括:出错的汇编源文件的文件名,出错行的行号,具体的出错信息等。

参考文献

汇编语言程序设计篇5

关键词:汇编语言;内容设置;教学方法;规范化

作为最接近机器语言的编程语言,汇编语言可以称得上是最接近于计算机操作本质的语言[1]。其直接面向硬件的特性,使得在使用汇编语言时,能够清楚感知计算机的运行过程和原理,充分认识应用程序和计算机硬件之间的联系与交互。相对于高级语言来说,汇编语言在编程者思维逻辑的锻炼上表现尤为突出,对于形成软、硬兼备的编程知识体系具有举足轻重的作用,而且指令集合简约,指令操作直接。对于计算机专业语言类课程的学习来说,从汇编语言开始学习更符合循序渐进的学习原理。特别是在计算机技术专业的学习中,汇编语言具有十分重要甚至说不可代替的作用。

1 现状分析

1.1 课程设置现状分析

就计算机的应用层面来说,对于绝大多数的软件开发市场,高级语言占据了绝大部分是毋庸置疑的。因此,学习者甚至是教育者都不同程度上受到了误导,通过对目前高校计算机专业语言类课程的设置研究发现,C语言、C++、java等高级语言一应俱全,但用人单位反馈的信息却是高校毕业生在程序编写的过程中很茫然,究其主要原因其实是基础薄弱导致的。而产生这种情况的主要原因是目前大多数高校将C语言作为计算机技术专业体系课程的开启项。其实汇编语言才是计算机技术的基础,原因是汇编语言能够让学生更好地理解高级语言。

在汇编语言程序设计中,对于内存的操作都是基于内存地址的[2],而C语言中最令学生费解的指针概念,其本质就是内存的地址。而在抽象的指针概念和实际内存单元之间建立思维映射是指针学习和应用比较困难的地方,但这些却恰恰是在汇编语言学习中经常会做的一件平常事。另一方面,在C语言中,诸如数据类型、全局变量、形参实参、函数调用、局部变量等概念及操作,都可以通过汇编语言中的一些操作相关联,进而形成一个具体的映像,再通过深度的剖析,很快就能掌握C语言。有了汇编语言和C语言的基础,再学习面向对象的语言时就更加通畅了。当然对于计算机专业的学生来说,学习的是计算机整套的系统知识,其中还包括数据结构、操作系统、微机原理与接口、编译原理、各种高级语言等。因此必须有一个好的教学体系,能够使学生更好地理解计算机知识,而这个教学体系的开启项应该是汇编语言,这是由其充分接触硬件的特性所决定的,汇编语言可以让学生充分理解计算机运行的原理,获得更多的感性认识,进而为高级语言的学习奠定坚实的基础。更重要的是抹去了计算机的神秘与深奥感,增加了学生的信心。此外,由于汇编语言本身是很简单的,再加上和前续课程的密切程度不高,因此,汇编语言作为学习者的入门学科是科学的。

1.2 学习现状分析

据调查发现,目前很多高校学生放弃了对于汇编语言的学习,原因是高级语言的开发更容易找到工作,尽管这个理由是现实的,但是存在着明显的认识误区。

首先,学习是一个系统的过程,而这个系统的过程不是某一门课程所能建立的。因此,对于汇编语言课程的学习,并不是一定要用汇编去赚钱谋生,而是因为本课程对于一个编程人员来说,在基本素质的培养和形成方面具有非常重大的意义。

其次,汇编本身也是很重要的应用技术。由于在学校,学生平时接触最多的是纯软件的东西,因此,在他们的意识中那些各种各样的软件才是计算机技术应用的舞台。但事实上,很多硬件设施的嵌入式编程使用的都是汇编语言,因为汇编语言更直接,更有效率。例如现在很多数码产品赖以生存的芯片、主板等,都包含了嵌入式程序,而这些程序中,汇编语言的使用是非常普遍和相当重要的。

综上所述,作为一名计算机专业教师,如果不能够正确的认识到汇编语言的基础性和重要性,一味地标榜高级语言,那么他越努力地教学也就越“兢兢业业”地误导学习者。再者,学生如果无法认识到汇编的重要性,抛弃了基础,那么他在计算机领域所能做的贡献也是十分有限的。因此,如果想学好计算机编程技能,想做一名合格的编程人员,而且想在计算机编程之路走得更远,就只有,也必须从汇编语言开始,才能完整、完善地建立计算机编程知识体系。

2 汇编语言程序设计课程内容的规划

2.1 基于8086/8088设置教学内容

“汇编语言程序设计”课程的教学目的主要是使学生理解机器语言程序控制计算机工作的基本原理[3],能够较熟练地编写一般的汇编语言程序,解决一些基本的实际问题,较深入地掌握汇编程序设计的思想与方法。

因此该课程在教学内容的设置方面基本应包括以下各个方面:

(1)机器数的各种编码表示、CPU的内部结构、存储器的内部结构、I/O端口等有关基础知识;

(2)指令系统和寻址方式;

(3)汇编语言语句的格式、程序的格式;

(4)循环与分支程序设计;

(5)子程序设计;

(6)I/O程序设计。

为了进一步增强学生的编程及应用能力,拓展知识面,可以将以下各部分内容作为提高和应用部分:

(7)宏汇编等高级技术;

(8)BIOS和DOS中断;

(9)磁盘管理维护与文件存取技术,如对FAT损坏的磁盘直接读写以恢复数据、硬盘软保护程序设计等;

(10)32位机上的保护模式编程[4];

(11)模块化程序设计及与高级语言程序的连接,在高级语言中使用直接嵌入式汇编语言编程等;

(12)存储管理优化及RAM驻留程序TSR(Terminate and Stay Resident)设计等;

(13)文件加密、加密文件分析与解密(如.fox文件的解密)等。

对于以上内容的讲述,不同的学校、教师有不同的观点。虽然主流微处理器已经从8086发展到了酷睿等,但是对于80X86结构中8086/8088的指令是最基本的,其他各指令都是对基本指令集的扩充,因此应当将8086/8088汇编语言作为本课程教学的基本内容。但是对于如80386等结构及其保护模式的接受是不容忽视的,而且应该安排一定的实验。

2.2 整合教学内容精简指令系统

本门课程的前序课程是大学计算基础,因此在本门课程的讲授中,应避免重复内容的讲解,如机器数的编码等。另一方面,在讲解时需要特别注意前后课程的联系,比如在讲解寄存器、存储器时,应对“计算机组成原理”中的相关内容作一个回顾,对汇编指令和后继课程有纵向联系的方面要重点讲解。

汇编语言指令有几百条之多,但是频繁使用的不多。因此,课程讲述时,应详细讲解常用的指令,主要让学生学会自学方法,便于自学其他指令。并且将指令讲解分散到各章中,一方面保证知识的循序渐进,另一方面又让学生从第二章开始就能够接触简单的指令和程序,诱发学生的学习兴趣,使学生在学习程序中学习指令、寻址方式和编程规则,进而在实例中体会、在体会中总结提高。

2.3 教学内容与科研紧密结合

教学内容与科研结合,一方面提高了学生分析问题、解决问题的能力,另一方面保持了教学内容的先进性和时代感[5],同时学生也能够感受到汇编语言的功能和作用。而且教师根据系统开发的经验和体会,帮助学生认识高质量软件必须来自严格的开发过程控制,良好的程序设计能力和风格必须在学习的过程中积累。

3 教学方法及手段

3.1 汇编语言程序设计的教学方法

汇编语言和二进制的机器指令是相对应的,因此它缺乏高级语言结构化的控制语句、过程化的操作语句,所以,汇编语言源程序的编写相对显得繁琐。作为机器指令的符号化,每一条汇编指令所能完成的操作是很有限的,在使用汇编语言编写程序时,寄存器、存储单元及寻址方式是需要密切关注的细节。正是因为它的细致、琐碎和费解,导致了教学的困难。

所以教学过程中对于复杂的程序结构应该避免过多的讨论,主要通过一些经过精心设计的较为典型的例题程序对学生学习汇编格式、指令及程序设计方法进行指导。例题的示范作用,会提高学生规范化设计的意识,也有利于养成良好的编程风格。

通常情况,汇编语言程序的讲述应遵循以下原则:

(1) 程序的算法逻辑应描述得比较自然而且容易理解,程序的结构应该简洁而且解法直接[6]。

(2) 按照结构化设计原则,通过顺序、选择和分支三种基本结构编制程序。

(3) 应注重代码的优化处理,提高程序的运行效率。

因此,以上述原则应该结合典型的例题去讲授,一方面有利于学生掌握这种与高级语言相比略显晦涩的语言,另一方面也进而培养了学生正确和规范的程序设计方法。

3.2 教学手段

利用传统的授课方法和CAI课件展开课堂教学,增强教学的直观性和可视性,尽量减少板书时间,提高课堂教学效率。对课程中的重点、难点,比如寻址方式及子程序调用的堆栈变化等知识点,用动态图形的形式去演绎,既可以增加趣味性,又可以达到事半功倍的效果。开展实物实例模拟教学,自己动手制作教具,用模型进行演示。

4 结束语

汇编语言程序设计是计算技术重要的专业基础课程,由于和计算机硬件结合的紧密性,在编程语言中所扮演的角色不可替代,在高校计算专业的课程教学中不应被边缘化,而是应加强课程内容设置和教学方法的规范化,进而解决教学中存在的问题。

参考文献

[1]马艳,包殷立.汇编语言教学改革探讨[J].福建电脑,2009(12):211-212.

[2]沈美明,温冬婵.编语言程序设计(第2版)[M].北京:清华大学出版社,2003.

[3]李振宏.汇编语言程序设计教学方法探讨[J].科技信息,2010,(14):233.

[4]葛志辉,李陶深.汇编语言程序设计教学改革探讨[J].广西大学学报(自然科学版),2008,33(z1):209-211.

[5]田庆,朱俊岭,黄伟.汇编语言程序设计课程的教学探讨[J].电气电子教学学报,2007,29(1):13-15.

[6]张洪业,宋人杰,等.汇编语言教学改革与实践[J].计算机教育,2009,(21):60-61.

――――――――――――

汇编语言程序设计篇6

关键词:C语言;计算机软件;编程

网络时代的到来,使的计算机得到了广泛的应用,计算机软件在日常生产和生活中具有不可替代的作用,其可以提高生产效率和经济效益。C语言是软件编程过程中的基础语言,其不但有其他高级语言的主要特点,同时还具备汇编语言的优势,是提高计算机软件更新速度和优化编程过程的关键,充分利用C语言进行编程,可以有效提升编程的效率。

一、C语言在计算机软件编程过程中的具体应用

(一)编程技巧

利用C语言进行软件编程时,指针是具有特殊意义的一种变量。指针可以是编程人员将复杂的问题进行清晰表达,还能够准确的解决这些复杂问题。因此,编程人员要熟练掌握指针的运用技巧,以提高软件编程的效率。指针主要分为名称、类型以及数值三个重要部分,其相当于一般变量,只是存在类型和数值的不同。指针的特点是既能表示数组,还可以充当参数返回值在函数中表示。

(二)C语言有函数的有效运用

利用C语言进行软件编程时,往往会有特殊的地方会使用特有函数。而不同的函数名称可以体现不同函数的特有功能。在对函数过进行定义时,函数的具体名称和参数以及返回值的类型确定都是有编程人员来完成的。C语言的翻译系统只是进行库函数的提供,同时对函数的名称进行定义。在程序调试过程中,编程人员只需利用“#include指令”将头文件纳入到相应的文件,无需再进行复杂的操作。

(三)各种算法的灵活运用

在计算机软件程序的设计过程中,算法是整个设计的核心内容,编程人员要对各种算法清晰认识并灵活运用。通常情况下,算法可以通过自然语言、流程图等进行表示,但是流程图表示需要编程人员熟悉各种流程图的表示符号,才能准确表示算法。也就是说,数学知识在计算机编程过程中具有重要的地位,编程人员具有良好的数学素养才能真正提高计算机软件编程的效率。

(四)位运算和文件知识的灵活运用

利用C语言进行编程时,位运算是唯一的,其重要性不言而喻。二进制位是位运算主要的对象,位运算在运算过程中往往还要结合其他的相关程序。文件是计算机的重要组成部分,其位置不可替代。文件主要分为程序和数据文件两种,文件中能够储存编程人员设计好的程序,可以简化数据查找的步骤,提高查找的效率。

二、混合应用C语言和汇编语言的编程方法

利用C语言对汇编语言的子程序进行调用、利用汇编语言对C语言子的程序进行调用、将C语言的程序嵌入至汇编语言中是混合编程的三种主要方式。

(一)利用C语言对汇编语言的子程序进行调用

利用C语言对汇编语言的子程序进行调用时,要根据程序中参数的具体顺序,将参数按照反序的顺序压入到堆栈中,传递时要按照参数的数值,利用“EXTERN”说明函数的具体显示。函数名要通过8个字符内的下划线格式进行命名,同时要进行代码段的具体说明,通过“―TEXT”进行代码段的命名。汇编程序参数可以C语言的参数,汇编程序要对寄存器进行保护。在混合利用C语言和汇编语言进行编程时,汇编的整个过程需要严格遵守已经规定好的开头和结尾格式。

(二)利用汇编语言对C语言子的程序进行调用

利用汇编语言对C语言的子程序进行调用时,无需对汇编语言的主程序、子程序两种程序的格式进行改变,只要保持主程序、子程序的一直的格式即可,在开始编程前通过“EXTREN函数名”表明身份后,即可代表此函数是对C语言程序进行调用的函数。

(三)将C语言的程序嵌入至汇编语言

将C语言的程序嵌入至汇编语言主要包括C语言程序对汇编子程序模块进行调用以及嵌入到汇编的指令。若C语言为主程序,汇编语言的模块,就要用C语言对汇编子模块进行调用。C语言程序嵌入到汇编指令的应用主要针对C语言难以控制的硬件上。

三、总结

目前,C语言在软件编程时得到了广泛的应用,其独立、简易的特点可以提高计算机编程的效率和质量,具有确保计算机软件的不断开发和更新的作用。(作者单位:海南师范大学)

参考文献:

汇编语言程序设计篇7

关键词:汇编语言;实验教学;DEBUG;指令系统

1汇编语言教学现状

汇编语言是计算机专业的核心基础课程,是一门软硬件结合的主干课程,与计算机组成原理、单片机、接口技术等其他课程都有着重要的联系。汇编语言在出现后的近半个世纪里,指令体系不断扩展,研究领域不断发展变化。在今天看来,尽管C/C++等编译器运行速度很快,编译生成的目标代码运行速度也很快,但用汇编语言编写的源程序汇编后得到的目标程序仍在时间和空间两个方面体现出较大的优势,运行速度更快,目标代码更短。在计算机自动控制、仪器仪表和家用电器等的应用程序日益发展的今天,速度快、功能强的汇编语言更是占有非常重要的地位。对计算机相关专业的学生来说,汇编语言是需要掌握的重要专业基础知识之一。

汇编语言是一种以“指令助记符”为特征的低级语言,能直接控制底层机器的操作,同时又为操作系统和高级语言提供支持。然而随着硬件技术的飞速发展,处理器的性能和存储器的容量达到了相当的高度,计算机体系结构由标量计算机向阵列计算机、并行计算机和数据流计算机发展,多任务的操作系统(Windows、Unix、Linux)为应用程序提供了广阔的平台。而在操作系统中,大部分代码采用高级语言(C/C++)编写。特别是随着网络技术的发展,基于Internet的程序设计与开发成为了当前的热点,学生对在C/S与B/S结构下基于J2EE虚拟平台的程序设计的学习热情高涨,汇编语言所占的份量大大降低。

在汇编语言的教学过程中,普遍存在的问题就是主流的微型计算机已经进入了32位和64位的时代,多任务的操作系统取代了DOS,而绝大多数高校汇编语言课程仍然是单任务操作系统DOS下的8086汇编语言,主要教学内容是在学习8086CPU基本结构以及指令集的基础上,在DOS环境下通过软中断对BIOS和DOS系统功能的调用来开发应用程序,尽管以386体系结构为基础的Pentium处理器也进入了教材,但是对于386体系结构的讲解仍是以实模式为主,对于保护模式的知识应用能力甚为空泛,给学生的印象是所学的汇编语言知识跟不上时展的步伐。又因为汇编语言和机器的体系结构结合紧密;使用者需要对计算机组成、硬件控制和指令解释过程有比较清晰的掌握;如果程序的移植性不好,程序的编译调试就比较麻烦;编写出吸引人们感官的程序就比较困难。

因此,学生在汇编语言的学习中产生厌烦情绪,对汇编语言的学习热情普遍不高,有些高校则开始采取各种手段从教学内容和方法等方面对汇编语言课程进行改革。如北京理工大学计算机学院从教材建设、教学内容和方法等方面进行了大胆的改革,有效地提高学生的学习积极性[1-2]。

2教学方法研究

为了提高学生学习汇编语言的积极性,教师应针对汇编语言学习的难点来一一破解。对部分同学认为汇编语言知识跟不上时展步伐这一误区,教师应该在上第一节课时就要予以更正,要告诉学生汇编语言的应用领域,如目前流行的嵌入式系统的硬件的检测和控制部件都是由汇编语言完成的,还可以找适当的机会给学生介绍一下计算机病毒的工作机理,从而提高学生学习汇编语言的积极性。

对于汇编语言和机器的体系结构结合紧密、抽象性强、难于理解的问题,教师在讲解指令系统时,要与CPU的功能结构结合起来,把地址、数据和控制信息的传递要通过图示进行分解。

如讲解指令 MOV AL,[3008H],这是一条传送类指令,即将偏移地址为3008H的存储单元中的信息送回CPU中的累加器AL寄存器中。如果这样讲,学生不易明白,因为他们之前学过的语言都没有涉及到CPU的内部部件,而且在程序中也没有直接提供存储器的地址信息。为了让学生明白这条指令的含义,可以在课件中画出CPU的功能结构图(图1),然后通过动画演示整条指令执行的全部过程:从指令队列中读取指令,通过译码器译出指令的功能;将偏移地址3008H通过内部总线送至总线接口部件;通过20位的地址形成部件与16位数据寄存器DS的内容结合形成20位的物理地址,通过控制部件发出存储器读命令;存储器将所存储的信息通过数据总线送至总线接口部件,通过内部总线送至AL寄存器中。每一步都要用图显示出数据的流向以及时序。

图1CPU功能结构图

教师在讲解指令系统初期对某些具有代表性的指令进行上述详细、逼真的讲解,可以极大地增强课程的可理解性,提高学生对指令的感性认识,继而增强学生的学习兴趣。

学生编写汇编程序的初期,往往会认为程序调试麻烦,这是因为汇编语言相对于其他高级语言来说比较抽象,实验结果不容易检验造成的。简单的汇编语言实验结果往往是存储在CPU内部的寄存器或者内存当中,不能够很直观的看到,如果通过DEBUG就可以观察到寄存器的内容和存储器的内容,同时通过T命令,可以跟踪每条指令执行后寄存器和存储器的变化,这是调试程序和发现逻辑错误非常有效的手段。它要求学生要灵活掌握DEBUG的各种功能,记住它的各种命令,因此,需要教师在课堂上花费一定的时间来讲解各种命令的用途,同时需要演示它们的使用方法。一旦学生真正地掌握了DEBUG的应用方法,对深入了解计算机的工作原理和指令系统将起到直接和不可替代的作用

3实验教学平台设计

实验教学是检验和巩固已学知识的一个必要手段,是培养学生创造性的关键环节,也是教学改革的一个重要方面。然而学生在汇编语言这门课程中,对所学知识缺乏必要的感性认识,因此实验环节在整个教学活动中就占据了举足轻重的地位。

然而,传统的80X86汇编语言实验一般都是在DOS环境下进行的[3],具体过程如图2所示,用编辑程序(如EDIT命令)编写源程序,然后用编译程序(MASM命令)将源程序编译成目标程序(即.obj文件),然后用连接程序(LINK命令)将目标文件转换成可执行文件,在DOS环境中执行这些命令时,后面往往需要紧跟各种参数,这些会给学生带来很多额外的负担,而且在一个源程序进行编译连接的过程中往往不能一次通过,可能会出现各种错误,这样上面的过程会多次的重复,因此在DOS的命令行上要频繁进行上面的操作,非常的繁琐,容易引起学生厌倦。

目前流行的操作系统是Windows,学生对DOS的使用非常陌生,DOS的各种命令也都很少使用,因此在做汇编实验时,学生往往会频繁在Windows和DOS之间切换,这样大大的影响了学生上机的效率,使得用汇编语言编程变成了一件非常不舒服的事情[4]。

因此作者所在的教研组开发了一个基于Windows操作系统的以Intel 80X86为指令系统的汇编语言集成环境,该集成系统集编辑、编译、连接和调试于一体的实验开发平台。开发人员可以在该实验平台上编写源程序,然后用户只要直接用鼠标点击菜单上的相应命令,就可以完成程序的汇编和连接工作,直接生成可执行文件,所有工作一次性完成。并且同时把汇编和连接时产生的输出信息输出到输出窗口中,供用户参考,而不会输出到DOS的命令界面上去,省去了不同操作环境之间的频繁切换。当然实验平台包含了文件导入功能,如果需要编辑其他未汇编的汇编程序,可以在该平台中导入用其他文本编辑工具编写的汇编语言原程序进行汇编,只要导入的原代码格式是纯文本文件即可。

这一开发平台很好地解决了汇编语言的开发与操作系统之间的矛盾,运用在课程的实验教学中,效果良好,大大提高了学生做实验的积极性。

4实验教学的组织

由于DEBUG是关键的调试程序,因此教师需要专门设计若干个小实验让学生对DEBUG有一个深刻的了解和认识,通过熟悉DEBUG的过程掌握指令的功能和各种寻址方式。

由于汇编语言不同于其他高级语言,因此直接让

学生来编写汇编语言程序并不太现实,应该设计一些具有一定功能的小程序,让学生来验证,通过模仿和验证逐渐掌握汇编语言的编程规律和方法。同时让学生在现有正确程序的基础上故意安排几个错误,重新进行编译和连接,使学生熟悉汇编语言编译系统所报的各种错误信息的含义,以及修改方法,这样当学生调试自己所编写的程序时,遇到报错信息,就会心里有数而不至于手足无措了,这样会大大提高学生编写汇编语言程序的自信心和实践能力。

为了提高学生的学习兴趣,DOS功能调用实验是必不可少的,这需要选取一些学生感兴趣的、具有观测效果的实验。对于能力比较强的学生,可以让他们试一试底层操作,如BIOS调用、I/O操作,对显示器以及硬盘的控制等,那样会令这些学生体会到学习汇编语言的快乐。

5知识的提升

学生在学习汇编语言课程之前,通常都已经学习了C语言,在实际中,汇编语言和C语言混合编程的应用也比较多,因此可以作为扩展内容,让有能力和有兴趣的学生选做一些混合编程的实验,使学生更深刻的体会到学习汇编语言的用途,提高学生的动手能力和实践能力。学有余力的同学可以选作一些Win32汇编语言的程序设计,由于Win32汇编程序设计方法和思路与当前主流的程序设计技术一致,具有较强的实用性及先进性,因此可以对学生的知识结构体系进行提升和延续。

6结语

汇编语言是计算机专业一门重要而又难学的课程,这要求教师必须不断学习、创新,在改革教学模式的同时努力培养学生的创新精神和动手实践能力。

参考文献:

[1] 张雪兰,谭毓安,李元章. 汇编语言程序设计课程教学改革与创新能力培养[J]. 计算机教育,2008(8):22-23.

[2] 刘辉. 汇编语言实验教学探讨[J]. 计算机教育.2008(4):11-13.

[3] 王正智. 8086/8088宏汇编语言程序设计教程[M]. 北京:电子工业出版社,2006:203-206.

[4] 焦殿科,郭延锋. 计算机专业“汇编语言程序设计”课教学改革研究与探讨[J]. 辽宁工学院学报,2007,9(6):123-125.

Discussion of Assembly Language Teaching

WANG Xiao-ye, WEN Xian-bin

(School of Computer and Communication Engineering, Tianjin University of Technology, Tianjin 300191, China)

汇编语言程序设计篇8

关键词:ARM;汇编程序设计;教学;比较法教学

中图分类号:TP313-4

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]文全刚.汇编语言程序设计-基于ARM体系结构(第2版)[M].北京:北京航空航天大学出版社,2010.

[2]陈燕俐,许建.“汇编语言程序设计”课程教学改革探索[J].中国电力教育,2012.

[3]熊小兵.“汇编语言程序设计”的比较教学法[J].计算机教育,2010.

汇编语言程序设计篇9

微型计算机原理与接口技术是电子信息类专业的一门专业必修课程,对掌握微机的工作原理和接口应用尤其重要。本文以8253 为例,主要结合C 语言与汇编语言进行计算机程序编写设计中各自的特征优势,从C语言角度和汇编角度探讨接口芯片的编程。

【关键词】

微机原理;C 语言;汇编语言;接口

0 引言

微型计算机原理与接口技术是电子信息类专业的一门专业必修课程,对掌握微机的工作原理和接口应用尤其重要。本文以8253 为例,主要结合C 语言与汇编语言进行计算机程序编写设计中各自的特征优势,从C语言角度和汇编角度探讨接口芯片的编程。

1 定时/计数器8253芯片知识点描述

8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。

1.1 速率波发生器

进入这种工作方式,输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,保持为高电平不变;待计数值减到“1”和“0”之间,将输出宽度为一个周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,将输出一定频率的负脉冲序列,其脉冲宽度固定为一个周期,重复周期为周期的倍。时序波形如图1所示。

1.2 方波发生器

任一通道工作在这一工作方式时,只在计数值为偶数,则可输出重复周期为、占空比为1∶1的方波。进入工作方式时,输出低电平,装入计数值后,立即跳变为高电平。如果当前GATE为高电平,则立即开始减“1”计数,保持为高电平,若为偶数,则当计数值减

到时,跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值,实现循环计数。这时端输出的周期为n×周期,占空比为1∶1的方波序列;若为奇数,则端输出周期为周

期,占空比为:的近似方波

序列。时序波形如图2所示。

1.3 使用C语言的优势

语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。

1.4 使用汇编语言的优势

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。

总之,对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。

2 实例:C 语言方式下和汇编语言下控制8253

8253控制端口地址为303H;计数器0地址为300H;计数器1地址为301H;计数器2地址为302H。

用C语言程序实现,则程序段为:

outportb(0x303,0x56) ;//56H,选择计数器1,低8位读写,方式3(方波发生器),二进制计数。

outportb(0x301,8) ;// 向计数器1 写入低8位初值8H。

outportb(0x303,0x94) ;// 向8253 控制端口写控制字94H。选择计数器2,低8位后读写,方式2(分频脉冲发生器),二进制计数。

outportb(0x302,6) ;// 向计数器2 写入低八位初值6H。

如果用汇编语言实现,则程序段为:

MOV DX,303H

MOV AL,56H

OUT DX,AL

MOV DX,301H

MOV AL,8

OUT DX,AL

MOV DX,303H

MOV AL,94H

OUT DX,AL

MOV DX,302H

MOV AL,6

OUT DX,AL

从中可以直观地可以看出,如果使用汇编语言对8253 写入控制字MOV DX,303H、MOV AL,36H和OUT DX,AL三条语句完成,而且需要3个寄存器,但由于CPU内部资源中寄存器有限,它属于最珍贵的资源寄,使用汇编容易造成寄存器资源紧张;而用C 语言只需调用outport函数,C语言的代码长度短了很多,并且也方便初学者掌握,使初学者在嵌入式软件开发上产生更多的兴趣,为大型嵌入式软件的开发奠定坚实的基础。

3 结束语

根据本文比较C语言和汇编语言对8253 的开发,会让更多的初学者明白C语言作为一种面向结构的语言对嵌入式系统开发的优胜性,希望越来越多的初学者在微机原理和接口的实验课上,采用C 语言进行开发,削减代码量,提高效率。今后使用中也可以使用C 语言与汇编语言进行混合编程开发设计,不仅具有C 语言与汇编语言编程设计中的优势特征,并且对于两种语言编程设计中的局限性问题,也有相互的补充与改进,具有较好的灵活性,并且编程开发设计速度快、效率高,有很大的编程开发设计应用优势。

【参考文献】

[1]冯博琴.微型计算机原理与接口技术(第3版).北京:清华大学出版社,2011.

[2]沈美明.IBM-PC汇编语言程序设计(第2版).北京:清华大学出版社.2013

[3]谭浩强.C 程序设计(第三版).北京:清华大学出版社,2005.

汇编语言程序设计篇10

关键词:机器语言;汇编语言;计算机高级语言

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)08-0093-02

计算机组为什么有别与其他人类发明的工具,能够自动、准确的执行人们事先编制好的程序?要回答这个问题我们必须理解机器语言、汇编语言、计算机高级语言。计算机高级语言很多人接触到或者学习过不难理解;但是机器语言、汇编语言很少有人接触,包括计算机专业的学生,这些年也逐渐不再开设汇编语言程序设计课程。计算机的层次结构如图1。

1计算机的机器语言

很多教材对计算机的机器语言概括为计算机能直接执行的语言,用户必须用二进制(0,1)来编写程序,要求程序员对所使用的计算机硬件及其指令系统十分熟悉。这样的解释很抽象也很难理解。其实机器语言并不难理解,我们用教室的电灯系统来举例,用Ki表示对应的开关;用1表示开关闭合,用0表示开关断开;假如教室里有4个开关,分别控制不同的电灯。则教室里电灯系统的指令系统用二进制(0、1)表示出来如表1。

@里的指令系统中0000表示全灭,1111表示全亮。根据这个指令系统编写了某个程序,Ti表示指令执行的时间周期。程序如表2所示。

这是与电灯系统为例。如果以某机器为例,对ax2+bx+c进行运算,进行程序优化为(ax+b)*x+c;具体机器语言步骤如图2。

2汇编语言

通过上面两个例子对机器语言能更好地理解。汇编语言是在机器语言的基础上出现了符号式的程序设计语言。它用符号ADD表示加;SUB表示减;MUL表示乘;D1V表示除;MOV表示取数等。用汇编语言ax2+bx+c进行运算程序如下。

数据段定义a,b,c,x;

代码段如下MOV A CCX;取数x至ACC;

MUL a;ACC的值乘于a,放到ACC中,即a*x->ACC;

ADD b;ACC的值加b,放到ACC中,即a*x+b->ACC;

MUL x;ACC的值乘于X,放到ACC中,即(a*x+b)*x->ACC;

ADD c;ACC的值加c,放到ACC中,即(a*x+b)*x+c->ACC;

MOV result,ACC;把结果从ACC送到result单元。

通过这个程序可以知道,汇编语言与机器语言是一一对应的,故需要程序员对计算机的硬件、结构和指令系统都要熟悉。

3高级语言

高级语言对问题的描述十分接近人们的习惯,跟数学逻辑类似,并且有较强的通用性。如FORTRAN.BASIC、PASCAL、C等,比如C语言编写ax2+bx+c进行运算程序如下。