在线客服

汇编语言程序设计实用13篇

引论:我们为您整理了13篇汇编语言程序设计范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。

汇编语言程序设计

篇1

汇编语言程序设计;研究性教学模式;创新人才培养

1《汇编语言程序设计》课程现状及存在问题

《汇编语言程序设计》是计算机专业的专业基础课,是一门实践性很强的课程。以往老师讲授这门课程时,主要以“老师讲、学生听”的形式进行的,这样不助于学生理解指令的执行过程,往往导致学生在上机调试时无从下手,更谈不上综合程序的设计。这种僵化的教与学的模式必须进行改革,才能达到创新人才培养的目标。

2教学改革思路:

如果要提高教学质量,达到预期的教学效果,关键要改革教师的教学方法和学生的学习方式,即教师从传统的讲授灌入式向探究式转变,学生从传统的被动接受向主动接受、探究发现和研究性学习转变,达到培养学生主动发现问题、分析问题、创造性地解决问题的能力[1]。这就需要重新定位教师主导地位和学生主体地位的关系,采用以"学生为主体,教师为主导"的新教学理念。结合汇编语言程序设计课程的特点,紧紧围绕“深入理解机器工作的基本原理、培养底层编程意识和思想”和提高学生综合运用所学知识的能力两个核心目标,通过对教学方法及考核方式等进行改革,从而提高教学质量。

3教学方法及教学手段的改革

1.启发式教学:课程的讲授过程中,采用启发式教学方法,有意识地引导学生思考,将计算机的硬件工作过程深入课中,使得学生对语言的执行过程有更深入的理解。例如,在讲解存储器的分段时,可以将CPU与存储器的数据访问讲解一下,这样学生就能理解为什么要进行分段处理。2.项目驱动教学:汇编语言程序设计是一门实践性很强的课程,老师根据课程目标,设置3个难度适中的综合训练项目,贯穿整个教学过程中。学生在课余时间,通过检索资料、团队合作、综合分析,寻找解决问题的方案,最终提交程序代码及方案报告。“项目”教学是以学生为中心,老师为组织者和引导者,在项目的实现过程中,不但使学生加深对知识的系统理解,而且也了解了与知识相关的前沿热点问题,从而培养大学生自主学习能力、探究问题能力、协作能力、适应和创新能力等。3.随堂实践:学生上课可以自带笔记本,在知识点的讲解过程中,老师要充分利用多媒体教学环境中的计算机系统,对于程序实例可课堂调试演示,在机器上可随堂编写小程序现场运行,和学生一起进行调试的过程中,打破汇编语言的神秘感,消除学生对汇编语言难以掌握的恐惧心理,使同学们更直观、更快理解和掌握相关知识,激发学生对新知识和新技术的求知欲,提高教学质量。

4教学组织过程

课堂的前几分钟进行提问,掌握学生的知识点掌握情况,并督促学生搞好复习与预习;在知识扩展环节中,老师布置知识扩展点及要求,学生自主查阅资料并整理资料,增强学生查阅、整理和总结资料的能力,进而锻炼学生自主学习的能力;训练项目的实施以项目组的形式进行,即5~6名学生为1个项目组,并选其中一个学生担任组长,组长组织成员开展讨论和交流,但每个学生都独立完成项目的设计、实验和项目报告;项目的实施主要采取“课外为主、课内为辅”的方式。即学生领取任务后,通过课余时间进行资料查阅、讨论、答疑、编程和调试,以及完成项目报告书等。每个项目布置时,老师要进行概要的讲解,让学生了解项目的整体思路及接下来应该怎样解决,然后多安排几次答疑辅导时间,学生带着自己的疑问与老师交流,师生一起找到解决问题的办法,这也提高了项目的完成质量;答辩时要求以组为单位,在规定的时间范围内,做完的组可以找老师答辩,答辩时学生带着电脑可以进行现场调试,根据功能实现及答辩情况给予答辩分,对平时负责本组程序讲解的同学答辩成绩有加分;由组长组织,进行讨论,锻炼学生的表达能力,增加学生的知识储备;每周安排一次答疑,这样可以及时了解学生知识点的掌握情况,有助于老师课堂内容的安排,同时也有助于师生交流,提高教学质量。

5考核方式

以课程结束时的考试作为评定学生的依据是很不科学的,要改变传统的学生学业评价中“一考定全局”终结式评价模式[2]。学生的评价应该是能够不断的指导学生、鼓励学生、完善其学习方法,增加学生的应用能力,进而实现人才的培养目标。在课程考核中,我们采取以下的考核办法:期末总成绩由考试成绩(50分)、综合训练成绩(40分)、平时成绩(10分)三部分组成。总成绩中加重了学生对所学知识综合应用能力的比重,同时也注重对学生学习过程的评价。

6结束语

本文将研究性教学模式引入《汇编语言程序设计》课程教学中,打破了传统的教学理念,经过两轮教学实践,教学效果较以往有明显的提高。

参考文献:

篇2

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.

篇3

一、汇编语言程序设计课程的特点

汇编语言比机器语言有了很大的进步,但仍是面向机器的一个非常低级的语言,非常冗长单调、易出BUG并且调试困难、代码不易维护、兼容性不好、与硬件关系非常紧密,所以汇编语言的通用性较差。但汇编语言除了保持机器语言的编程质量高、执行速度快、占用内存少的优点外,还具有易记忆、易理解、书写调试较方便等优点。

二、教学中存在的问题

1.传统教学内容的缺点

传统的汇编语言教学一般按照教材的编写顺序,教师先讲CPU的功能结构知识,然后讲存储器与寻址方式知识,最后讲汇编语言指令系统和程序编写。在讲CPU的功能结构的时候,因缺少实践,大多数学生感到所学知识非常抽象,难以理解,逐渐感到汇编语言课程枯燥无味,对汇编语言学习失去兴趣,严重影响了后续章节的学习。

2.实验设备配置不合理

汇编语言课程作为一门实践性很强的课程,必须进行大量的实践,但这恰恰是大多中等职业学校所缺乏的环节,主要有以下原因。

(1)实验设备昂贵,这对于资金并不充裕的中等职业学校来说,很难为了一门课程而购买足够数量的实验设备。实验设备的缺乏,严重影响了学生的实验教学质量。

(2)学校计算机室的计算机不敢让学生进行实验练习,因为汇编语言是针对硬件编写程序的,学生在实验的时候如果出一点差错就有可能对计算机设备造成永久性的破坏。这就使得学生无法完全理解汇编语言程序设计与硬件的联系,达不到汇编语言实验目的,无法验证学生编写程序的正确性。

3.“双师型”教师数量不足

在中等职业学校,由于多方面的原因,学校对于既懂理论,又能实践的双师型教师十分缺乏。很多汇编语言教师,只注重理论教学,忽视了教师自身实践能力的提高,只会按照教材讲课,不会编写汇编语言程序的现象非常常见。只侧重汇编语言理论教学,必然严重阻碍汇编语言实践教学质量的提高,无法满足当今社会对汇编语言程序设计人才的培养要求。

三、教学改革的探索

1.打乱常规教学顺序,激发学生学习兴趣

初次教授汇编语言课程,教师先不要讲解教材上关于CPU的功能结构和存储器及寻址方式部分内容,而应采取与实际应用相结合的一体化教学方式。教师可以先让学生看一段机器语言设计的小程序。给学生讲讲早期的程序员是怎样使用机器语言进行编程的,接下来把上段机器码用汇编指令写出来给大家看,让同学们感觉到使用汇编语言程序设计比机器语言设计既简单又容易记忆,这就为激发学生的学习兴趣奠定了第一步的工作基础。在后续的课程中,教师可以与教材相结合,在讲解程序例题的过程中讲解用到的CPU的功能结构和存储器及寻址方式部分知识,让学生逐个理解和掌握这些抽象的知识,不至于一次把学生讲蒙,也不会因此影响学生学习这门课的兴趣。

2.注重培养“双师型”教师

篇4

汇编语言也好,高级语言也好,它们都只不过是程序设计的工具,因此对于程序的基本功能和程序设计的基本问题,它们都有相应的实现机制,而且在很多方面都是相通的,尤其是在程序设计的基本思想方法上。但汇编语言和高级语言毕竟是两种不同的语言类别。从源程序的基本单位――语句的层面看,高级语言语句的功能远比汇编语言语句即各种指令和伪指令的功能要强大。此外即便是同样的问题,如数据安排、数据处理、流程控制、子程序结构等,它们的实现机制也不一样。

效率最高的教学方法首推比较教学法(或叫类比教学法),也就是将新的陌生的东西和旧的熟悉的东西做比较,找出它们之间相同的地方和不同的地方,然后进行差异化的学习,重在存同求异,这样就会事半功倍。

因此,笔者在多年从事“汇编语言程序设计”的教学中,特别注重以学生在学习高级语言程序设计课程时所获得的知识和体验为基础,将汇编语言和高级语言进行比较教学。

本文就是这一教学方法的经验总结。

1数据的组织安排

程序是用来加工处理数据的,因此程序设计工作离不开数据的组织安排。数据的组织安排就是指为程序加工处理的数据安排合适的空间并且组织好,以提高对数据加工处理的效率。从应用层面看,数据的组织安排通常包括3个方面:

(1)安排在哪?即空间位置问题。

(2)安排多大空间?即数据长度问题。

(3)存放什么样的数据?即数据类型问题。

在数据空间的组织安排方面,汇编语言和高级语言的一个重要差别是:高级语言提供的是直接面向应用的数据类型,如C语言中的基本类型――整型(int)、浮点型(float)、字符型(char),而整型又有长(long)、短(short)之分,浮点型又有单精度(single)和双精度(double)之分,此外还有有符号(signed)和无符号(unsigned)之分等。高级语言的数据类型是面向应用的,因此它们有两方面的含义:类型特点和长度大小,这就解决了上述3个问题中的后两个问题[1]。

在C语言中,数据除了有类型这个概念之外,还有类别之分,即存储类别问题,共有4种:static、auto、register和extern。从严格意义上讲,其中和数据空间的组织安排有关的只是前3种:static和auto对应的是内存空间,而register对应的则是寄存器空间,这又解决了上述3个问题中的第一个问题[1]。

与高级语言不同的是,汇编语言的数据类型是面向机器的,如MASM中的基本类型――DB、DW、DD、DQ、DT等,它们只有长度大小的含义,而且都是对应内存空间的,因此用它们定义的变量都属于内存变量。

在汇编语言中,由于可以直接引用各个寄存器,而且各个寄存器的空间大小都是确定的,因此这些寄存器实际上就相当于C语言中的寄存器变量。

总之,在汇编语言中,数据一般只有空间大小和位置之分,而不管这个空间中存放什么样的数据,即无类型之分。

因此,在用汇编语言设计程序时,对程序中的数据有一个面向应用的自我理解问题!这是在教学时应特别予以关注的!

2数据的加工处理

在数据的输入输出方面,汇编语言和高级语言也有重要差别。

以面向标准输入输出设备的数据输入输出为例,高级语言提供的也是直接面向应用的相关语句、函数和过程,如C语言中的fprintf、printf、sprintf、vprintf、vfprintf、vsprintf、fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar、fgets、fputs、pus、gets等,这些函数基本上满足了面向应用的各种类型数据的输入输出[1]。

汇编语言提供的则基本上是面向字符的中断调用,即通过调用相关的中断服务程序来实现数据的输入输出,如MASM中的常用的DOS提供的21H类中断服务程序的1、2、8、9、10号功能等。

总之,高级语言提供的一般是直接面向应用的输入输出机制,而汇编语言提供的则一般是面向系统的输入输出机制。因此在汇编语言程序设计的教学中,如何利用面向系统的输入输出机制通过编程实现面向应用的输入输出功能是我们的又一个重点。

在数据的内部加工处理方面,高级语言和汇编语言都提供一序列的运算符。

在C语言中,这些运算符包括为数据传送提供的赋值运算符“=”和为数据运算提供的算术运算符“+、-、*、/、%、++、--”、关系运算符“>、>=、

在MASM中,这些运算符包括算术运算符:“+、-、*、/、MOD”,逻辑运算符:“AND、OR、NOT、XOR”,关系运算符:“EQ、NE、LT、GT、LE、GE”,移位运算符:SHR和SHL等[2]。

值得注意的是,除了形式上的差别外,高级语言的运算符和汇编语言的运算符在功能上也是有差别的:高级语言的运算符往往可以用在包括常量和变量的各种数据之间,而汇编语言的运算符则往往只能用在常量之间,对变量的加工处理则是依靠相应的指令来实现的。

3流程控制问题

为了实现流程控制,高级语言都提供有两类基本语句:分支控制语句和循环控制语句,如C语言和PASCAL语言中的if语句、switch语句、for语句、while语句、do-while语句、case语句、repeat语句以及比较特别的goto语句等[1,3]。

汇编语言则提供有相应的流程控制类指令,如MASM中的无条件转移指令(JMP)、条件转移指令(JA、JB、JAE、JBE、JNZ、JZ、JG、JL、JGE、JLE、JO、JNO、JS、JNS、JC、JNC等)、循环控制指令(LOOP、LOOPZ、LOOPNZ)等[2,4-6]。

在功能上,汇编语言的转移类指令既可以用于分支控制,也可以用于循环控制,而循环类指令则自然主要用于循环控制。它们的实现机制在高级语言中也有体现,如C语言中的goto语句。

从功能上看,C语言中的goto语句主要有两种用法:

(1)goto标号;

(2)if条件goto标号。

前一种用法实现的正好是汇编语言中无条件转移指令的功能,而后一种用法实现的则正好是汇编语言中条件转移指令和循环控制指令的功能。

在用汇编语言写分支控制程序时尤其要注意的是,由于只能一个分支一个分支的纵向展开,因此除最后书写的分支外,前面的分支结尾处一般都应该有一条无条件转移指令以跳过后面的分支,避免执行不该执行的分支。

例如:输入一个字符,判断其是否为数字‘9’,若是,则输出字符‘Y’;否则,输出字符‘N’。这是一个简单的二分支问题,其汇编语言程序段如下:

MOV AH,1

INT 21H

CMP AL,‘9’

JZ YES ;开始分支

MOV DL,‘N’ ;第一个分支

JMP EXIT ;避免执行第二个分支

YES:MOV DL,‘Y’ ;第二个分支

EXIT:MOV AH,2 ;汇合点

INT 21H

汇编语言除了提供上述转移控制类指令和循环控制类指令以实现分支程序设计和循环程序设计外,还提供有子程序和中断服务程序的调用(CALL、INT)指令和返回(RET、IRET)指令以及比较特别的重复前缀指令(REP、REPZ、REPNZ)等。

汇编语言的子程序概念和高级语言中的子程序概念、函数概念以及过程概念是对应的,而中断服务程序概念则一般是汇编语言独有的。

如果仅从程序执行机制上看,子程序、函数、过程、中断服务程序的地位是一样的,只不过是在不同的语言环境中采用了不同的称呼而已。

主程序和子程序、函数、过程、中断服务程序之间的流程控制都是通过调用与返回实现的,差别是:在高级语言中,主程序和子程序、函数、过程之间的流程控制是通过直接引用子程序、函数或过程的名字(加上适当的参数)来实现的[1,3];而在汇编语言中,主程序和子程序、中断服务程序之间的流程控制是通过前面提到的专门的控制指令(CALL、RET、INT、IRET)来实现的。

4子程序问题

前已述及,汇编语言的子程序结构相当于高级语言中的子程序、函数和过程。

在采用子程序结构时,一个重要的问题就是参数传递。主程序在通过调用子程序为自己解决某些问题时,通常需要为子程序提供一些相关的数据,子程序在内部对这些数据做相应的加工处理后应该将处理结果返回给主程序,这就是所谓的参数传递问题。主程序提供给子程序的数据通常叫做入口参数,而子程序返回给主程序的数据则通常叫做出口参数。

汇编语言子程序的参数传递和高级语言中子程序、函数或过程的参数传递机制从本质上看是一致的。

需要做参数传递时,通常有两种选择:一种方法是直接传递所需要的数据,另一种方法是传递所需数据的位置信息即内存地址。第一种方法即通常所说的值传递,第二种方法即通常所说的地址传递。需要注意的是,传地址的目的也是为了传数据。

从表象即实现形式上看,汇编语言子程序的参数传递和高级语言子程序的参数传递却有着不小的差别。

在高级语言中,函数在定义时往往就有参数说明,如C语言的函数定义格式如下:

类型 函数名(形式参数表)

{

函数体

}

高级语言的函数在调用时需要同时提供参数,一般格式是:函数名(实际参数表)。而在汇编语言中,子程序在定义时不需要有关参数的说明,在调用时自然也就无需同时提供参数。

如在MASM中,子程序的定义格式为:

子程序名 PROC

子程序体

子程序名 ENDP

子程序的调用格式则为:CALL子程序名

由此可见,高级语言中函数的参数传递是显式进行的,较之汇编语言子程序中隐式进行的的参数传递问题要易于实现和理解接受一些。因此,汇编语言中的子程序的参数传递问题就是教学中的一个重点内容。

在汇编语言中,为了实现子程序的参数传递,不管是采用值传递还是采用地址传递,都需要由程序设计者事先安排好一个第三方空间。值传递时将所需要的数据本身放在这个事先安排好的空间中,而地址传递时则将存放所需要的数据位置信息即内存地址放在这个事先安排好的空间里。

在安排用于参数传递的第三方空间时,既可以安排寄存器,也可以安排内存单元,还可以安排堆栈。因此具体的参数传递方式灵活多样,而且各有各的优势,在实际应用中通常综合以上各种做法以求达到最佳效果[2,4-6]。

5结语

限于篇幅,以上仅就程序设计的几个主要方面作了比较论述,而且主要是从实现机制的角度来谈,因此细节的东西基本上都省却了。事实上,在其他方面,汇编语言和高级语言也具有一定的可比性。

实践证明,通过比较教学,一方面可以利用学生已有的知识和体验帮助他们更好地学习汇编语言的相关知识,即把他们在高级语言程序设计中获得的有关程序设计的基本思想方法和规律迁移到汇编语言程序设计的学习中来,进行差异化的学习,极大地提高学习效率;另一方面,可以让同学们通过比较,把以前在学习高级语言程序设计时遗留的一些问题甚至没有意识到的问题搞清楚,起到融会贯通、触类旁通的作用。

总之,通过比较教学,不仅可以提高学生的学习效果和效率,而且新旧知识可以相得益彰。

参考文献:

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

[2] 曹加恒,苏光奎,许先斌,等. 新一代汇编语言程序设计[M]. 北京:高等教育出版社,2003.

[3] 郑启华. PASCAL程序设计[M]. 2版. 北京:清华大学出版社,1996.

[4] (美)欧文. Intel汇编语言程序设计[M]. 5版. 温玉杰,梅广宇,罗云彬,译. 北京:电子工业出版社,2007.

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

[6] 钱晓捷. 新版汇编语言程序设计[M]. 北京:电子工业出版社,2006.

The Comparative Teaching Method of “Assemly Language”

XIONG Xiao-bing

篇5

汇编语言是我们理解整个计算机系统的最佳起点。人们往往认为汇编语言的应用范围很小,因而忽视了它的重要性。其实汇编语言对学习计算机科学与技术的人是非常重要的。所有程序,不论用何种语言进行编制,只有转成机器指令,运用机器的逻辑功能,功能才得以实现。

汇编语言直接a描述机器指令,比机器指令更容易记忆和理解。通过学习和使用汇编语言,我们才能够感知、体会、理解机器的逻辑功能,这样不仅可以为理解各种软件系统的原理打下技术理论基础,而且可以为掌握硬件系统的原理打下实践应用基础。

2.教学中存在的问题

当前高级语言的发展非常迅速,各种开发工具层出不穷,其功能也越来越强大。高级语言进行程序设计的可操作性越来越强,许多非计算机专业人员在不了解计算机的结构、没掌握计算机相关的专业理论和各种计算机语言具体编程等情况下,同样能很好地使用高级语言。所以,高级语言的发展弱化了汇编语言的地位,这使部分高职学生觉得汇编语言已不重要了,学不好没有多大的关系。所以,思想认识上的不重视,导致了部分学生学不好这门课程。

《汇编语言程序设计》的学习需要一定的英语知识。高职学生的英语基础普遍差,据有关职业教育方面的统计资料显示:在高职高专院校中60%的学生英语基础差;30%的学生有一定的基础,但对英语学习不感兴趣;10%的学生英语基础较好。实际上,普通高职高专院校学生英语的基础情况比统计的更严峻。这就为他们学习这一课程带来了一定的障碍。

针对这一系列的情况,笔者根据教学经验,总结了在高职院校教《汇编语言程序设计》的一些心得,希望对大家有所帮助。

3.注重课堂教学

3.1优化教学内容。

本课程涉及内容较多,教师应在讲课之前先对课本内容进行优化。并不是课本上所罗列的内容都需要讲,教师要有选择性讲解:对学生有用的而课本上讲得不全面的要补充讲解,而对学生用处不大的可以不讲或一带而过,争取做到“少而精”。

3.2让学生充分认识到该课程的重要性,提高学生的学习的兴趣。

“兴趣是最好的老师”,如何让学生对本课程感兴趣?笔者认为关键是把握好开学第一堂课。在学生刚接触本课程时,教师不要急于介绍理论知识,而是要强调该课程的实际应用,通过介绍汇编语言的特点和汇编语言在一些典型系统开发中的具体应用来激发学生的学习兴趣。

目前对单片机的灵活编程已经应用到各个领域,无论是尖端科技,如军事、通信、能源、机器人、交通、IT,还是现代工业、农业,如仪器仪表、汽车电子系统、家用电器、玩具、个人信息终端等诸多领域,都离不开单片机。而单片机的编程里大部分都使用了汇编语言,汇编语言的易用和灵活的特性,使得汇编语言将继续占有独特的地位,其适用的领域要求执行效率高、反应快,如操作系统内核、工业控制、实时系统、家用电器的计算机控制功能等。在讲述其重要性和应用领域时,教师应结合一些身边的、具体的实例,如电梯升降的控制程序和广场的大型喷泉的控制程序均是由汇编语言编写的,学生的兴趣会被这些实例极大地调动起来。

3.3注重实践环节。

在计算机相关专业的教学领域,实验教学是培养学生学习能力、实践能力、思考能力、创新能力的重要环节和有效途径。学生在学习汇编语言这门课程中产生的困难,来自于他们对所学知识缺乏必要的感性认识,没有得到充分的实践。

计算机在很多方面不同于其他学科,尤其是与硬件有密切关系的课程。由于汇编语言课程与硬件操作有着密切关系,因此实验环节在整个教学活动中占据了举足轻重的地位。汇编语言的实验对培养学生的动手能力和学习兴趣,提高学生阅读、编辑和调试程序的能力,有着不可替代的重要作用。学生通过实验能深入了解CPU、存储器、接口及外部设备的工作特性,对数据在计算机中的表达和传送产生感性认识,在实验中学生能对汇编语言有更好的理解、掌握,从感性认识上升到理论认识。

4.改进教学方法

4.1对照教学法。

在讲汇编语言时,教师可以和其它语言对照讲解,比如C语言。C语言作为一门基础和先驱课程,在此时起到了很好的借鉴作用,由于大部分学生对C语言掌握得较好,基于语言的相通性,在汇编语言的相关教学中教师若以C语言作为对照展开讲解,将会收到很好的教学效果,也能增进各科之间的知识和方法上的联系。下面笔者结合教学实践,列举一些应用对照教学法的实例。

MOV指令是8088指令系统中首要讲解的一个指令,也是汇编程序设计中使用最频繁的指令,教师应强调对操作数的要求。有几点我们可以用C语言来对比解释:

传送过程。其传送过程类似于C语言中的赋值,只是在这里是给寄存器或存储单元赋值,其实C语言中的变量名本身就是一个符号地址,汇编程度的赋值最终应对应到存储器的某些存储单元。

两操作数的类型匹配问题。该内容在C语言中已作了强调,汇编中类型匹配问题也是一个重点。与C语言类似,汇编语言操作数的位数要保持一致,只是在8088中常用的类型为字节和字。

强制类型转换。C语言中用到了该知识,学生也已掌握,那么汇编语言中又如何实现呢?很自然地我们就可以引出“BYTE PTR”和“WORD PTR”这两个操作符。

4.2互动式和启发式教学。

高职学生的课堂气氛一般比较活跃,他们非常喜欢教师引导、提问,喜欢回答问题。所以教师应利用这一特点在上课过程中设计一些有意义的提问,利用提问将要讲的知识点引出来,避免平铺直叙地讲解知识点,这样让学生带着问题来学习知识点,会起到事半功倍的作用。例如,在讲解编程部分的循环结构时,笔者先举了这样一个例子:求1+2+3+……+100的和。学生立刻就说出结果为5050。笔者接着问:加到1000呢?这样很多学生饶有兴趣地听讲。可见,教师所选的题目要由浅入深,要能激发学生的学习兴趣,要想办法让学生变被动学习为主动学习。

课堂练习也是互动式教学一个非常重要的方法。在讲解完某一个例题后,教师可以出一道类似的习题让学生在课上完成,请学生上讲台在黑板上写出解题步骤并进行讲解。例如刚学习了用循环的方法求1+2+3+……+100的和,教师可以让学生练习一道2+4+6+……+100的和。这样可以检验学生的掌握情况,找到学生理解错误的地方,从而对症下药。就学生理解错误的知识点再进行讲解,这样除了可以让学生当堂能够掌握所学的知识点,还能让其做到举一反三。

4.3实例教学法。

由于本课程是一门比较抽象的课程,因此教师在课堂讲授中应该尽量用一些通俗易懂的例子进行教学。

例如在讲解汇编中存储器地址分段的概念时,为了便于学生理解,教师可以借助平时生活的居民楼,进行举例。一个小区有多个居民楼,如一号楼、二号楼等,每个楼里有多个室,如101室、102室等。我们可将楼号比作段基值,每个楼里的房间比作偏移地址,很显然一号楼的101和二号楼的101是不一样的。这个例子可以使学生易于理解分段的概念。

再如在讲解中断的概念时有很多例子可举。把教师上课比作CPU正在处理的事,门外有学生打报告,教师就暂停正在处理的事情让学生进来,等学生进来后接着讲课。这样学生很容易就能掌握中断的概念。

教师可以将难理解的知识点与日常生活中的小事相联系,这样既可以使学生学到扎实的理论知识,又不会使学生学得吃力。

5.充分发挥多媒体教学的作用

汇编语言指令多、变化多,相对其他可编程语言来说源程序长而复杂,一个简单的问题解决至少要几十行,多则上百行,教师讲解例题时如果板书,就要花去大部分时间。如何解决这个问题呢?多媒体能够提高教学效果,扩大教学范围,延伸教师的教育功能。教师应在课前准备讲解的程序,上课时直接操作计算机,一边讲解指令的格式及算法,一边将指令使用前后的情况、程序的效果等通过投影仪展示给学生。计算机教学还可借助网上丰富的资源、图文并茂的生动界面、多姿多彩的影像资料,这些可使教学具有感受性、新颖性、可组合性、可扩充性,使学生的思维更加具有发散性,更容易培养学生的创新思维。

6.结语

笔者对汇编语言课程的教学内容和教学方法进行了探讨,这些教学方法促进了课程的建设与发展,为学生学好后续课程打下了一个良好的基础。摸索一条适合高职学生需要的、有效的教学方法,使高职学生能更好地、更快地掌握汇编语言程序设计,培养学生的分析问题、解决问题和实际操作能力,我们在汇编语言课程教学中需要继续探索研究的目标。

篇6

Teaching Reform and Practice in the Course of Assembly Language//Tao Xueli1, Guo Fengying2

Abstract To improve the teaching effectiveness of the assembly language programming course, and to make student to better understand and master the course contents, Base on years of teaching experience and teaching activities ,the author summarizes and discusses the teaching methods and means such as contrast teaching, drawing for simplifying difficulties and creating situation used in the teaching.

Key words assembly language; contrast teaching; blackboard writing drawing; creating situation

Author’s address

1 College of Computer and Information Technology, Henna Normal University, Xinxiang, Henan, China 453007

2 Department of Computer Information Center, Beijing University of Chinese Medicine, Beijing, China 100029

汇编语言程序设计是高校计算机专业的专业基础课程之一,它是计算机组成原理、计算体系结构等计算机硬件核心系列课程的必要先修课。汇编语言指令可以直接有效地控制计算机硬件,产生高效的代码,在很多情况下是高级语言无可替代的。但是汇编语言指令较多,编程和调试过程复杂,实用性和可见性差,导致学生没有兴趣,因而教学效果不理想。如何改善教学效果,提高教学质量,是每一位相关专业任课教师应该研究的问题。笔者根据多年来从事汇编语言程序设计课程教学的实践,谈一下自己的经验和体会。

1 采用合适的教学方法

教学方法是为完成教学任务、实现教学目标服务的,合理的教学方法可以使教学的基本要素在教学活动中充分发挥各自作用和功能,从而达到预期的教学目标和教学效果。

1.1 对比教学法[1]

汇编语言程序设计一般开设在大学二年级,在学习了一门高级语言(如C语言)程序设计课程之后。因此,在教学过程中,可以充分运用对比教学法,将汇编语言与高级语言相通的知识点进行对比,利用学生熟悉的知识,帮助学生理解新的知识,可以达到事半功倍的教学效果。

1.2 板书画图,直观演示,简化难点

在汇编语言课程中,操作数的寻址方式是学生学习指令和后续内容的基础,是全书的重点也是难点。在介绍操作数有效地址的4种组成部分(位移量、基址、变址、比例因子[2])时,可以通过一个图示举例进行讲解,降低难度。

假设数据段有一个字节数组,要用指令访问数组中的任意一个元素。数据定义如下:

X DB ‘ABCDEFJHIJKLMNOPQRSTUVWXYZ’

此处在黑板上画图,可以直观地演示数据在存储器存储的情况以及操作数的寻址方式(图1)。X是数组在存储器中的首地址,是一个符号地址。从图1中可以看出,通过数组首地址和某个元素相对于第一个元素的位移量,就可以访问到这个元素。

1)例如,在8086/8088处理器下,要将字符“F”存入AL寄存器,可以用下面的几种方式实现。

①MOV AL, [X+5]

②通常情况下,可以将数组的首地址存入一个基址寄存器(BX或者BP),指令为:

MOV AL , [BX+5]

③可以将位移量用一个变址寄存器(SI或DI)表示,通过修改SI/DI的值,便可以访问数组中其他的字符,指令为:

MOV AL , [BX+SI]]

2)带比例因子的寻址方式是386及其后继机型引入的操作数寻址方式,适合用来寻址多字节数据数组中的元素。此时,可以将图1所示的数据看成3个双字(4字节)数组(图2)给学生讲解。如要访问第三个双字,则可采用指令:

MOV AL, [BX+SI*4]

这样只需要知道访问第几个元素,修改SI的值即可,不需要计算被访问元素在数组中的位移量,简化了思考和计算。特别是在4字节数组或者10字节数组中,比例因子显得更为有用,使用起来更为方便。

通过此处的讲解,不仅降低学生理解基本概念的难度,而且联系到汇编语言中变量的定义及存储空间的分配,帮助学生熟悉指令与硬件知识的结合,建立先后知识点间的关联。

1.3 通过创设情景,帮助学生理解指令功能

在介绍一些不容易理解的指令时,可以通过创设简单的应用情景介绍指令。例如,可以用一个给字符串加密的应用情景,介绍XLAT指令的功能及应用。

假设数字加密规则为:0~9,分别对应a~j,即如果从键盘输入“3”,则显示出“d”。数据定义如下:

x db ‘abcdefghij’

板书画出数据在存储器中的存放情况(图3)。从键盘输入的数字字符保存在AL寄存器中,实现加密的指令序列为:

lea bx, x

sub al, 30h

xlat

如果执行指令之前,AL的内容为字符“3”,则指令序列执行过后,AL的内容就为“d”。

课堂上,可以将这个简单应用编写成一个具有输入和输出功能的完整的程序,给学生演示。这样既可以讲解指令的应用,也可以让学生熟悉汇编语言源程序的格式及开发过程;也可以将这个程序设计成一个功能可以逐步扩充的系统案例[3-4],通过不断扩展程序的功能,循序渐进介绍程序设计,这里不再详述。

2 强化实验教学

“实践出真知”,上机实验是教学的一个重要环节,也是学习和掌握汇编语言程序设计的最有效方法。针对学生学习的进度和知识基础,合理安排实验内容。为了督促学生上机实验,增加实验成绩在期末考核中的比例。平时实验课上,通过向学生提问题,考查学生掌握知识的情况,这是对教学的一个反馈,可以作为今后提高教学质量、改善教学效果的参考。

3 总结

本文是对笔者多年教学经验的总结,教学实践证明,这些方法与手段在一定程度上降低了学习的难度,提高了学生对本课程学习的积极性,改善了教学效果。笔者深知教学相长的道理,有些方法并不是一劳永逸的,要因材施教。因此,要想取得更好的教学效果,还需要相关专业教师的不断努力,进行更多的探索与交流。

参考文献

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

篇7

中图分类号:G642

文献标识码:B

1引言

学生普遍反映汇编语言难于记忆和理解,甚至编了一句顺口溜“汇编语言不会编”。因此怎样提高本课程的教学质量和教学效果是任课教师值得深思的问题。首先教师要告诉学生汇编语言的重要意义,从而激发学生学习这门课的热情。另外在教学中还应注意以下几个方面。

2加强上机实验

在本专业旧版教学计划中,汇编语言与计算机组成原理是一门课程,关于汇编语言的实验是20学时。而在新版教学计划中,汇编语言单独成为一门课程,实验压缩到10学时。实验学时缩短了,但是一些验证性实验又不得不做,因此我们将一些基本的验证性实验放到课外作业中,例如关于DEBUG程序的使用,可在进行汇编语言程序设计之前由学生在课下完成,让学生用DEBUG查看数和字符在CPU的寄存器和存储器中的存放方式、熟悉各类指令的功能和格式等,使学生加深理解所学的内容,又不占用课上的实验学时,还为后面进行汇编语言程序设计打下良好的基础,可谓一举多得。

3启发式教学

问是开启智慧之战的钥匙,是发明创造的萌芽,是启发式教学成功的关键。在教学过程中,教师要精心设计富有启发性的问题。例如存储器中数据的存储方式是一个重点内容,但是学生们难于理解同一个单元地址在不同的情况下为什么单元内容不一样。假设一个存储器的内容如图1所示。

若机器字长为16位,采用低字节存入低地址,高字节存入高地址的存放方式。要求学生说出30000H字节单元的内容是多少?大多数学生都会回答是01H。则教师再提问30000H字单元的内容是多少?提示学生因为机器字长16位,而每个单元地址中存放的是一个字节――8位,则存放16位数据需要占用相继的2个字节,有的学生回答0102H,有的学生回答0201H。再进一步提示字单元的地址由最低字节的地址指定,则大多数学生都会回答0201H。然后要求学生思考一下30000H双字单元的内容是什么?30000H三字单元的内容是什么?从而引出以下的规律:

例如要访问内存单元30000H中的内容,若是访问n*8位的数据,则从30000H开始向高地址方向数n个地址即(30000+(n-1))H,内容从(30000+(n-1))H中的数据开始写,向低地址方向写直到30000H中的内容。

这样也将学生的好奇心调动起来,激发学生的学习兴趣。

4案例教学

由于本课程基本概念多、专业术语多,因此教师应该尽量用一些通俗易懂、贴近学生生活的例子进行教学。

寻址方式是重点也是难点,在讲解时可通过举例让学生易于理解。例如某班的班长负责发信,有个学生甲家里寄来了一个包裹,若是班长直接将包裹发给学生甲,这就是“立即寻址”的概念;若是学生甲知道包裹在班长处,去班长处取包裹,这就是“直接寻址”的概念;若学生甲不知道包裹在哪里,但是他知道班长有包裹单,而拿着包裹单就可以到邮局取包裹,这就是“间接寻址”的含义。通过这个例子,使学生易于理解寻址方式的原理。

5寓教于乐

为了便于学生掌握抽象的内容,可以在课堂上做一些小游戏,通过游戏学生在玩乐中轻松掌握知识。例如求出某条指令源操作数的物理地址,假设寻址方式是存储器寻址方式,则这个问题要涉及到以下4个步骤:

(1) 得出该指令的源操作数的寻址方式;

(2) 得出源操作数的有效地址,该地址是逻辑地址;

(3) 判断源操作数所在的逻辑段;

(4) 将逻辑地址转化为物理地址。

在这4个步骤中,前2步学生基本上都能算对,难在后2步。后2步的过程如下:

(1) 根据源操作数,判断所在的逻辑段,得到16位段寄存器中的段基值;

(2) 将16位的段基值左移4位,即段基值后面补4个0,得到20位的段基址;

(3)20位的段基址与16位的逻辑地址相加,得到20位的物理地址。

对于这样的问题,课上可以通过小游戏帮助学生理解逻辑地址和物理地址之间的转换。我在课上设计了这样的一个游戏:假设学生宿舍号由6位组成,设为a1a2a3a4a5a6。a1a2表示宿舍楼号,a3a4表示宿舍所在的层数,a5a6表示房间号。若一个学生住在5号楼5层5房间,则该生的宿舍号就可以表示成050505。

请4个学生到讲台上,分别表示4个宿舍楼:1号、2号、3号、4号共4个楼,其中1号楼住的是园林专业、信息专业、计算机专业、城规专业的男生,2号楼住的是地信专业、历史专业、法律专业、政治专业的男生。3号楼住的园林专业、信息专业、计算机专业、城规专业的女生,4号楼住的是地信专业、历史专业、法律专业、政治专业的女生。另外再请4个学生到讲台上来,告诉他们专业、性别、宿舍所在的层数和房间号,要求他们写出学生的宿舍号。在这个游戏中,学生的宿舍号对应于物理地址,宿舍所在的层数和房间号对应于逻辑地址,专业对应于逻辑段。假设计算机专业的某个女生,住在10层30号,要求写出该女生的宿舍号,则可以按照以下步骤写出宿舍号:

(1) 确定宿舍楼:因为是计算机专业的女生,则她住在3号楼,记为03;

(2) 确定宿舍号的高两位:将楼号左移4位,记为030000;

(3) 确定宿舍号的低4位:将层数和房间号拼接在一起,记为1030;

(4) 确定宿舍号:将(2)、(3)步得出的内容相加,即030000+1030=031030,即是该生的宿舍号。

在以上步骤中,第1步与“判断源操作数所在的逻辑段”相对应,第2~4步与“将逻辑地址转化为物理地址”相对应,学生在这个游戏中轻松地掌握了求出某条指令源操作数的物理地址后2步的方法。

6改革考核方式

汇编语言的指令繁多,每种指令的用法又多种多样。例如MOV指令,它有多种传送方向,如图2所示,学生掌握起来非常困难。而汇编语言程序设计课程的目的是掌握设计程序的思路,学会用计算机语言编写程序,重点在于“程序设计”,而不是语法规则。因此,在考试中考虑采用开卷考试,使学生在学习时将重点放在解题思路上,而不去死记硬背各种指令的不同用法。如果条件允许的话,可以采用笔试与上机考试相结合的方式。闭卷考试的侧重点在于填空题、选择题、判断题等,主要是一些概念题,而有关程序设计的内容放在上机考试中。在上机考试时,要求学生在规定的时间内将程序编写出来并调试通过。

篇8

中图分类号:G642

文献标识码:B

1教材系列化建设

我们以CCC2002为依据,参考IEEE-CS&ACM 制定的计算机课程指南,阅读大量的国内外相关优秀教材,结合课程组科研实践成果,按照系列化建设的思路,先后编写完成了《Intel 80x86/Pentium汇编语言程序设计》、《汇编语言程序设计(从DOS到Windows)》、《Windows汇编语言程序设计教程》、《Windows汇编语言程序设计实验指导》等4本教材。其中1本被评为2006年北京市高等教育精品教材,1本被列为2007年“普通高等教育“十一五”国家级教材规划”,2本作为2007年北京高等教育精品教材建设项目。通过编写、使用这些教材,为教学内容改革奠定了坚实的基础。

2教学内容及教学方法改革

在教学内容和方法上加强与“微机原理与接口技术”、“计算机组织与结构”、“操作系统”等课程间的联系,有利于各门课程之间的融会贯通。教学内容体现课程的时代性和先进性,以32位汇编语言及Windows编程环境的内容为主,从16位实模式转换到32位保护模式,结合丰富的应用性实例,使所学知识与目前主流的应用环境相结合,为学生的创新能力奠定基础。

为实现教学模式从“教学型”向“研究型”的转变,需要充分研究学生的认知过程,掌握认知规律。根据“汇编语言程序设计”课程本身的理论抽象性和鲜明应用性,课程组以建构主义理论为基础,探索并改进教学方法。在教学设计中体现以学生为中心、以教师为主导的思想,采用重点难点精讲、对比教学、形象教学、重视实验等方法,用多媒体手段、典型实例来展现抽象的编程概念。采用现代化网络教育技术建立了课程网站及网络教室,加强师生互动,拓展了交流空间。

例如,在多门专业课中均涉及到“中断”概念,在汇编语言程序设计课程中以编程实例将它具体化,使学生对抽象的理论概念有了直接的认识,从软件和硬件两个角度加深了对中断机制底层的深层次理解,提高了学习兴趣。

又如学生难于理解间接寻址方式,但学生在学习本课程时已有了C语言知识,在教学中就把间接寻址方式与C语言的指针类比,通过与先前知识的衔接,经过对比学习,使学生建构、衍生出更深层次的信息,很容易对新知识消化。对于较难理解的程序转移地址的形成,采用动画方式帮助学生理解,并通过CASE结构程序设计实践巩固。把宏指令与过程及高级语言的函数对比,学生很快掌握了其设计方法,他们通过主动对知识的处理和转化,又总结出“宏实际更像高级语言的预定义,用到它的地方都会有它一份拷贝,所以宏可能让你的真正代码量剧增”。

通过精心组织教学,选择与实际应用密切结合的教学案例,在课堂上和网络支撑平台上增加总结和讨论环节,鼓励学生主动反思,从而调整个体的认知,帮助学生实现在原有认知基础上新知识的整合,在融合了多门课程知识的基础上,形成系统的知识观念,提高综合应用和创新能力。

3构建先进的实验平台

在微机系统的教学和实验内容上,Windows操作系统及32位保护模式已成为汇编语言的发展趋势。然而,目前Windows环境下还没有一种专门用于汇编语言的主流开发工具,而底层汇编语言编程所面向的硬件型号和接口又存在巨大差异。为此,课程组开展了改革汇编语言程序设计实验环境的探索,编写了《Windows汇编语言程序设计实验指导》教材,构建了新型的实验环境,采用Microsoft Visual C/C++集成开发工具来编写、调试汇编程序(见下图),使汇编程序的编辑、编译、连接、调试等过程均与C/C++程序一致,减轻了学生学习负担,提高了C/C++与汇编混合语言编程能力。应用虚拟机软件技术,使汇编语言编程面向虚拟的、统一的硬件及其接口,保证了实验环境的统一性,提高了实验效率。

4开设体现前沿性、先进性的汇编语言实验

汇编语言程序设计是一门实践性很强的课程。课程组跟踪计算机软硬件技术的最新发展,对国内外的相关课程教学及实践进行了深入的调研,结合在科研实践中取得的部分成果,开设出一系列具有鲜明应用特色的验证型、综合型和创新型的层次实验,并写进《Windows汇编语言程序设计实验指导》教材中,进一步巩固理论教学内容。

图 VC集成环境下的汇编语言调试

验证型实验以掌握单元知识为目标,着重训练基础编程能力,如数据块操作、数据显示、字符串排序、素数判断、有序数组合并等。

综合型以融合本课程知识为主,如多模块程序设计、中断程序设计、线程同步、文件管理等。

创新型以设计具有应用背景的实验为主,培养学生对计算机知识体系的融会贯通及创新能力。如数据库管理系统设计、全屏幕编辑器设计、缓冲区溢出实验、读取硬盘序列号、硬盘DMA等。

基于个体的差异性,学生可以按照自己的能力和兴趣选做部分或全部实验,充分发挥了学生的主观能动性。这种强调自主学习的教学过程和方法,有效地促进了学生自我认知的发展和新知建构。通过实践环节,提高了学生的程序设计能力,为学习后续专业课程,设计硬件驱动、性能优化、代码对抗等底层系统级软件打下坚实基础,培养了学生的创新能力。

参考文献

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

篇9

文章编号:1672-5913 (2007) 24-0023-03

1“汇编语言程序设计”课程教学现状的分析

汇编语言是一门面向处理器的低级语言。该课程一方面配合“计算机组成原理”、“微机原理及接口技术”和“嵌入式系统”等课程,为自动控制等与硬件相关的应用领域提供基础知识;另一方面作为“操作系统”及“编译原理”等课程的程序设计基础,从软件角度理解计算机的工作原理,加强学生的高级语言编程能力。

目前在大部分院校该课程的教学模式依然沿用传统的教学方法。在课程讲授环节,以主讲教师授课作为主体,辅以课后作业、定期答疑;在实践环节,根据课程的进度,配置相应的上机实验。从多年的教学实践的结果来看,这种传统的教学方式基本可以达到预期的教学目标。通过本课程的学习,学生能够基本掌握Intel 80x86系列处理器的指令系统和汇编语言,能够运用学到的汇编语言知识开发一些简单的应用程序。但随着教学体制改革的不断深化,信息化、网络化教学技术的不断成熟,特别是学生自主化学习的理念不断加深,引发了我们对当前教学模式以及考试方法的思考。

“汇编语言程序设计”课程是一门理论性和实践性都很强的计算机专业的核心课程。本课程的学习要求学生对计算机的组织结构,特别是计算机的指令系统有一定的了解;该课程所教授的知识,不是单纯的理论知识,必须要求学生进行上机实践操作,这样才能更加熟练地掌握这门语言。因此,传统的教学方法也不可回避地暴露出与这门课程的特点所不相适应的弊端,归纳起来有如下几点:

(1) 由于汇编语言程序设计较C语言等高级语言程序设计更加烦琐,并且与硬件关系密切,因此使得学生感到学习这门课程有一定的难度。

(2) 课时的紧迫与学生课业负担较重产生矛盾,使得学生学习不够扎实,影响学生的学习效果。

(3) 答疑时间太为固定集中,有时可能与学生的时间发生冲突。

(4) 学生自由支配的时间过少,教学计划与学生实际的学习进度不相一致。

当然以上几点也可能是在许多其他课程教学过程中所存在的通病,但在“汇编语言程序设计”这样一门理论性和实践性都很强的课程中就显得尤为突出。这也就迫使我们朝着学生自主化学习的方向不断探索、不断前进。

2学生自主化学习的研究

顾名思义,学生自主化学习就是把教学的主动性从老师那里拿回到学生手中。具体地讲就是改变传统的教师主讲的教学模式,将学生被动的听课模式转变为学生自主地学习。这样可以给学生充裕的时间自由支配自己的学习,提高学生的主动实践、积极思考的能力。从而提高学生的学习兴趣,使学生学有所得,学有所获。

必须指出的是,这种自主化学习的方式在教育界曾多次提出,但收效极佳的还未见到。分析其原因主要有以下两点:

(1) 自主化学习留于形式,最终导致自主化学习变为了不学习

目前,有些课程推行所谓的学生自主化学习的教学模式,其实是把教学的一切任务都推给了学生,老师也不闻不问,最后象征性的考试了事。这样的教学不但起不到提高学生自主化学习、主动实践、积极思考问题和解决问题的能力,反而在学生中滋生了浮躁、涣散的学风。这种做法是极不可取的。

(2) 自主化学习缺乏必要的技术支持,严重影响了教学的效果

如果教学过程缺乏必要的技术支持,自主化学习的学习模式也是很难推行的。其相应的技术支持应包括在学校构建一个用于学生进行自主学习的在线学习平台,建立起一套完整的课程教学计划、课程进度安排、课程学习目标、课后作业布置以及在线答疑等系统。这样才能为学生的自主化学习提供物质上的保障。

北京工业大学在学生自主化学习方面也有过积极的尝试。在“计算机组成原理”课程的教学实践中,利用先进的互联网技术开发了校园网学生在线学习子系统。利用该系统可以在正常的教学过程中作为学生在线学习的辅助指导,为提高学生主动学习的积极性及师生之间的相互交流提供了有力的支持。因此,在“汇编语言程序设计”课程的教学过程中,我们也可以借鉴“计算机组成原理”课程的教学经验,并不断完善,最终实现全面的学生自主化学习的过程。

3应用校园网在线学习及考试系统实现学生自主化学习

教学工作的信息化、网络化、无纸化长期以来一直是我们研究的对象和目标。也是实现学生自主化学习的物质基础。它不但可以提高学生主动思考、积极探索的能力,而且在一定程度上可以提高教学效率,激发学生的学习潜能。

北京工业大学正在研究、开发并完善“校园网在线学习及考试系统”。利用该系统,可以很好地实现教师教学和学生学习的信息化及网络化。此系统是实现学生自主化学习的物质基础和实践平台。虽然该系统尚处于试验阶段,功能尚不完善,但它对于最终实现学生自主化学习是一个积极的探索和有益的尝试。

校园网在线学习及考试系统的总体结构如图1所示。该系统的实现可以把课程的学习、课后的作业练习、疑难问题的答疑及最后的考试等教与学的工作环节都放到互联网上完成。

图1 校园网在线学习及考试系统总体结构图

从图1可以看出校园网在线学习及考试系统采用基于网络架构的B/S模型建立。服务前台共分为四个功能模块,每个功能模块提供一种特殊的服务。

(1) 在线课程学习模块:利用该模块教师可以在每个学期的开始,为学生制定一份详细的学习计划,学生根据计划的安排和本课程的教学要求结合自身的实际情况进行课程的学习。教师可以按阶段把当前应该掌握的知识以及应该完成的学习进度以消息的方式提示给学生,以便学生自己掌握好学习的进度。这种模式可以把只有教师教、学生被动学的教学模式,转变为由教师制定学习计划、让学生自己根据实际情况进行在线自主学习的教学模式。这样每个学生能够根据自己的时间安排,自由选择、合理安排“上课时间”。这种教学方式可以有效地提高学生的自主化学习及独立思考问题的能力,在自己的主动探索中不断发现问题、提出问题并且解决问题。

(2) 在线作业模块:本模块旨在通过网络平台给学生布置课后作业及上机实验,学生可以通过该模块在线提交作业及上机实验结果,教师可以及时检查、了解学生的学习状况,以督促学生进行主动学习。

(3) 在线答疑模块:一个合格的在线学习系统必须包含在线答疑模块。在线答疑模块为教师和学生、同学和同学之间提供了提问、交流、切磋的平台。在线答疑平台是一个论坛形式的公共平台,它的功能主要是由学生在线向教师提出课程学习中的疑难问题,由教师定期予以回复。但在实践中我们发现,这个平台的功能远大于此。学生们不但在在线答疑平台上提出了许多很好的问题,而且同学之间也可以进行丰富的交流。有时,不用等到教师给出问题的答案,同学之间就已经把问题解决了。因此,这个平台真正成为了教师、同学之间进行交流、传授知识、切磋技艺及发表心得的纽带。

(4) 在线考试模块:在课程学习结束后,可以通过在线考试模块来考察学生对相应课程的学习掌握情况。通过Internet/Intranet实现网上考试,是现代教育技术的一个具体实现,具有很重要的现实意义。通过网络进行在线考试的模式是对传统的考场考试方式的延伸,它可以利用网络的无限广阔空间,随时随地对学生进行考试。该模块的实现,不仅可以实现自动化组卷、阅卷及考务工作的全自动化管理,为实现考试的客观性和公正性、实现考教分离及进行大规模的考试提供相应的支持,而且可以有效地利用校园网的软硬件资源,使其发挥最大的效力,更好地为学校的教学、科研、管理服务,也为检查学生进行自主化学习的效果提供了一定的技术支持。

4结论

本文通过对学生进行自主化学习方法的探讨和研究,提出了关于“汇编语言程序设计”课程实现以教师为主导、学生进行自主化学习教学模式的方案。详细介绍了北京工业大学校园网在线学习及考试系统的基本构架、部分已实现的功能、系统的整体构想以及该系统对学生进行自主化学习的具体帮助及技术上的支持。

通过对汇编语言程序设计课程自主化学习教学实践的研究,可以看到为了更好地实现学生的自主化学习,教师不仅需要研究各种教学方法及教学内容,而且需要利用先进的现代化网络技术,进一步完善教学及实践方式,这样才能更好地指导、协助学生进行自主化学习。自主化学习教学方案的实施,不仅能够培养学生自主学习、独立思考问题、解决问题的能力,而且能够极大地提高学生的实践能力及创新精神。我们期望汇编语言程序设计课程的自主化学习的教学改革与实践,能够为其他课程的教学改革提供一些积极的探讨和有益的经验。

参考文献

[1] 梁峰. 多媒体校园网系统探讨[J]. 教育技术理论与实践,2005,(4).

[2] 易小琳等. 基于EDA平台的计算机系统硬件课程虚拟化实践的研究[J]. 中国大学教学,2005,(7).

[3] 易小琳等. 网上计算机系统虚拟实验室的研究[J]. 计算机工程,2002,(11).

[4] 中国计算机科学与技术学科教程[M]. 北京:清华大学出版社,2002.

作者简介

易小琳(1959-),女,高级工程师、计算机系统结构教研组主讲教授,硕导,目前研究方向为计算机系统结构及嵌入式系统。

鲁鹏程(1976-),男,讲师,计算机系统结构教研组教师,博士,目前研究方向为计算机系统结构及嵌入式系统。

周巍(1982-),男,研究生助教,目前研究方向为计算机系统结构及嵌入式系统。

杨峰(1984-),男,研究生助教,目前研究方向为计算机系统结构及嵌入式系统。

联系方式

北京工业大学计算机学院,北京朝阳区平乐园100号,100022,易小琳

篇10

汇编语言是一种面向机器的编程语言,运算速度快,在使用汇编语言的过程可以通过提高存储器运行速度来提升其存储空间,另外,汇编语言其控制作用力应用在硬件上也有着无法取代的优点。同时汇编语言也有着程度较高却复杂和移植性差等缺点,但是在实际的操作中,硬件还有精确定的过程中必须要用到汇编语言。C语言作为一种高级语言,其表达性以及灵活性还有开发性均较高的优势,因此为了更好的发挥汇编语言和C语言在开发软件中各自的优点,将两者有机的结合起来,取长补短混合编程更好的达到设计的要求,高质量的完成设计任务。

1 C语言程序设计技术方法

(1)可以在C语言程序之中确定汇编程序的常、变量。

(2)可以在C语言编程当中适当的增加语句编辑,保证实现C语言无法控制硬件的缺陷。

(3)然而使用C语言程序时可以通过内部函数的使用加入汇编语言中的相应语句。

2 汇编程序设计技术及方法

在C语言编程当中,可以将汇编语言的代码直接的编写进去,并且融入汇编语言的过程当中可以不使用分号,详细的语法是:

asm

若想要将一组汇编语句融入到C语言中,必须要将语句括到括号{}当中。

asm {

mov ax,dataA

xchg ax,dataB

mov dataA,ax

}

一般想要在C语言程序当中编入汇编语言,有四种类型,分别是一般指令、跳转指令、串联指令和局部定义指令。

汇编语言子程序应用在C语言中,一般情况下汇编语言的子程序其基本格式是:

MYCODE SEGMENT PARA PUBLIC‘CODE

PUBLIC_函数名;

公共符号说明DGROUP GROUP MYDATA,MYBBS

MYDATA SEGMENT WORD PUBLIC‘CODE’

...定义变量,初始化数据

MYDATA ENDS

MYBBS SEGMENT WORD PUBLIC‘CODE’

...非初始化数据,开辟内存区

MY BBS END

ASSUME

CS:MYCODE,DS:DGROUP,SS:DGROUP

...

_函数名 PROC NEAR/FAR

PUSH BP

MOV BP,SP

PUSH SI

PUSH DI

...程序主体语句

POP DI

POP SI

POP BP

RET

_函数名 END UP

...

MYCODE ENDS

END

3 C语言汇编语言需要调用其它子程序的语言格式

把被调用程序其格式和普通汇编语言程序分布情况加以比较能够发现:

因为C语言程序和进行汇编的子程序需要共用同一个程序运行区间,所以在刚刚开始进行子程序的C语言汇编时就需要运行PUSH BP和MOVE BO,SP这两个命令。

必须要把将会被修改和汇编到C语言程序中的子程序进行局部调用的PUBLTC操作,通过进行PUBLTC的操作来表示该段C语言子程序已经参与到其他的操作中,被其他程序所调用了。

虽然已经被调用的子程序会接受程序的控制,但也需要对该段子程序利用SI和DI进行局部变量的保存,但是仅在变量高于120分钟时,才能将其在堆栈当中加以存放。因此,这一模式进行过程中,我们可以清楚的看到PUSH DI还有PUSH SI的语句。

在经过汇编的程序C语言中,要把MYCODE的代码段、初始数据段、修改数据段进行分别的定义,并且把这几个分段的汇编程序组合成为一个有效段组,保证该段段组基址的共用性。

在汇编之后的程序语句之前必须要增加一段函数值语句,保证语句可以有效的返回,进行下一段的程序循环,并且设置的返回值要在RET语句的前方。

值得注意的是,不同意调用过的子程序必须要用RET的命令增加返回功能,并且在结束语句后编辑结束END。这个END语句代表的是最终的终止,没有相应的启动功能。

通过C语言子程序的汇编,可以有效的保证其调用功能,同时也节省了相应的程序编辑空间。例如在程序输入时,不用修改程序的进位制就能准确的进行数据的读取,也就是说参与汇编的C语言子程序在格式上不会有太大的改变,只需要在原本子程序的起始部位增加相应的语句就可以了。

EXTERN 函数名,主要作用是为了反应出这个函数是C语言的子程序,且是外部调用的、。原本的主程序语句,可以利用外部程序来实现原本语句的调用功能,具体的调用格式如下:CALL NEAR PTR 函数名,而在将C语言程序当做是子程序的过程中,只包含有C函数,并不需要EXTERN来进行进一步的说明。

4 连接两种语言

由于汇编语言和C语言二者均存在着一定的问题,通过将两种语言混合编程,能够弥补两种语言各自存在的不足,因此,下面阐述如何连接这两种语言。

4.1 传递参数

在调用C语言及汇编语言时,可能会存在汇编语言的参数传递问题,通常都是利用堆栈来进行传递,通常在汇编C语言的过程中,要把BP基址当作原数据的储存器,C语言的汇编参数全部储存在堆栈储存器当中,如果在需要使用储存参数时,可以把存储在堆栈当中的数据进行清除处理。

4.2 调用关系的确定

对于即将要调用的函数或者是过程,要在调用开始之前明确的说明,建立完整的调用关系,详细的说明被调用的子程序是属于那个外部过程当中的,并且被调用的子程序应用在什么模块当中。另外要根据调用模块和储存方式的不同,对被调用的C语言汇编子程序进行格式的确定,一般情况下被调用的在大模式下与原本程序类型基本相似,小模式下存在微小的变化

4.3 模块连接

原有的C语言模块想要和汇编C语言的模块进行准确的连接,就需要做到以下两点:

(1)原有C语言模块必须与汇编C语言模块的储存方式相同。

(2)要求汇编模块要遵守和C语言模块兼容的相同命名。

因为编译系统在编译C源程序的过程当中,将会在函数名以及变量名称的前面画有下划线,想要保证连接前后相同,全部被C语言调用的汇编子程序其标识符前面都要标记下划线。并且,想要使汇编语言的标识符在C语言当中能够看见,需要用PUBLIC来定义。要求汇编语言当中其C语言的变量以及函数,必须要在二者前面加上下划线,同时,要求汇编程序开头的所调用C函数以及变量必须要用EXTERN对其进行说明。

为了有效保证C语言及汇编语言二者混合情况下设计的程序标准,能够有效的实施,必须要保证主要参数在变成函数被调用的过程中具有有效的传递作用,并且要求针对程序设计具体的情况来确定两个语言之间相互调用的关系。

在C语言的程序当中包括六种储存形式,分别是微型和小型以及中型和金丑行,还有大型和巨型这六种储存的模式。通过这点我们可以知道,主要由空间的大小来区别储存模式。在这当中微型的储存模式其程序和蹲站都在同一段中,而小型的储存模式拥有数据以及代码段,详细的数量为同一个。如果想要混合编程,首先必须要保证这两个程序所使用的是一个储存模式,对于汇编语言来讲,Model表示程序当中用到的伪指令,之后需要连接的内容便是储存的模式,通常是上面所讲的储存模式当中的一种模式。若C语言程序所使用的储存模式是小型的,那么汇编语言当中就会表示成Model Small,并且在这个时候这两种程序使用的储存模式一定是相同的类型。因为小型储存模式将Near当做是基础指针,因此,这种储存模式其运行效率极高,所以说在实际混合编程的情况下,如果符合条件这种情况下最好选择小型储存模式。

在编译C语言的过程当中,在变量以及函数名称的下面将会添加下划线,为了保证连接的质量,调用子程序的过程当中,任何标识符其下方都应该添加下划线。站在C语言程序的角度去看,将会把所调用的对象其中实际的变量和函数作为伪命令,进而起到说明的作用。一般把命令放在函数和变量的外部。除此之外,由于想要保存汇编语言程序标示符的完整性,应该使用PUBLIC定义相应的标示符。

5 结束语

通过本文对汇编语言与C语言的混合程序设计技术的进一步阐述,使我们了解到在开发软件的过程当中使用这两种语言混合的程序设计的技术,能充分发挥两种语言各自的特点,扬长避短,大大提高了软件开发的效率,缩短开发的周期,达到事半功倍的效果。通过本文对二者之间混合程序设计技术的具体阐述,希望能够给使用汇编语言及C语言混合程序设计方面提供一定的帮助,对于我国软件开发方面起到促进的作用。

参考文献

[1]陈久娅.C语言与汇编语言的混合程序设计技术研究[J].电子制作,2013(04):61.

[2]康晶晶.汇编语言与C语言的混合程序设计技术[J].计算机时代,2013(06):1-2.

[3]印德彬.汇编语言与C语言的混合程序设计技术[J].电子技术与软件程,2015(02):254.

作者简介

篇11

文献标识码: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.

篇12

依据测绘中、高职学生毕业就业瞄准工程现场工作岗位需要的实际。在工程类的工作中,特别是在类似道路工程施工现场,伴随工程进程,需要反复进行放样或校核,而且需要现场进行数据处理,这样的数据处理的特点是数据量不大,数据处理模型不复杂,但实时性要求高,要求立即指导现场施工工作。由于施工现场灰尘多、野外供电困难等环境条件的原因,通常是不方便使用电脑的,因此,计算器,特别是程序计算器一直发挥着极其重要的作用。

1 可编程计算器的工程应用

信息社会的到来,使得人们对计算机的依赖程度越来越强,但并不意味着计算器可以完全被取代,不同的计算工具都有各自的用户群体。可编程计算器和计算机相比,具有价格低、体积小、携带方便、容易操作等优点,和不具备编程功能的普通计算器相比,又具有可解决相对复杂的计算问题、使用和修改方便等优点,因此在各行各业中得到了广泛的使用,尤其在工程行业应用最为广泛。

早在20世纪90年代末,可编程计算器就已经在我国工程界得到了比较广泛的应用。随着社会的进步,科学的发展,可编程计算器在工程领域中的使用也在增加,例如:在坐标转换中的应用、圆曲线与缓和曲线上点的坐标计算、道路纵断面中平测量、隧洞开挖和欠挖中的计算、隧道断面测量、公路与铁路路线任意变坡点连续竖曲线高程计算、桥梁施工测量中的计算、高铁施工中的相关计算等。

随着计算器的不断发展,计算器的内存容量也逐渐增大,有些已经可以使用存储卡存储程序。计算器不断地升级换代,功能更加强劲,计算器的处理能力也在不断增加,以适应现代工程技术发展的需要。

2 高职高专测绘相关专业学生计算能力培养

“测、绘、算”是测绘学生要掌握的基本技能,“算”是其中重要的一项,学生学会一种以上计算器的使用是很有必要的,可以提升学生的计算能力。

根据高职学生就业面对工程现场一线岗位的特点要求,在《高等学校高职高专测绘类专业规范》和《教学基本要求》中要求设置“计算器测绘程序设计与应用”课程,以期待通过学习,构建学生满足现场工作实时需求的数据处理能力。这样的数据处理能力,也是构成学生计算能力的不可缺少的组成部分。即使是当前测绘技术和装备已经数字化、信息化的状态下,测绘地理信息技术人员的现场工作依然需要工程计算器,特别是对可编程计算器应用能力的需求。

但现在的学生对计算器认识不够。智能手机、平板电脑等电子产品的不断涌现,价格水平也逐年下降。计算器在学生的潜意识里已变得不再重要,他们觉得,手机、平板即可代替计算器。

但就中国目前来看,计算器还不能完全被替代,计算器所具有的优势:如小巧、轻便,便于携带;电池耐久;计算程序容易编写等,使得它在短时间内还不会从市场上消失。这就要求我们改变学生对计算器的认识,从计算器的基本使用开始,让学生系统地学习可编程计算器,培养学生的计算能力。

3 可编程计算器程序设计课程中存在的问题

到目前为止,高职高专开设可编程计算器程序设计课程还存在以下问题:

3.1 教材的选择

很多学校都开设了计算器编程课程,但是一直没有适合的教材作为参考,上课非常不方便。虽然算器编程相关书籍非常多,但作为教材还不够系统,难易程度也不合适。

3.2 可编程计算器机型选择

市面上的计算器品牌很多,如CASIO(卡西欧)、得力DELI、TI(德州仪器)、SHARP(夏普)、Canon(佳能)、COMIX(齐心)等。各种品牌、型号的计算器,它们各有特点,且操作不完全相同,计算器的按键对于不同的品牌、不同的型号,区别也比较大。编程计算器的程序语言也不完全相同,计算器的计算功能的多少、在工程上的使用程度等都影响计算器的选择,同时还要兼顾学生本身的经济条件。因此,选择哪一种机型的计算器用在教学中是一个要解决的问题。

3.3 教学内容的选择

因课程开设时间的不同,对教学内容的要求也不一样。如果开设时间过早,相关的基础课程还没有学习,学生学习起来困难较大。将课程安排在大部分专业课程之后,基本原理部分的讲授就会变得相对简单,但编程内容要如何选择,怎样安排整个教学内容才能达到比较好的效果呢?这是我们要解决的又一个问题。

4 课程建设

4.1 教学时段安排

因计算器编程课程与很多专业课程密切相关,如果大部分专业课程没有学过,在讲程序设计时,势必要把所有没学过的数学模型及原理从头讲一遍,这样就会与其他专业课程重复。根据多年对本课程的教学和研究,将课程安排在完成大部分专业课程之后,将会事半功倍。

此外,计算器程序设计课程同一些专业课程会同时开课,将计算器程序用于这些专业课程中的相应计算中,这样的学习效果会更佳。例如在开设工程测量课程时,将曲线放样元素的计算用计算器程序来完成,计算更快,学生也更有学习兴趣。

4.2 教学时间安排

4.2.1 一周安排几节,用一个学期的时间完成课程教学

这样安排,学生有时间学习和消化讲过的内容,但时间过长,可能在下次上课的时候就将上节的内容忘记了。

4.2.2 集中排课,一周时间完成课程教学

用一周或两周的时间,集中学习。天天都在接触计算器及相关编程内容,记忆深刻。但集中学习,一次接受的知识太多,学生理解起来有困难。在学过一个知识点后,学生没有更多的时间去消化吸收。

这两种安排各有利弊,但将其综合起来,将课程安排半个学期的时间,教学的进度与学生的接受能力都可以得到满足,教学效果更佳。

4.3 总学时的确定

课程的安排要满足学生学会计算器的基本功能、基本编程功能、专业计算程序的编写、在工程应用中使用到的一些常用计算器程序等。由易到难,学生从计算器的基本功能开始学起,通过学习平时熟悉的数学模型,学习兴趣会更浓。通过这样的循序渐进的过程,逐渐掌握程序编写的要点与技巧,从而学会编程。要达到这样的教学目标,总学时安排大概30学时即可。

4.4 计算器机型的选择

根据卡西欧(中国)贸易有限公司市场部相关人员的市场调查,及测绘相关专业已经毕业的学生反馈的信息,在工程中使用较多的机型为CASIO fx-5800P计算器。因此,为了适应市场及学生就业岗位的需求,课程选用CASIO fx-5800P计算器作为主要机型,有针对性地讲授其编程方法,同时附带市场上用的相对较多的其他机型作为比较。

5 教材建设

针对各高职院校计算器编程课程的困扰及课程特点,经过全国测绘地理信息职业教育教学指导委员会认真研究,组织编写了《Casio fx-5800P测绘程序设计与应用》教材,该教材从测绘及相关专业出发,内容涵盖计算器的基本计算操作、编程基础、点位坐标计算、参考椭球与坐标转换、高程测量计算、导线测量计算、曲线测设和面积计算等程序的编写与使用,与测绘专业紧密结合,难易程度相当。学生学习了相关测绘基础知识,如测绘基础、测量平差、控制测量、工程测量等学科之后,再来学习计算器程序设计,在数学模型的学习上不用花费过多的时间,重点放在程序设计与使用上,效果会更好。

在信息化比较发达的今天,除了纸质的教材外,学生可以借助各种媒体进行学习。同时考虑到课程的学习时间不是很长,需要在短时间内掌握编程技巧与方法,所以在教材出版的同时,还配套有课程相关的学习视频、课件、教案等供老师和学生参考。学生除了在课堂上学习外,还可以自由安排时间进行自学。老师上课更轻松,学生也可以更好地学习。

6 结语

课程建设方案及教材内容的设计,在由全国测绘地理信息职业教育教学指导委员会组织的“工程计算器与测量教学整合”课题研讨会上,得到了与会专家、老师、工程师等的一致好评。同时为了使学生更爱计算器程序设计,使计算器程序设计课程达到开设的目的,卡西欧(中国)贸易有限公司联合多所高校、企业组织了工程计算器程序设计大赛,使专业人士和学生积极参与,促进了计算器程序的发展和改进,做到以教促学、以赛促学,最终达到以学促用的目的。但是,这其中也存在一定的不足之处,我们会在以后的实践中不断改进,以适应发展的需要。

参考文献

[1]周拥军.CASIO可编程计算器在土木工程教学中的应用实践[J].昆明冶金高等专科学校学报.2003,19(04):51-52.

[2]王中伟.卡西欧fx-5800P可编程与道路施工放样程序[M].广州:华南理工大学出版社,2011.

[3]高振玲.马俊福.利用CASlO编程计算器进行圆曲线与缓和曲线交点坐标的精确计算[J].甘肃广播电视大学学报,2012,22(03):45-47.

作者简介

篇13

1 引言

汇编语言程序设计是基于具体硬件的编程语言,它从程序角度帮助学生认识计算机的工作原理和特点,是衔接计算机软件和硬件的桥梁[1,2]。汇编语言程序设计对学生后续学习:“计算机组成原理”、“微机原理与接口技术”、“嵌入式系统”、“单片机技术”等课程有非常重要的作用[3]。因此,汇编语言程序设计并不因C++、JAVA等高级编程语言的出现而淘汰,依然是计算机专业的基础核心课程。但一直以来,学生普遍认为汇编语言程序设计的学习较难,课程教学效果并不理想。本文针对汇编语言课程的特点,分析了在汇编语言教学中存在的一些问题,立足于培养高素质的创新型人才,将学习共同体引入汇编语言程序设计课程教学,构建基于共同体的学习环境、研究基于学习共同体的汇编语言程序设计课程的教学目标、教学方法、教学评价标准,提出了基于学习共同体的汇编语言程序设计教学模式,以提高汇编语言程序设计的教学效果。

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

根据以往的教学经验,并结合我校的实际情况,分析汇编语言程序设计教学中存在的问题主要有如下几个方面:

(1)汇编语言程序设计课程的语法比较严谨枯燥,程序的编写和调试比较繁琐,而且与计算机硬件具有高度相关性,因此学生入门较难[4,5]。汇编语言程序设计课程教学内容多,课堂教学时间少,现如今教师多采用多媒体教学方式,进度快,知识容量大,学生缺少思考和吸收的时间。

(2)程序设计是一种能力和技巧,汇编语言程序设计也不例外,因此需要理论和实践紧密结合。而本课程一般开设在大学低年级,此时基础课程任务比较重,学生分配到每门具体课程的时间和精力是非常有限的,因此学生很难有充分的时间,在理解理论知识的基础上,经过大量的实践来锻炼自己独立思考、分析问题、设计算法、编写程序、解决问题的能力。

(3)目前的高等教育进入大众化阶段,学生人数众多,汇编语言程序设计课程往往采用大班教学,教师很难有效控制教学过程,实现对学生的一对一指导,导致课堂上师生互动越来越少,学生被动学习,理论知识消化困难,实验课编不出程序,越学越难,学生的自信心受到严重挫折,学习兴趣自然消失殆尽。

因此如何有效利用有限的课堂教学时间,提高学生快速吸收和运用知识的能力,激发学生学习兴趣,是?R编语言程序设计课程亟待解决的关键问题。

3 基于学习共同体的汇编语言程序设计教学模式

“兴趣是最好的老师”,兴趣对学生的学习有着神奇的驱动作用。如果学生对所学内容有足够的兴趣,就会产生强烈的探索欲望和饱满的情绪,自发调动全部感官,积极、主动地参与到教学中去。因此在整个教学过程中必须以培养学生学习兴趣为中心,变被动学习为主动学习。研究表明人的知识来源于教师讲授的不到20%,而通过同他人的对话、沟通、协作获取的超过80%,因此团队协作型学习环境可以促进知识的吸收和获取。“学习共同体”(learning community)是指将学习者组织成学习团队,团队内成员拥有共同的目标,相互协作,通过互相交流和沟通共同学习,共同完成学习任务[6-8]。学习共同体将传统的独立学习模式改为团队学习模式,鼓励团队成员之间的交流和相互启发,能够有效调动学习者的学习兴趣,激发学习者的学习主动性和积极性,变被动学习为主动学习,团队成员之间共同学习、相互促进、共同提高。

本文将学习共同体引入汇编语言程序设计课程教学,构建基于共同体的学习环境、研究基于学习共同体的汇编语言程序设计课程的教学目标、教学方法、教学评价标准,以培养高素质的创新型人才。研究成果具有较强的推广性和普适性,可望给本校及其他同类高校产生良好的指导与辐射作用。具体研究内容包括以下几个方面:

(1)构建共同体学习环境。

在学习共同体的教学模式中,首先应该注意学生之间的个人差异,根据个性差异和学习能力建立学习共同体,将以往的学生独立学习改为团队协作学习,鼓励小组成员之间的交流和相互启发。需要注意的是,在建立学习共同体时,小组人数和分组方式应根据实际情况确定,因地制宜,不强调统一标准。其次在基于学习共同体的教学模式中,课堂教学以师生讨论和交互的方式探索新知识,解决新问题,因此要求学生的课程?⒂攵冉细摺N?此,教师要帮助学生实现自我管理,提高学生自主学习效率,督促学生事先将教学基本内容通过自主学习的方式在课外完成。

(2)设定课程教学目标。

在基于学习共同体的教学模式下,课程教学的首要目标就是培养学生的学习兴趣,激发学生的学习主动性和积极性,使学生变被动为主动,共同学习、相互促进、共同提高。目前的高等教育,学生越来越多样化,在教学过程中,要尊重学生不同的学习方式、不同的价值取向和不同的学习结果。教师应根据学生的个性差异和学习能力分层次地制定学习目标,注重学生综合能力的培养。

(3)改革课程教学方法。

传统的教学模式中,课堂教学以教师讲授为主。基于学习共同体的教学模式,课堂教学以师生讨论和交互的方式为主,要求学生的课程参与度较高。整个教学过程中必须以培养学生学习兴趣为中心,课堂教学形式应该多样化。学习任务要具有循序渐进性和挑战性,注重知识的运用和能力的培养,因此在基于学习共同体的教学模式中,应当合理安排教学内容。此外,还需要根据教学内容不同阶段的特点设计不同的教学方式,以便组织课堂上的讨论与协作顺利展开,例如在教学的初期,教师要多引导启发,在教学的后期可以采用学生分组汇报或者小组讨论等方式。

(4)制定合理教学评价标准。