汇编语言教学的实践与思考

来源 :考试周刊 | 被引量 : 0次 | 上传用户:lvzhenzhuo112
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:汇编语言是计算机相关专业的重要的专业基础课,也是公认的难教难学的课程。本文从汇编语言本身的特点、学生对学习汇编语言重要性的认识以及教师的教学等三个方面分析了造成这一现象的原因,并提出了一些解决办法。
  关键词:汇编语言 重要性 debug 教学方法
  在计算机及相关专业的专业基础课中,汇编语言有着重要的地位。它是认识计算机系统的重要途径,是一门实践性很强的课程。掌握它有助于提高学生对计算机系统工作原理的理解、研究、设计和应用能力。另外,它也是微机原理、单片机原理、操作系统、编译原理等课程必须的先修课。
  但是,在对汇编语言教学过程中,却遇到了困难:许多学生在学习汇编语言的过程中往往感觉找不到头绪,认为汇编语言是一门难学的课程,比较抽象,不像应用型课程非常直观与生动,在学习汇编语言时积极性不高。通过对汇编语言课程几年的教学实践,我认真思考分析了造成汇编语言难教难学的原因,并探索着找出了解决问题的办法。
  
  一、汇编语言本身的特点使得它难教难学
  
  汇编语言属于低级语言,与具体的计算机结构密切相关,编写程序时不仅要考虑待解决问题本身的逻辑,还要考虑计算机硬件资源的使用,另外调试程序也很复杂。
  1. 与硬件的相关性。汇编语言硬件依赖性强,它要直接使用CPU的资源,相对高级程序设计语言来说,它显得难掌握。
  不同类型的CPU有不同的机器指令系统,也就有不同的汇编语言。所以,除了同系列、不同型号CPU之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如小型机和微机等)CPU之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性比高级语言程序低。
  2. 编写程序的复杂性。汇编语言功能有限,又涉及寄存器、内存单元等硬件细节,所以编写程序比较繁琐。
  汇编语言是一种面向机器的语言,其汇编指令与机器指令基本上是一一对应的。所以,汇编指令也同机器指令一样具有功能单一、具体的特点。要想完成某项任务,就必须安排CPU工作的每一个步骤,这就使得编写汇编语言程序比较繁琐、复杂。
  3. 调试程序的复杂性。在通常情况下,调试汇编语言程序要比调试高级语言程序困难。
  首先,汇编语言指令涉及到机器资源的细节,在调试过程中,要清楚每个资源的变化情况。比如在调试分支或者循环结构的程序时,往往要根据前一条指令的执行结果来决定是否发生转移,这时就要清楚前一条指令执行以后标志寄存器中各个标志位的状态。其次,程序员在编写汇编语言程序时,为了提高资源的利用率,往往会使用各种技巧,而这些技巧完全有可能破坏程序的可读性。最后,高级语言程序几乎不显式地使用转移语句,但汇编语言程序要用到大量的、各类转移指令,这些跳转指令大大地增加了调试程序的难度。如果在汇编语言程序中也强调不使用转移指令,那么汇编语言程序就会变成功能单调的顺序程序,这显然是不现实的。
  
  二、学生对学习汇编语言的重要性认识不够
  
  从19世纪80年代开始,伴随着编译器技术的发展,CPU性能的不断提升,汇编语言的名声却每况愈下,人们开始把这种语言判定为“dead language”,认为不再需要这种语言了,学生没有认识到学习汇编语言的重要性,甚至把这门课当成大学教学与时代发展脱钩的典型例子,对它产生了心理上的排斥,失去了学习这门课的兴趣,更谈不上主动地学习。在教学过程中,我们要纠正学生的错误认识,教育学生汇编语言“低级”并不意味着“无用”。事实上,正因为汇编语言的“低级”,程序员用汇编语言编写程序时,才有可能充分发挥自己的聪明才智,对机器内部的各种资源进行合理的安排,编写出运行速度快、指令序列短小的目标程序。
  汇编语言在今天已经不再像过去一样被普遍地使用了,但是学习汇编语言会帮助你明白计算机是如何工作的。在使用高级语言编程时,并不一定非得用汇编语言做什么,而使用汇编语言的经验可以让你明白什么样的代码在机器上运行更加高效。汇编语言的根本作用在于解释硬件、解释硬件的那些可编程实现的行为。使用高级语言而不是汇编语言,目的是为了提高编程效率;使用汇编语言而不是高级语言,目的是为了对硬件描述,实现操作系统无关性,应用于各种独特的领域。
  
  三、在教学方面存在的问题及解决方法
  
  学校和教师首先应当认识到学习汇编语言的重要性,才能潜心研究提高汇编语言教学质量的方法。下面从教学形式、教学过程设计和教学方法等方面分析当前汇编语言教学方面存在的问题并给出解决方法。
  1. 在教学形式方面。现在许多学校把“汇编语言”与“微机原理”课程结合起来,作为其中的一个重点内容。这种教育形式侧重指令系统以及基本汇编语言伪指令、编程方法,与硬件相结合是其最大的优势。但受限于学时和课程重点,汇编语言的内容未能全面展开。这种方式适合于偏重硬件和接口应用开发的专业。对于偏重软件、程序开发方面的专业,应单独作为一门课程。这种教学形式可以比较全面地掌握指令系统、汇编语言各种程序结构设计、实用的混合编程等,有利于比较深入的学习。在学校教学中,应根据学生的专业选择适当的教学形式。
  2. 在教学过程设计方面。一般的汇编语言教学过程忽视了培养学生的实践能力和解决问题的能力,课堂气氛沉闷,学生学习枯燥。可考虑从下面三个方面来提高教学效果。
  首先,培养学生对汇编语言的兴趣。在整体的教学设计上,一开始就应当让学生明白为什么要学习汇编语言,继而对汇编语言产生兴趣。在汇编语言教学的开始,要通过具体的程序,使学生真正认识到汇编语言相对于其他语言特别是高级语言的优点。比如,计算z=x+y,用C语言编写程序要短得多,也易于理解,但是比较一下它们各自生成的.exe文件,就会发现汇编语言的妙处。C语言编写的源程序经过编译连接以后生成的.exe文件占用9506个字节,而汇编语言编写的源程序经汇编连接后生成的.exe文件只占用640个字节,相差14.85倍。这样汇编语言的空间效率就很直观了,学生对此也产生了兴趣。
  其次,适当调整教学次序。指令系统是汇编语言中最枯燥的部分,许多教材为了系统地介绍指令系统,往往将它们集中在一起,并且放在课程的前面。大量指令一下子呈现在学生面前,学生学得一知半解,不知道指令在编程中的作用到底是什么,记忆不牢固,学了后面的忘了前面的。这样往往会导致学生产生厌学情绪,影响教学效果。在教学时,尽量将指令穿插到其他内容中,先通过具体的程序介绍汇编语言程序的格式,给学生一个总体的印象。将来学习其他内容的时候(顺序、分支、循环结构以及子程序等等)分散讲解指令,并通过对程序的调试增强对指令的理解,便于学生记忆。
  最后,要强调实践环节。汇编语言是一门实践性很强的学科,只有通过实际编程和上机实践才能掌握程序设计技术,并使其达到较高水平。教学过程中适当增加上机实践的课时,让学生在实践过程中学习和体会汇编语言。另外,要让学生掌握debug的常用命令,学会使用debug调试程序的方法,引导学生注意程序执行时用到的内存单元、各个寄存器以及标志寄存器中各个位的变化。这样,有利于学生更好地理解指令,掌握编程方法。
  3. 在教学方法方面。由于汇编语言本身的特点导致了学习难度大,我们更要选择适当的教学方法以帮助学生更好的掌握汇编语言。
  首先,在汇编语言的学习过程中经常要分析数据在内存中的存放情况(比如讲解数据定义伪指令、中断向量表的作用等),这时,图示法能够达到事半功倍的效果。有这样一道典型题目:执行下面的程序段后,分析AX中的内容是什么。
  TABLE DW 10,20,30,40,50 ......
  LEA BX,TABLE
  ADD BX,3
  MOV AX,
  把这道题目呈现给学生时,很多学生想当然地认为,BX中一开始存放的是TABLE的首地址,也就是指向了第1个数据,加上3,则指向了第4个数据,用寄存器间接寻址得到的数据一定就是40了。但是如果画出TABLE在内存中存放的示意图。就会发现结果是错误的。TABLE定义为字类型,那么一个数据占用两个字节单元,在内存中以二进制形式存放。为了方便记数,我们用16进制形式表示。通过示意图我们很清楚地看到正确的答案应该是1E00H。
  其次,学生学习汇编语言以前已经学过了至少一门高级语言,在学习汇编语言的过程中就可以使用类比法。比如循环结构的程序由四个部分组成,分别是初始化部分、工作部分、修改部分和控制部分,我们可以和C语言的for语句进行类比。for语句的格式是:
  for(表达式1;表达式2;表达式3)
  语句;
  如果把汇编语言的四个组成部分放到for语句中,则变成:
  for(初始化部分;控制部分;修改部分)
  工作部分;
  这样一比较,循环结构的组成就很容易理解了。这样做学生既加深了对新知识的理解,又复习了学习过的知识。
  再次,利用对比法来形成比较。讲到“循环程序的效率”这一知识点时,我们知道,选择长度短的指令可以提高程序的效率,例如将寄存器AX清零,可以采用下面两种不同的方法:
  MOV AX,0和XOR AX,AX
  第一条指令长度为3个字节,执行花费4个时钟周期,第二条指令长度为2个字节,执行花费2个时钟周期。这样对比,就可以直观的得出结论。
  另外,对“存储器操作数寻址方式”的讲解也可以使用对比法。比如完成同一个功能,分别用不同的寻址方式实现,有利于学生对各种寻址方式的理解。
  最后,可以利用多媒体课件演示难以理解的内容。比如讲述汇编语言中寻址方式、子程序调用的堆栈变化过程、模拟中断调用动态过程时,运用多媒体动画教学,可使学生一目了然地看到指令执行时内存及寄存器的变化过程,加深对问题的理解,收到将抽象的问题形象化、复杂的问题简单化、枯燥的问题生动化的效果。
  以上从三个方面分析了造成汇编语言课程难教难学的原因,并提出了一些解决的办法,希望能够起到抛砖引玉的作用。
其他文献
摘要: 文章对我省体育学院体育教育专业原课程方案与新课程方案进行了研究,阐述了我省体育教育专业课程方案的现状,同时提出了几点思考。  关键词: 体育教育 本科 课程改革    前言    21世纪是以知识经济为主体经济、以创造为各行各业的灵魂、以信息化为社会特征的时代,21世纪的社会对人才的质量提出了新的更高的要求。随着教育“面向现代化、面向世界、面向未来”指导思想的逐步贯彻落实和我国学校体育
目的过量对乙酰氨基酚(APAP)可诱导细胞死亡诱导因子(AIF)依赖性肝细胞死亡,但作用机制还不清楚。本研究探讨了在对乙酰氨基酚诱发小鼠急性肝损伤的过程中,程序性坏死关键调控因子受体相互作用蛋白激酶1(RIP1)在AIF介导肝细胞死亡中的作用。方法(1)为探讨GSH耗竭对APAP诱导肝脏RIP1和RIP3上调的影响,将小鼠统一禁食12h后进行腹腔注射APAP(300mg/kg),分别在不同的时点(
校本课程是以学校为基础开发的课程,它是充分展示办学优势和特色,促使学生和谐发展,培养和造就“创造新世纪的人”的一项基本建设。校本课程的开发,为学生充分发展提供了空间,满足了学生全面发展与张扬个性的需要,有助于学校办学目标的实现。    一、以绿色实践基础为特色开发校本课程    1.发挥我校“三小”实践基地独特优势,开发校本课程  在西陵区十几所小学中,我校的校园环境精致优美,被评为“绿色学校”,
摘要:自从1998年教育部新的本科土木工程专业教学目录出现后,就设置了土木工程概论这门课程。针对这门课程的教学,该如何应对,对教师和学生都是一个磨合和思索的过程。概论课程当中涉及的面非常广,安排的课时又很有限,笔者认为应该在土木工程前言方面下功夫,让学生真正意识到自己作为土木工程中生力军的使命。  关键词:教学意义 教学内容 教学方法 教学重点    1《土木工程概论》课程开设的意义    
现如今,我国不断加大医疗改革的力度,旨在为社会大众提供一个健康优质的医疗环境,解决大众看病难的问题.基于这一背景,各大医院必须积极改革自身的卫生经济管理工作,然而在具
固定资产占据着中小学学校资产价值总额中的绝大部分,它是学校赖以生存和发展的重要物质基础,固定资产管理是财务管理的重要组成部分,能够科学有效地搞好固定资产的管理,保证其具有安全和良好的使用状态,创造美好的环境,对教育教学会有很大促进作用。    一、 中小学固定资产管理现状    1. 固定资产管理混岗现象较为严重。普遍存在一人兼职互不相容的多岗现象,违背互不相容的职务相互分离的会计原则,账、物管理
摘要:随着旅游业的迅速发展,我国旅游业对旅游人才,特别是旅游外语人才的需求激增,而人才的培养却不能适应市场的需要,暴露了许多问题。本文描述了我国旅游外语人才培养的现状,并针对此现状分析了我国旅游外语人才培养中的难点问题。  关键词: 旅游外语 外语人才 人才培养  自改革开放以来,我国经济快速发展,经济的发展推动了我国旅游业的发展,旅游业在我国迅速崛起,已成为我国国民经济的重要组成部分,是一个
在学校工作总要接触到学生,面对一群处于青春期发育过程中的少男少女,首先应该了解他们的生理和心理发育特点,然后才能根据具体情况来解决和处理问题。我在这些方面作了一些工作,有一些体会。  中学工作中主要的就是充分启发学生,调动学生的积极性,引导学生学习知识,这个工作一直也是比较难做的,如果适当考虑到学生的心理因素,也许会收到意想不到的效果。在教学过程中,应及时树立学生的信心,尤其是对那些在学习的某一方