汇编语言程序设计范文

时间:2023-02-27 23:47:42

汇编语言程序设计

汇编语言程序设计范文第1篇

为了实现创新人才培养的目标,将研究性教学模式引入汇编语言程序设计教学中,对教学方法、教学组织形式及考核方法等进行了改革,改善了教学效果,提高了教学质量。

【关键词】

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

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

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

2教学改革思路:

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

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

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

4教学组织过程

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

5考核方式

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

6结束语

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

参考文献:

[1]罗克露.研究性教学模式的探讨[J].计算机教育

[2]曾广录.论研究性教学改革中的评价机制建设[J].当代教育理论与实践

汇编语言程序设计范文第2篇

关键词:汇编语言;教学改革;实践

作者简介:陈燕俐(1969-),女,江苏常熟人,南京邮电大学计算机学院,副教授;许建(1980-),男,江苏徐州人,南京邮电大学计算机学院,讲师。(江苏南京210003)

基金项目:本文系2011年南京邮电大学教改项目“以人为本,因材施教,构建多层次立体化教学模式的研究”(项目编号:JG00411JX13)的研究成果。

中图分类号:G642.0     文献标识码:A     文章编号:1007-0079(2012)11-0055-02

“汇编语言程序设计”是计算机及相关专业的专业基础必修课。[1]学生通过该课程的学习,不仅可掌握汇编语言程序设计的基本理论和方法,培养汇编语言程序开发能力,而且还会对计算机系统有更深刻地认识。学生学好该课程对于了解计算机系统的组成结构与原理,更深入地学习程序设计方法很有意义,[2]也为将来学习操作系统、微机原理及接口技术、计算机组成原理、计算机系统结构和高级语言等课程打好坚实的基础。

“汇编语言程序设计”是一门软硬件结合的课程,和处理器及操作系统都是紧密相关的。近年来,由于教学内容滞后于当前计算机技术的发展,并且这门课程的内容较抽象、不易理解,容易导致学生的学习兴趣下降,因此“汇编语言程序设计”逐渐在计算机专业教学体系中被忽视,课程改革成为各高校计算机等专业紧迫的问题之一。本文根据汇编语言的特点,结合课程组老师的多年的研究和探索,探讨了从教学进程、教学内容、教学手段以及实践教学等多个方面对该课程进行改革的基本思路和策略。

一、教学进程的改革

目前大部分学校都是在大二或大三开设“汇编语言程序设计”课程。笔者认为应将该课程安排在第一学期,在学生学习了课程“计算机科学与技术导论”之后。原因主要有以下两点:

1.汇编语言是计算机学习最佳起点的编程语言,是人和计算机沟通的最直接的方式

汇编语言是最接近于机器语言的编程语言。如果说机器语言是计算机操作的本质,那么汇编语言就是最接近本质的语言。汇编语言描述了机器最终所要执行的指令序列。可以说汇编语言是联系硬件与软件的纽带,学习它既可以理解软件,又能够感知硬件,所以学习汇编语言无疑是学生学习和理解计算机体系最佳的切入点。通过该门课程的学习,学生能够深刻理解机器运行程序的机理,使得他们在以后接触复杂变化的计算机知识时变得清晰和顺畅。

2.汇编语言是很多相关课程,如高级语言、数据结构、操作系统、微机原理等的重要基础

目前在大学计算机课程体系中,“高级语言程序设计”通常被安排在第一学期。大一新生主要是通过C语言的学习达到利用计算机分析问题和解决问题的目的。C语言被认为是学习其他计算机课程的基础。这门课程的掌握程度将对其他课程的学习积极性产生影响。但学生普遍反映学习该门课程有较大的困难,对许多概念(如指针、形参实参、函数调用、全局变量、局部变量等)难以理解,他们认为许多概念抽象、空洞,往往在学习的初始阶段感到茫然、乏味,甚至产生恐难情绪,直接影响到整个学习和教学效果。学生经常学习结束后,连简单的程序都不能编写,其原因就是大一新生普遍缺乏计算机知识背景和算法思想,汇编语言才是计算机技术的基础,而不是C语言。汇编语言能够让学生更好地理解高级语言,高级语言大都编译为汇编指令,最终转化为机器指令得以执行。所以说学习汇编语言既有助于透彻地理解高级语言的核心原理,又能明晰程序内部的执行过程。

汇编语言作为一种与硬件紧密联系的低级语言,相对于其他计算机语言比较难于掌握,再加上随着软件技术的发展,毋庸置疑汇编语言的应用领域越来越小,不少学生认为学习汇编语言在以后工作中用处不大,纯粹只是为了考试过关而应付学习。因此在教学过程中,教师首先必须向学生详细阐述汇编语言在计算机学科知识体系中的重要作用,充分调动学生的学习热情和求知欲望,强调学好汇编语言,并不仅仅是掌握一门编程语言,更重要的是能够获得直接从底层分析问题解决问题的能力,为学习高层的知识奠定基石;更要向学生说明汇编语言具有与高级语言不同的特点,正是这些特点使得汇编语言具有高级语言不可替代的作用,汇编语言也具有其他高级语言所无法企及的优势。

二、教学内容的改革

“汇编语言程序设计”教学内容包括以下几个主要部分。微型计算机概述:微型计算机的发展过程、特点,微型计算机及微机系统的组成,微型计算机的三总线结构,数制和码制等基础知识;80x86微处理器:80x86微处理器的发展、特点和结构,微处理器的寄存器,微机系统的存储器组织,微处理器的工作模式,微处理器的引脚信号及其功能;80x86的指令系统:寻址方式,数据传送类,算术运算类等指令的功能和使用,常用伪指令和运算符的使用;汇编语言程序设计:汇编语言编程格式,汇编语言程序设计的基本方法(包括分支、循环、子程序调用等)。

汇编语言是和处理器以及操作系统紧密相关的,随着16位处理器和DOS操作系统退出历史舞台,32位、64位CPU以及Windows、Linux等多任务操作系统的出现,[3]课程的基础知识和实践环节必须与时俱进,需要从DOS下的16位实模式编程过渡到Windows下的保护模式编程。[4]但由于多任务操作系统工作在保护模式,使用汇编语言直接开发的应用程序,不能直接对硬件进行操作。应用程序通过操作系统来实现对硬件的控制,[4]且Windows下的保护模式编程较为复杂,因此目前在大部分学校,该门课程内容的核心仍然是DOS下的16位实模式编程,但为了教学内容的先进性,增加了32位指令和保护模式的介绍,CPU的结构是以386体系结构为基础的Pentium 处理器为主,摒弃了8086结构的介绍。这种矛盾就造成了学生对许多概念不能理解,如操作数的存储器寻址方式等,这样直接影响学生下一步学习指令和汇编语言程序设计的积极性。

针对上述问题,笔者认为应将16位汇编和Win32位汇编有机融合起来。16位汇编语言和Win32汇编有其相似之处,例如有着相同的寄存器、相同的指令系统、相同的寻址方式,只不过操作数和地址的长度不同而已,因此应以16位汇编入手,以8086寄存器结构、寻址方式、指令集为基础逐步过渡到32位汇编,这样内容相对简单,学生容易理解。重点要阐述清楚实模式下的存贮器编址和保护模式下存贮器编址,在讲述处理器的工作模式时就应该让学生明确16位段和32位段的概念以及差别;在此基础上进一步让学生明确16位汇编和32位汇编的概念。

三、教学方法的改革

目前的汇编语言授课计划都是在讲述完所有的理论知识,包括所有的指令(传送类指令、算术运算类指令、转移和调用类指令、逻辑运算和移位指令、串操作指令、处理机控制指令)和伪指令后,再开始学习编写程序。由于汇编语言指令、伪指令较多,有大量的指令和语法规则需要记忆,学生要在短时间内掌握每条指令的功能、指令的寻址方式、指令对标志位的影响以及指令执行时的约定设置、需要预置的参数、隐含使用的寄存器等内容,这将导致学生对课程中所讲授的内容无法消化,容易感到枯燥、厌烦,从而产生倦怠心理,失去了学习兴趣。

笔者认为首先应从整体上让学生了解微机结构及其工作原理,对学生阐述清楚指令的组成、操作数的寻址方式以及指令的运行这些最基本的概念和理论。现如今的教学环境有了不同程度的提高,多媒体教学已经普及,各种汇编语言教学软件和课件层出不穷,把难以想象的部分以动态、直观的图形图像演绎出来,让学生易于接受和理解。比如CPU编程结构、存储器分段、寻址方式等可以用PPT来演示;指令的运行可以用flash等软件形成动态图像演绎全过程,达到了事半功倍的效果。

在讲述最基本的传送类指令、算术运算类指令和基本的伪指令后,就可以让学生学习编写完整的汇编语言程序,并且上机调试、运行,使学生能在实践中掌握汇编语言程序设计,并使其熟悉指令系统。其余的各种指令和伪指令等内容分解到下面的学习进程中,让学生逐步接触并使用这些指令,如可将转移和调用指令分解到分支、循环程序设计的学习中;在学习数据处理程序设计时可以先向学生介绍串指令。这样将编程环节提前,以一个完整的程序实例引导,通过编程与动手,学生对程序设计及一些基本概念、基本方法建立感性认识,在此基础上以程序为线索再逐一展开,将使学生在整个学习过程中的每一步都目标明确,主题清晰,基础扎实,可达到循序渐进的效果。学生在此过程中还会不断地获得成就感,可以更大地激发求知欲望,进行自主探索和互动协作的学习。

四、实践教学的改革

实验教学是检验和巩固已学知识的一个必要手段,是培养学生创造性的关键环节,也是教学改革的一个重要方面。[5,6]汇编语言是一门实践性很强的语言,实验环节在整个教学活动中占据了举足轻重的地位,是提高学生动手能力的重要环节。[7]

在“汇编语言程序设计”实验中,目前主要还是要求学生编写实模式DOS程序。但学校实验室计算机通常不会安装DOS操作系统,而是安装多任务如Windows操作系统,因此汇编实验程序运行在Windows下的虚拟86模式,工作在虚拟DOS环境,汇编工具为Borland公司的Tasm或Microsoft公司的Masm。汇编程序的汇编、链接均要输入DOS命令,但由于学生对DOS操作环境不熟悉,在上机时不能够熟练地在DOS环境下进行操作,使得学生对上机实验产生畏惧心里。

针对上面的问题,教师一方面应耐心讲解,让学生充分认识到实验的重要性,熟悉汇编语言源程序从汇编、链接到调试运行的整个开发过程;鼓励学生只要反复实践,一定能够掌握汇编语言的开发过程。实验室提供使用更加方便的汇编语言集成开发工具,如未来汇编等。与汇编语言程序在传统的DOS界面下的上机环境不同,未来汇编是在Windows界面下的集编辑、汇编、链接、调试为一体的16位TASM集成环境,其窗口化、菜单式及汉化的操作,使得汇编语言程序设计实验大为方便。开发人员可以在该集成环境下编写源程序,然后只要直接用鼠标点击菜单上的相应命令,就可以完成程序的汇编和链接工作,直接生成可执行文件,所有工作一次性完成;并且同时把汇编和连接时产生的输出信息输出到输出窗口中,供用户参考,而不会输出到DOS的命令界面上去,省去了不同操作环境之间的频繁切换。这一平台可以很好地将学生的注意力集中于汇编语言程序的编写与设计中,解决了实模式DOS程序的开发与Windows操作系统之间的矛盾,大大提高了学生做实验的积极性。这对于提高学生的学习兴趣、巩固课堂教学内容起到了关键作用。

五、总结

“汇编语言程序设计”作为计算机及相关专业的专业基础课程,其重要性显而易见,但是目前面临着很大的挑战。这其中的原因是多方面的,包括计算机技术发展的日新月异造成的教学内容的滞后。面对当前的形势,找到合理的解决方案是当务之急。本文主要分析了目前课程教学中存在的问题,结合教学实践,从教学进程、教学内容、教学方法与实践教学改革等方面给出了课程教学改革的基本思路与策略。让学生充分了解学习汇编语言的重要性,合理安排教学内容,选择适当的教学方法和实践手段,充分发挥学生的学习积极性。

参考文献:

[1]郑晓薇.汇编语言[M].北京:机械工业出版社,2009.

[2]程学先,林姗,程传慧.汇编语言程序设计[M].北京:机械工业出版社,2009.

[3]冯建文,包健,严义.“汇编语言程序设计”课程的教学改革与探讨[J].吉林大学学报(信息科学版),2005,(S2):22-24.

[4]谭毓安,张雪兰.Windows汇编语言程序设计教程[M].北京:电子工业出版社,2005.

[5]宋人杰,周欣欣,李红彪.《汇编语言程序设计》教学改革的探索与实践[J].东北电力大学学报(社会科学版),2008,28(5):38-40.

[6]杨建军,陈星.汇编语言程序设计实验教学的研究与探索[J].实验实科学,2008,(4):34-35.

汇编语言程序设计范文第3篇

关键词:汇编语言 教学 改革

汇编语言程序设计是计算机硬件、软件及计算机应用专业必修的基础核心课程。通过本课程的学习,学生掌握程序设计的基本技能,提高编程及用汇编语言解决实际问题的能力,进一步了解80386、80483、Pentium CPU的工作模式及扩充功能,以便跟踪微机新技术的发展和应用水平。

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

汇编语言比机器语言有了很大的进步,但仍是面向机器的一个非常低级的语言,非常冗长单调、易出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

(Computer School, Wuhan University, Wuhan 430079, China)

Abstract: Based on the advantages of comparative teaching, this paper makes some analyses on asembly languages in contrast to advaned languages from the basic aspects of programming, including data arrangment, data processing, flow control and sub-program.

汇编语言程序设计范文第5篇

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

目前,在信息技术等相关专业,双语教学越来越受到有关专业教师的关注,这不仅是相关学科的教学改革与国际接轨的需要,也是现代高等教育发展的新趋势[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)

Abstract: By bilingual teaching of Assembly language programming, this paper discusses feasibility and advantages of bilingual teaching of computer special course related to English textbook, teaching method, teaching experiment and organizational strategies in classroom activities. Bilingual teaching of computer special course shows that students could be improved not only in professional knowledge but also in English. Therefore, bilingual teaching of computer courses is an important way to international standard.

汇编语言程序设计范文第6篇

关键词:汇编语言;实验教学;实验安排;实验教改

中图分类号:TP313-4

汇编语言作为面向机器的软件,在计算机应用中拥有重要的地位,主要应用在对实时性要求高、对硬件设备进行控制的场合:比如在过程控制、媒体接口、通信等用高级语言难以实现操作的场合,必须使用汇编语言。虽然目前系统软件的开发已有不少采用高级语言,但给出的目标程序往往还是采用汇编语言的形式,并且还有不少系统软件要求必须使用汇编语言编写。因此,对于计算机的开发、应用技术人员,必须熟练掌握汇编语言才能分析、修改和扩充计算机系统软件、增加计算机功能。

1 实验教学环节在汇编语言教学中的地位和作用

计算机学科在许多方面与其他学科不同,特别是与硬件密切相关的课程。由于汇编语言课程是与硬件的操作密切相关,实验环节在教学活动中占据了重要地位,对提高学生的阅读、编辑和调试功能中起着不可替代的作用。在正常情况下,计算机高校会指出要加强上机实践环节,学生通过实验课的理解工作有CPU,内存,接口和外部设备,在计算机的表达和传输数据产生的看法。在汇编语言的实验,以达到更好的理解和掌握,从感性认识到理性认识。因此,在汇编语言程序设计教学中应注意的不仅是实验和理论教学应认真贯彻落实是基于实验的原理。实践能力的重要组成部分,思维能力,创新能力,很显然学生在这个过程中出现的困难,第一他们需要从缺乏必要的感性认识,没有足够的实验时间。

2 汇编语言实验教学的现状分析

首先,汇编语言属于低级语言,对于初学者而言,学习高级语言等于电脑在迁就人的思维方式,而学习汇编语言则需要人去迁就电脑的思维方式,要设身处地地用电脑的角度去思考问题,这就是学生学习汇编语言时遇到的最大障碍。

其次,汇编语言程序设计课程在教学方法上基本还是采用传统的授予式的教学方法,和所有的程序设计语言一样,要学好汇编语言,实验是必不可少的环节。很多学生都有这样的体会,书上的程序都能看懂,基本原理也都明白,但是在真正要亲自动手去编写程序的时候却无从下手,甚至连第一句怎么写都不知道。这就要求教师在讲解理论知识的同时注意让学生及时上机练习。因此,在教学方法和教学手段上应该有所创新和突破。

再次,教师受传统教育的影响,普遍存在重理论轻实验的思想,一方面,教学方法普遍采用的仍然是讲授法。另一方面,随着科技的飞速发展,现在课堂教学大部分使用多媒体教室,这就使得部分教师授课时过分依赖多媒体演示,很多内容都是通过多媒体演示仅让学生看看了事,并不重视让学生进行实际操作。

最后,因为汇编语言本身具有难学、难理解、难调试、难维护、可移植性差这些缺点,随着计算机运行速度的提高和内存容量的增加,人们对时空效率的要求已不再那么迫切,汇编语言的优势已不再那么突出,学生学习汇编语言固然存在着不少困难,但汇编语言在某些方面仍然有着高级语言无法比拟的优势。所谓“兴趣是好的老师”,作为教师要注意激发学生的学习兴趣,并在开学初就明确告诉学生这种考核制度的存在,使之开始就消除怠慢的情绪,从根本思想上重视实验。

3 实验教学内容的设计新思路

“汇编语言”是实践性很强的课程,而且有些内容只有通过学生上机调试过,才会有更深的体会。所以实验教学安排应按照由浅入深,循序渐进的方式进行,合理选择实验内容,尽量避免过多过杂。有些实验内容可以安排在讲课之前,即“实践先行”或“项目驱动”让学生先实际操作然后带着问题来学习,这样会大大增加学生的学习兴趣。在内容选择时应注意举一反三,即以启发思维为主,对设计型、综合型实验只要求能够完成预定实验目标即可,不苛求实验过程与步骤的统一。在实验课上,可以将教师演示和学生实践穿行,并且注意重复对比,让学生及时发现自己操作上的失误,加深对汇编语言编程操作规范的理解。另外,在实验中教师不需要处处包办,要学会适时放手,鼓励学生自己动手修改程序,有时学生对自己编的程序没有把握,一旦经上机实验亲手调试后就会很清楚了。学生在计算机上修改程序,观察修改后的结果,实际上就是了解改动部分在整个程序中所起到的作用,这种作用的认识和理解不是通过说教得来的,而是切身经历的、看到的,学生对于它的理解、记忆就要深刻的多。

3.1 改革实验方法。摒弃传统的DOS环境,采用汇编语言集成环境AsmEdit。该环境具有如下特点:(1)以Windows为平台;(2)有一个功能与Windows的记事本相同的编辑环境,可方便地编辑汇编语言源程序;(3)在设置汇编、连接、调试等可执行文件的位置后,可以在集成环境中通过菜单或者快捷按钮来进行汇编、连接、调试等工作,而不需要分别执行相应的命令。还可以显示如果在DOS下操作时这一步操作所需要敲入的命令行;(4)只要按几下鼠标就可以快速插入一些内容:预先设定的一些文件格式,DOS下的EXE文件,COM文件等;汇编语言指令及其使用格式;伪指令以及预先设定的一些程序片段,如过程定义等等。

3.2 利用Debug调试工具,加强实践环节。汇编语言和高级语言一个很大的不同之处在于用汇编语言编写的源程序在上机调试时大部分的程序不能直接看到运行结果,所以需要充分领用好Debug这个调试工具,能够熟练利用这个工具,可以帮助学生理解指令和程序,有效提高学生的编程能力和上机调试能力。

为了充分发挥Debug的作用,需要把Debug的使用方法贯穿到整个课堂教学和实验教学的始终,比如,在讲授CPU内部的寄存器结构时候,可以教学生用Debug查看各寄存器的状态等。在程序设计部分,Debug发挥更大的作用:大部分程序的运行都需要借助Debug来查看运行的结果,当程序运行错误时,还需要借助Debug来进行调试,利用Debug来随时查看寄存器和内存单元的内容,找出错误所在,从而不断修改直到程序运行通过。

4 实验内容的具体安排

具体的实验内容应覆盖汇编语言程序设计课程教学中的各个要点,主要包括DEBUG、汇编语言编程环境、汇编语言程序设计。实验类型分为选作和必做。每个实验分属验证型、设计型或综合型。基于以上思考,笔者在实验内容的选择、实验步骤的设计和实验文档的组织等诸方面都做了精心的考虑和安排,尝试为“汇编语言程序设计”课程编写了《汇编语言程序设计实验指导书》。下面列举其中几个具有代表性的实验:

实验一 汇编语言实验平台及调试工具的应用

5 结束语

参考文献:

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

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

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

[4]钱晓捷.32位汇编语言教学技巧[J].计算机教育,2012(02):88-91.

[5]陈逸菲,赵丽玲,张颖超等.汇编语言的对比教学法[J].计算机教育,2011 (24):45-48.

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

作者简介:王小林(1980.04-),女,江苏徐州人,讲师,研究方向:计算机应用。

汇编语言程序设计范文第7篇

关健词:汇编语言;案例教学法;考核方法

中图分类号:G642文献标识码:A文章编号:1009-3044(2011)10-2459-03

Research on Teaching Method of Assembly Language and Programming

HE Li-xin, WANG Kun-lun, LIU Deng-sheng, WU Xiao-qin, TU Jing

(Key Laboratory of Net work and Intelligent Information Processing, Hefei University, Hefei 230601, China)

Abstract: At present,it is very hard to get a satisfied effect of teaching. This paper discusses how to get a better effect on teaching of assembly language by four facets. The four facets include that interesting the students in studying the course, and declining the difficulty of the course, and improving the teaching of experiment, and that a reasonable method of assessment is established. Practice proves the efficiency of this method.

Key words: assembly language; case methods of teaching; methods of assessment

《汇编语言程序设计》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。 在实际应用当中,可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,还可以直接被用于嵌入式软件开发之中,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。因此,搞好《汇编语言程序设计》课程的教学很重要,如何搞好该课程教学值得广大教师们探讨和总结。

1 现状分析

目前,汇编语言课程教学存在的如下问题:

1)绝大多数同学对汇编语言课程的目的认识不够,且错误地认为汇编语言已经过时,没有用,从而对这门课程的学习没有兴趣。

绝大多数学生把汇编语言作为一门纯粹的编程语言课程来对待,这是一个较大的误区,这从思想上和意识上把汇编语言放到一个普通的程序设计软件的位置,这样势必难以达到较好的教学效果。而本课程的一个主要目的就是让学生学习与认识基本存储控制思想、底层设备操纵方法、系统输入输出特点等内容,为学生在高层应用与底层的系统结构组织与实现之间架设一座桥梁,使他们能够建立一个完整的系统思想体系,为将来更好地应用和发展打下一个良好的基础[1]。

另外,目前直接用汇编语言编写软件的情况的确不多,所以有不少学生都错误地认为在高级语言盛行的时代汇编语言已经过时且在企业的实际应用中没有用途,因此对这门课程没有兴趣。

2)汇编语言难学,挫伤了学生对该课程的学习热情。

由于汇编语言程序设计涉及到计算机底层硬件,学习内容枯燥,需要记忆的内容繁多,起步比较困难,不像计算机高级语言起步容易并在现在的应用程序设计中占有绝对的优势,相对于汇编语言,高级语言接近人类的自然语言,易学易用,很多功能用高级语言里只要一条语句就可实现,而用汇编语言则要好几条甚至几十条语句才能实现,这在很大程度上挫伤了学生对该课程的学习热情。

3)实验内容枯燥无味,实验考核方法不够好,实验课效果差。

当前绝大多数学校的实验与实践环节的组织对学生学习汇编语言没有起到太大的帮助,汇编语言实验内容仍然停留在程序三大结构、数据组织与数值计算、代码转换和数制转换等方面,这会导致学生对本课程实验和实践环节没有兴趣,不能激发学生的学习热情。另外,很多实验课基本上是学生做实验,有问题请教老师,教师指导,实验课结束就意味着同学们都通过了该实验这种方式进行的。很显然这种方式对自我要求不高的学生没有任何监督力,实验课教学效果差是很自然的事情。

4)课程考核方法不够完善,对学习过程的考核不够严谨。

传统的考核方法是按照期末考试占70%,平时成绩占30%来计算总评成绩的,有点甚至直接用期末考试成绩代替总评成绩。显然这些方法对学习过程的表现考虑不够,这就导致有些平时不爱学习的同学,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。

2 问题的解决方案

1)引领学生认识汇编语言课程的重要性,结合企业对汇编语言人才的需求和实例激发学生学习汇编语言的兴趣。

人们常说“兴趣是最好的老师”,事实的确如此,当学生们对课程产生了兴趣时他们会很主动地去学习,遇到困难会积极思考。为了激发学生的学习兴趣,作者在教学中使用了如下方法:

第一、强调《汇编语言》课程的重要性。《汇编语言》是高等院校计算机软、硬件及应用专业的专业基础(核心)课,它不仅是计算机原理、接口技术及操作系统等其它核心课程的先行课,而且对训练学生掌握程序设计技术、加深对计算机工作原理的理解有非常重要的作用。同时也是我们学习高级语言的利器[2]。

第二、介绍汇编语言在计算机系统维护等方面的实际应用,并选择有代表性的问题现场演示,让学生亲身体会到汇编语言的用途。虽然目前用汇编语言编写软件的情况的确不多。但是在实际应用中可以使用汇编语言进行计算机系统维护、操作系统维护、操作系统分析、反病毒分析,另外在一些嵌入式软件开发中有时还需要用到汇编语言,更为重要是在与硬件直接打交道时汇编语言是唯一的选择。

第三、用与生活中密切相关的实例现场演示,激发兴趣。

演示事先准备好的用汇编语言开发的与日常生活密切相关的应用实例,如:交通灯系统,空调单暖温度控制器,以及银行排队系统等等。使学生亲身体会到汇编语言的用途,从而彻底扭转学生们的编语言没有用的思想,激发学生学习汇编语言的兴趣。

第四、强调企业中需要懂汇编语言的人才。空口无凭,可以打开百度或Google的网页,输入“汇编语言 招聘”进行搜索就会发现的确有不少企业在招聘懂汇编的高级人才且待遇丰厚。亲眼见到上述企业的招聘广告,学生会深刻体会到《汇编语言程序设计》决非无用课程。

教学的实践表明:当学生明白了该课程的重要性和学习该课程的目的,学生们就会觉得学好该课程是很有必要的;而当学生们亲眼见到汇编语言在计算机维护等方面的实际应用和用汇编语言开发的与生活中密切相关的应用实例的演示时,他们就会体会到汇编语言的用途,激起他们的兴趣;最后当学生们看到网上不少企业在招聘懂汇编的高级人才且待遇丰厚时,学生们就会真正感受到汇编语言课程的魅力,激起他们更大的学习兴趣。

2)通过合理安排教学内容和充分利用多媒体教学的优势等方法降低汇编语言学习的难度,提高教学效果。

有了学习兴趣固然是好事,但如果在学习过程中遇到的困难太多或太大都会挫伤学生的学习热情。

而要想学习好一门课程,首先要选择一本好的教材。我们选择教材的原则是:结构清晰、主线特出,内容要有一定的深度和广度,所选例题要有代表性。根据该原则,我们选用普通高等教育“九五” 国家教委重点教材(沈美明,温冬婵 编著.《80X86汇编语言程序设计》. 北京:清华大学出版社, 2001.7)作为本课程的教材[3],该教材也得到了全国广大汇编语言教师的认可。经过多年的教学以及和学生的交流中我们发现,如果直接按照该教材的顺序教学效果不是很好。为了提高教学效果,作者在教学过程中做了如下四方面的改进。

第一,合理调整课程内容的先后顺序,将枯燥无味、需要大量记忆的内容分散到多个章节中讲授。例如:本书第三章 80x86的指令系统和寻址方式,这一章的指令太多,内容太杂,枯燥无味,要记忆的内容多。 若将该章中的串处理指令、控制转移指令等放到第五章的循环与分支程序设计中结合例题讲解效果更好,而将与子程序相关的指令放到第六章讲更合适,因为经过这样调换后,不仅避免了指令集中讲解时的指令太多,太枯燥,难记忆等问题,而且刚刚讲到的指令很快就能在例题中得到应用,学生对指令的理解和掌握会更加深入。第六章的dos系统功能调用内容也应该放到第五章中穿插讲授,这样提前的目的是为了让学生在实验中使用dos系统功能调用,因为上到第五章时就要求学生上机动手编写程序并用到这些知识点。

第二,充分利用计算机综合处理教学中的文字、声音、图象、图形、动画等教学信息,进一步优化《汇编语言程序设计》多媒体教学课件,从而降低汇编语言的学习难度。例如:初学者对于用汇编语言编写程序往往较难入门,可以首先对问题进行分析,用多媒体动画形式画出流程图,并用动画形式将每一步流程图与相应的实现该步骤的汇编指令一一对应起来,教学实践表明这样学生入门起来就要容易得多;再如:在子程序递归调用的讲解中,堆栈中的数据变化是学习的难点,很多学生被搞糊涂了,此时若将指令的逐条执行与相应的堆栈内数据变化情况采用动画的形式表现出来,学生就很容易理解这样难点内容了。像这样的例子还很多,由于篇幅有限,在此就不再列举了。

第三,抓住汇编语言的教学主线(即存储控制思想)进行教学。 汇编语言不像其他程序设计语言采用抽象了的数据,它采储存取控制的方式组对数据进行组织和操作,这既是汇编语言和其他程序设计语言的不同之处,同时也是这也体现出汇编语言与计算机硬件和操作系统之间的有着紧密联系,因此,汇编语言课程的教学主线是存储控制,该主线贯穿于整个教学过程。牢牢把握该主线,有利于掌握汇编语言程序设计的思想精髓和更好地抓住汇编语言面向机器的特点。

第四,采用案例教学法[4]进行教学。在教学当中,我经常使用案例教学法,教学效果很好。案例教学法就是教师使用与教学内容密切相关的实际案例来解决教学中的各种问题,以提高学生思考问题、分析问题和解决问题的能力,培养学生浓厚的学习兴趣的一种教学方法。运用这种教学方法,关键在于教师要准备大量与教学内容紧密相关的案例,并有计划、有意识、灵活地运用到教学实践中去,以取得预期的效果和目的。

3)增强实验内容的实用性和趣味性,增加汇编语言与高级语言混合编程的教学内容,建立合理可行的实验制度和考核方法。

对于任何一门计算机语言课程来说,实验都是教学中非常重要的一个环节,实验可以加深对理论知识的理解,提高学生的实践动手能力。

为了避免传统的程序三大结构、数据组织与数值计算、代码转换和数制转换等方面的枯燥无味的实验,我们将实验内容和实际应用相结合,如将汇编语言和计算机的系统维护等实际相联系,用汇编语言编写简单的设备驱动程序等等,增加图形化的实验内容等方法和手段,使实验变得实用有趣,增强学生动手的积极性和提高学生的动手能力。

另外,在实验中还要增加汇编语言与高级语言混合编程的教学内容。高级语言在软件开发中比汇编语言的使用要广泛的多,但是汇编语言有它自己独特的优点:占用空间小,速度快,可以与硬件直接打交道,而且与硬件直接打交道时汇编语言也是唯一的选择。因此要使汇编语言具有更多更好的应用性,就必须增加汇编语言与高级语言混合编程的教学内容,以引导学生在今后的实际应用程序开发中合理使用汇编语言开发出高效率的软件。

实验制度和考核方法的建立有利于进一步提高实验课的学习效果,实验课应使学生做到实验前预习,实验后总结,实验中逐个通过的方法。实验前预习是为了让学生在实验前对实验题目进行分析,查找相关资料,做好充分的准备以便保证学生在规定时间内完成实验;实验中逐个提高的方法是对每个完成实验的同学进行单独提3至4个问题,让其回答,只有回答正确才算该实验通过,这样做的主要目的是防止作弊和查找学生薄弱点;实验后总结则是总结经验和不足之处,达到进一步加深对相关知识点的理解和应用。上述三个环节在实验考核中分别占30%、40%和30%。教学实践表明建立实验制度和考核方法可以在很大程度上促进学生学习。

4)建立既注重期末考试结果又注重平时学习过程的课程考核方法

每门课程学习结束都需要对学生进行考核,有些同学平时不爱学习,经常采取考试之前突击学习、押题等临时抱佛脚的方法来应付,这样的学习方式有时能侥幸通过考试,但很显然学到的知识不牢固,不全面,考过之后很快就会忘记的。

为了防止这种现象的产生,在教学中采用“N+2”的考核方法,其中的“N”是教学过程中的考核次数或项目数,“N+2”中的“2”中的“1”是期末考试,另一个“1”是课堂笔记。针对每门课程, N不小于3且不大于5,过程考核可采用的形式有:作业、平时表现、单元(阶段)测试、期中考试、课程论文、课程实验、综合性实验等。一般来说课堂笔记占总分比例不得超过10%,期末考试占总分比例范围为40%~50%,实验占20%,其他的根据实际需要灵活选择。在这种考核方法下,那些临时抱佛脚的同学即便在期末考试中考了六七十分,但也会由于平时成绩不理想也无法通过该课程的考核,也就是说这种考核方法既注重期末考试结果又注重平时学习过程,因此那些原本平时不爱学习的同学在这种考核制度的要求下也不得不抓紧时间学习了。实践表明该考核方法的确行之有效,平时学习的同学越来越多了,知识的掌握程度有了明显的提高,补考的人数显著下降,有些班级甚至没有人需要补考。

3 结束语

本文是作者将自己在教学过程中如何激发学生学习兴趣,通过适当的方法和手段降低课程学习难度,重视和严格要求实验教学,建立合理可行的课程教学制度和考核方法,从而达到改善教学效果的一些方法做了初步探讨,作者深知要想取得更好的教学效果还需要广大教师付出更多的努力,进行更多的探索和广泛的交流。

参考文献:

[1] 陈晓东.《汇编语言》教学方法探讨[J].山西农业大学学报,2006,5(6):70-71.

[2] 掌握汇编仍然是技术高手的必经之路[J].程序员,2004,(10):108-112.

[3] 沈美明,温冬婵.80X86汇编语言程序设计[M].北京:清华大学出版社,2001,7.

汇编语言程序设计范文第8篇

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

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

一、引言

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

二、讲好第一堂课

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

三、教学内容的改革

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

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

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

四、教学方法的改革

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

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

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

if(x>=0)

?摇sign=0;

else

?摇sign=1;

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

CMP x,0

JGE L1

MOV sign,1

L1:MOV sign,0

L2:……

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

CMP x,0

JGE L1

MOV sign,1

JMP L2

L1:MOV sign,0

L2:……

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

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

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

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

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

参考文献:

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

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

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

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

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

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

汇编语言程序设计范文第9篇

【关键词】FORTH 汇编语言 中断程序

1 引言

汇编语言是人和计算机沟通的最直接的方式,它描述了机器最终所要执行的指令序列,所以汇编语言一直是计算机学科必学的一门基础课程。通过这门课的学习既能获得底层编程的体验,又能深刻理解机器运行程序的机理。FORTH是一种与众不同的计算机程序设计语言,采用自底向上的构造方式,用汇编语言编写核心单词,实现内部数据结构和解释/编译机制,构造最小的系统,然后将该系统运行在宿主机上,进而编译的其它高层单词,形成一个完整的系统。

本文是在研究了FORTH的自生成技术的基础上,自定义了一套汇编语言语法,并且构造出将自定义汇编语言转换为CPU机器码的编译器,讲解了自定义汇编语言的基本使用方法,最后以中断程序为例,介绍了自定义FORTH汇编程序的实现方式。

2 FORTH汇编语言和编译器的实现方法

基本的FORTH平台内不含产生机器码的汇编语言编译器,只是将一个用FORTH语言写的汇编语言编译器的源代码作为附件。一般我们可以使用这个编译器,但也可以自己按照自己的习惯构造自己的语法和编译器。

实现编译器,首先要制订语言规范。由于FORTH汇编语言并没有权威的规范,甚至有些要开发的目标芯片就还没有汇编语言标准可以借鉴,因此程序开发者完全可以编写自己的编译器和创造自己的规范。FORTH汇编语言的语法规范是模仿常用的汇编语言,只是将表达式写成“逆波兰”形式,即将操作符写在操作数后面。以8086汇编为例,将AX减去BX的内容,结果在AX中,标准的汇编语言为:SUB AX, BX ,在FORTH汇编语言规范中可以模仿标准的汇编语言规定为:AX, BX SUB,也可以采用这种写法:BX AX SUB,,不仅逗号移到了操作数那里,而且目的操作数也移到了右面。虽然FORTH汇编语言规范存在这种任意性,但如果存在标准的汇编语言,除了将操作符写在右面,还是尽量保持标准的风格,这样容易和别人交流。

实现FORTH汇编编译器,主要利用FORTH字“C,”、“,”和“Here”,它们分别是向程序区依次放一个字节的二进制指令、两个字节的二进制指令和给出存放下一个指令的地址。

以8086为例,无操作数的中断返回指令IRET,可以这样实现:

语法: IRET

实现: : IRET CF C, ; //将IRET的机器码CF一个字节放到当前的指令流中

单操作数的跳转指令JMP,可以这样实现:

语法: LLLL JMP //LLLL定义了转跳的地址

实现: : JMP E8 C, ,;

同样上面实现的FORTH含义是将JPM的机器码E8一个字节放到当前的指令流中,然后再把已经在堆栈中的要跳转的地址作为16位偏移放到机器码E8之后,形成完整的跳转指令。

通常每个FORTH软件平台都有这个平台的汇编语言规范和编译器,但是如果要生成异构的FORTH系统,重新制定新CPU的汇编语言规范和编译器就是必须要完成的任务。

2.1目标代码的存取

由于一般FORTH目标系统的核心规模较小,16位的系统不超过64KB,32位的系统也用不完内存空间,因此可以直接在宿主机FORTH系统管理的内存中划出一块高内存区域用于目标代码的存取。假如P!和P@是原内存的写入和读取字,目标代码区域的起点是C000,则目标代码的存取字可以简单的定义为下面的算法:

C000 CONSTANT Origin

// 定义常数 Origin,它的值是目标代码区域的起点

: ! Origin + P! ; : @ Origin + P@ ; // 定义目标区的数据存取字

同样也可以产生按字节的存取字C!和C@。

2.2 机器码写入

汇编语言所产生目标机的机器码是顺序存放的,其中跳转指令是代码的当前位置参考计算的,因此可以设置一个当前代码地址指针CP实现:

Variable CP : Here CP @ ; // Here字给出下一个机器码存放的地址

: C, Here C! CP @ 1+ CP ! ; // 放一个字节的机器码到目标区

: , Here ! CP @ 2+ CP ! ; // 放一个16位字的机器码到目标区

有了这些FORTH字,可以不用助记符和汇编,直接把二进制代码一个字节一个字节地生成目标码。

2.3 向前跳转地址

机器码中最重要的指令就是根据条件进行转移的指令。由于FORTH语言的工作过程是按照输入流一个字、一个字顺序解释执行的,因此向前转移时目的地址是已知的,实现起来比较简单:以目标地址为值定义一个常数,然后在生成转移指令时引用它。

汇编语言程序设计范文第10篇

摘要:本文从教材建设、课程教学内容改革、教学方式手段改革、实验平台创新、实验改革等方面介绍了我院在“汇编语言程序设计”课程的教学改革实践。

关键词:汇编语言程序设计;实验平台;教学改革

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

[2] 肖川. 主体参与:自主学习的要义[J]. 人民教育,2003,(22).

[3] 张雪兰等. 汇编语言程序设计(从DOS到Windows)[M]. 北京:清华大学出版社,2006.

上一篇:高级语言程序设计范文 下一篇:三维动画专业范文