HI,欢迎来到学术之家股权代码  102064
0
首页 精品范文 汇编语言

汇编语言

时间:2022-05-02 10:31:27

开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇汇编语言,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。

汇编语言

第1篇

栈是限定仅在表尾进行插入和删除操作的线性表。“栈”者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。

栈是计算机中经典的数据结构,栈就是限制在一端进行插入删除操作的线性表。栈有两种最重要的操作,即pop和push。

(来源:文章屋网 )

第2篇

(苏州大学计算机科学与技术学院,江苏苏州215006)

摘要:分析汇编程序实验课中碰到的若干问题,提出在VC++开发工具中嵌入汇编,在汇编程序中采用结构化程序方法、借助反汇编进一步学习高级语言、以实际应用激发学生学习兴趣3个教学实践,为汇编语言实验教学提供参考。

关键词 :汇编语言;程序设计;反汇编

文章编号:1672-5913(2015)15-0097-03

中图分类号:G642

基金项目:国家级计算机与信息技术实验教学中心资助项目( 50118003)。

第一作者简介:刁,男,实验师,研究方向为中文信息处理、机器学习,hjdiao@suda.edu.cn。

1 背景

汇编语言是一种面向机器的程序设计语言,在高等院校计算机专业的学科中,是一门软件与硬件相结合的基础课程。通过汇编语言,在硬件方面可以了解CPU、BIOS等编程结构,在软件方面可以理解操作系统、编译原理等底层操作。因此,学生学好汇编语言程序设计,不但能更好地掌握计算机工作原理、微机编程接口,还能进一步加深对操作系统和高级语言的理解。

2 汇编语言实验课程现状

(1)汇编语言编辑编译麻烦。学生早已习惯了C++/Java等高级语言的可视化集成式开发环境,而汇编实验还采用MASM、LINK等命令行编译连接工具,汇编程序书写时也不像高级语言那样具有上下文智能提示功能的编辑工具,对用惯了高级语言编程工具的学生来说,命令行编译连接工具给汇编实验入门带来一定的困难。

(2)汇编语言程序编写繁琐。汇编语言是面向机器的语言,汇编指令与机器指令之间存在着密切的关系,因此其语言表达能力和方式受限于机器的指令系统。书写汇编程序不仅需要在程序逻辑上花费精力,还要在内存分配、寻址和访问上投入甚多,相比于高级语言,其书写繁琐很多。就拿C语言中经典的“Hello World”程序做比较,在80×86汇编程序中,首先要定义存放字符串的数据段并为其字符串存储空间,然后定义堆栈段,再定义代码段以及汇编编译指令和代码指令,不但汇编语句比高级语言繁琐,程序结构也比高级语言冗长。

(3)汇编语言程序调试困难。汇编语言提供给程序员很大的访问机器资源的“能力”和程序设计的灵活性,学生在汇编程序中可以通过各种技巧使用资源。因此,在调试程序的时候,不仅要正确理解当前指令的含义,还要清楚指令中使用到的资源的状态以及指令执行完对资源的影响。汇编语言的调试工具也不像Java/C#等高级语言那样,有智能化的表达式监控窗口以及调试步骤回退功能。

(4)汇编语言结构条理性差。高级语言中任何程序逻辑都是由顺序、分支、循环3种结构组合而成,而且3种结构进行嵌套时都通过分层次缩进的方式进行对齐。然而在汇编程序中一方面没有定义这3种逻辑结构的规范,另一方面汇编程序书写是一行一条语句,语句与语句之间按行对齐,并不按嵌套缩进的方式对齐。因此,学生在写汇编程序时自由度比较高,分支和循环在汇编中只能通过各种转移指令实现,如果这些转移指令使用不规范,不但使程序的可读性很差,而且导致整个程序结构很凌乱,从而演变为“面条式”代码。

3 汇编实验改进实践

3.1 VC++开发工具中嵌入汇编语言

为了降低学生汇编实验入门的门槛,教师可以采用学生熟悉的VC++编程工具,以C语言嵌入汇编语句的方式先开展汇编实验。例如,设X和y均为16位无符号数,用加法指令实现求解表达式SX+Y值的程序。用C语言嵌入汇编语言的代码如图1所示。

在C语言中嵌入汇编语言比书写完整的汇编程序在结构上要简单很多,学生可以把重点放在汇编指令和寻址方式的学习上,通过这种实验方式也教会了学生用C语言和汇编语言编写混合程序的方法。等学生熟悉并掌握了完整的汇编语言书写格式后,再使用命令行的编译和连接工具进行汇编实验。

3.2 在汇编程序中采用结构化程序方法

随着汇编实验的开展,汇编实验越来越难,汇编程序逻辑也越来越复杂。如果这个时候学生不能养成良好的编程风格,势必会造成程序代码混乱、汇编实验效率低下的问题。因此,教师可以在汇编教学实验中引入高级语言中的结构化程序设计的方法,让学生严格按照结构化的套路设计程序,例如,写一个把字符串中的所有大写字母改成小写字母的程序。字符串大写转小写的流程如图2所示。

字符大写转小写流程的逻辑结构由while循环和在while循环中内嵌的一个单分支结构构成。因此,在编写上述程序时可以用汇编语句先构造while循环结构,再在while循环结构中嵌入单分支结构,其他的顺序性汇编代码只要填写到相应的结构中就可以了。两种结构的代码如图3所示,这样整个程序就可以按结构化方式进行设计了。这样不但提高了学生编写程序的效率,还进一步加强了学生对高级语言中的各种分支和循环结构在编译器层面的理解。

3.3 借助反汇编进一步学习高级语言

结构化汇编程序设计让学生初步了解了分支和循环等结构在编译器层面的实现。利用汇编或反汇编输出,学生们还可以进一步了解高级语言中一些特性在编译层面的实现。例如,关于C语言程序中局部静态和动态变量编译实现上的区别,事例C语言代码经汇编输出后如图4所示。

从图4中可以看出“a=3”转换为汇编语言后对变量a采用直接寻址,而“_?a@?l??main-@@9@4HA”这个字符串是在段名为“BBS”的数据段中定义的,代码如图5所示。

“b=4”转换为汇编语言后对变量b采用寄存器相对寻址,“b$”被定义为常量,其值为-4,而“ebp”则是程序调用栈基址指针。因此,从汇编后的代码中学生可以看出局部静态变量存放在数据段中,函数执行结束后其存储空间不会被回收,而局部动态变量则存放在程序调用栈中,函数执行结束后其存储空间则被调用栈调整出去。学生通过对高级语言汇编或反汇编输出,还能进一步了解关于一维数组的指针和一维数组首地址的指针以及类中普通成员函数和虚函数等编译层面的区别。

3.4 以实际应用激发学生学习兴趣

兴趣是学习最好的导师,教师要通过有应用价值的实例激发学生学习的兴趣,让学生了解汇编语言的用武之地,例如,可以向学生讲解硬件驱动、屏幕取词、单片机开发、缓冲区溢出攻击的原理;同时让学生写一些简单而力所能及的小程序,如基于280单片机的电子广告牌控制程序,这样一方面提高学生汇编实验的动手能力,另一方面也加深了学生对操作系统、微机接口等相关课程的理解。

4 结语

实践结果表明,与往届学生汇编实验情况对比,使用C语言中嵌入汇编代码方式的学生能很快上手开展汇编实验,明显降低了学生汇编实验入门的门槛,提高了学生汇编实验的效率;通过汇编程序中采用结构化程序的方法,学生能快速写出多重嵌套的汇编程序,能明显增强学生阅读和编写复杂汇编程序的能力;借助反汇编学习高级语言只能提高基础知识较好的学生各科知识点串联和贯通的程度,部分学生由于基础知识较差,融会贯通多科知识点还较困难;以实际应用激励学生也只能让少部分可以静下心来刻苦钻研的学生比较感兴趣,部分学生感觉题目综合性强,涉及知识点多,课后不认真钻研,很容易就会对实际应用失去兴趣。经过多方面尝试,教学虽然取得一定的效果,也暴露出一些不足,这些也成为我们汇编教学和实验中需继续思考和解决的问题。

参考文献:

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

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

第3篇

Abstract: Assembly language has complex instructions and many provisions which lead to the weariness of students. In order to improve the teaching effect of assembly language programming, this article explains how to easily learn assembly language from the comparative perspective of English and C language grammar in order to improve the interest of learning.

关键词: 单词;词法规则;语法规则;语法成分;语句

Key words: word;lexical rule;grammar rule;grammatical component;statement

中图分类号:TP313 文献标识码:A 文章编号:1006-4311(2014)19-0193-02

1 绪论

作为最接近机器语言的编程语言,汇编语言可以称得上是最接近于计算机操作本质的语言。其直接面向硬件的特性,使得在使用汇编语言编程时,能够清楚感知计算机的运行过程和原理,充分认识应用程序和计算机硬件之间的联系与交互。相对于高级语言来说,汇编语言对编程者思维逻辑的锻炼表现尤为突出,对于形成软、硬兼备的编程知识体系具有举足轻重的作用,而且指令集合简约,指令操作直接。很多硬件设施的嵌入式编程使用的都是汇编语言,因为汇编语言更直接,更有效率。例如现在很多数码产品赖以生存的芯片、主板等,都包含了嵌入式程序,而这些程序中,汇编语言的使用是非常普遍和相当重要的。对于计算机专业语言类课程的学习来说,从汇编语言开始学习更符合循序渐进的学习原理。特别是在计算机技术专业的学习中,汇编语言具有十分重要甚至说不可代替的作用。因学生有英语、C语言学习的基础和习惯,故本文从英语、C语言语法对比的角度,说明如何轻松学好汇编语言,以便更好地由英语学习、C语言学习自然过渡到汇编语言学习。

2 汇编语言课程的特点

汇编语言是计算机能提供给用户的最快而又最有效的语言,同时能够利用计算机所有硬件特性并能直接控制硬件。所以高级语言简单、易学且开发效率高,而汇编语言复杂、难懂、开发效率低。优点:①用汇编语言所编程序时空效率高。由于汇编语言本质上就是机器语言,可直接、有效地控制计算机硬件,因而与高级语言相比,容易得到运行速度快、执行代码短、占用内存空间少的高时空效的目标程序。②用汇编语言能设计出高级语言无法实现的程序。正是由于与机器的密切相关性,使得汇编语言能充分利用计算机的硬件特性,编写出与硬件紧密相关而高级语言又无法实现的程序。缺点:①难学、难理解、难编程、难调试、难维护等。②汇编语言程序可移植性差,它是面向机器的语言,不同的机器CPU不一样,一个CPU一个指令系统,硬件CPU的不兼容导致程序移植困难。

3 英语与汇编语言的对比(表1)

例如以下程序:

Data segment ;data段开始

X dw 10,20,50,70,-90 ;data段正文

Data ends ;data段结束

Code segment ;code段开始

Assume cs:code,ds:data

Main: mov ax,data

Mov ds,ax

Mov bx,offset x

Mov cx,5 ;code段正文

Mov ax,0

L: Add ax,[bx]

Add bx,2

Loop l

MOV AH,4CH

Int 21h

Code ends ;code段结束

End main ;整个程序书写结束,从语句main开始执行

该程序的功能是求数据10,20,50,70,-90的累加和

4 单词的种类

4.1 常量(常数)单词 ①10进制整形常量。词法规则:以D结束(D可省略),由0-9构成 如 123D,456。②16进制整形常量。词法规则:以H结束,由0-9,A-F构成 如 123H,456H。③8进制整形常量。词法规则:以Q结束,由0-7构成 如 101Q,456Q。④2进制整形常量。词法规则:以B结束,由0-1构成 如 101B,110B。⑤字符型常量。词法规则:单引号括起来的字符,其值为其ASCII码如‘1’的值是41H,’AB’的值是4241H,’ABCD’的值是44434241H,字符顺次存放,其值是低位在低地址部分。

4.2 名字单词 词法规则:以字母或下划线开始,由字母,数字,下划线构成的串。如xyz,flag,名字可以是段名,子程序名,指令的名字,常量名,变量名,寄存器名等。

4.3 运算符单词 算术运算符:如+,-,*,/。伪指令运算符:如offset,seg,xor。

4.4 操作码单词 区分不同的操作(运算),含义必须硬记。如ADD(加法),SUB(减法),MUL(乘法),DIV(除法)。

5 语法成份――表达式

语法规则:由常量,运算符,括号,名字构成。如123+456+x,其中最常用的表达式有:①100:数据100。②[100]:100号单元,100不是数据,是地址,100号单元的内容是数据。③BX:BX单元。④[BX]:BX所指向的单元,并非BX单元。⑤10[BX]或书写成[10+BX]:BX所指向的单元,下10个单元。⑥[SI][BX]或书写成[SI+BX]:BX所指向的单元,下SI个单元。⑦10[SI][BX]或书写成10[SI+BX]或书写成[10+SI+BX]:BX所指向的单元,下SI个单元,再下10个单元。

6 语句格式

自然语言格式是:动词(做什么)宾语(对谁做)状语(怎么做)。汇编语言格式是:动词(做什么)宾语(对谁做),省掉状语(运算结果怎么办,隐含给出)。

语法规则:[名字][:]操作码目的操作数,源操作数;注解。表示做何种操作的代码称为操作码,参加操作的数称为操作数,操作数无非是常量,名字,表达式。存放结果的称为目的操作数,仅参加运算的数称为源操作数。运算后,目变源不变。

语义规则:目的操作数操作上源操作数,结果送到目的操作数(运算结果怎么办,隐含给出)。

如 ADD AX,BX表示AX的内容加上BX的内容送AX,(AX)+(BX)送AX。

7 汇编语言与C语言的比较(表2)

8 结束语

计算机由硬件软件两部分构成,汇编语言可直接在硬件层上编程序,高级语言有编译程序,该软件层遮盖了硬件层,使得用户看不到硬件,看到的只是编译程序的语法约定。故学好汇编语言,对于理解计算机内部运行机制及产品开发尤为重要。

参考文献:

[1]王成耀.80X86汇编语言程序设计(第2版)[M].北京:人民邮电出版社,2008.

第4篇

关键词:教学模式;汇编语言;虚拟PC;模拟器

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

1引言

“汇编语言程序设计”是高校计算机、自动化、电子、通信等专业必修的一门主干课程,尤其是对计算机专业来说,它是一门体现软硬件结合的基础课程。因此,学好汇编语言,不但能使学生以后能更好地理解计算机的组成及工作原理、了解计算机内部运行机制,还能为将来进行程序设计打下良好的基础;同时它对学习“微机原理及接口技术”、“操作系统”等后续课程有非常重要的作用。

2当前教学现状及存在的问题

汇编语言与计算机有着密不可分的关系:汇编指令与机器指令一一对应;能直接操作系统硬件。同时,汇编语言目标程序短、运行速度快,相对于机器语言来说便于书写、阅读和调试,因此从其诞生伊始就迅速地替代了机器语言,成为程序设计人员的最爱。经过数十年的发展,汇编语言早已广泛应用于程序优化、软件安全、系统工具的编写等各个方面。当前,几乎每个高校的计算机及其相关专业都把汇编语言程序设计作为专业必修课向本科生开设。然而,经过实践教学发现,由于其先修课程少,课程本身指令复杂,规定繁多,学生往往感到乏味厌学。这样常常导致教师教得累、学生学得烦,教学效果明显欠佳。

概括起来,目前“汇编语言”课程教学中存在的主要问题有如下几点:

(1) 学生的课程认识不正确

学生往往不知道学习该门课程的必要性。在开设这门课程之前,往往已经先修了C语言课程,而C语言明显比汇编语言具有更好的逻辑性,更接近于自然语言,更符合人类的思维方法,更简单易懂,应用更广泛。相反,汇编语言指令琐碎,知识点太多,学习战线太长,这样学生往往会由苦学到厌学,最后不学。当然,造成这种情况的原因除了“汇编语言”课程本身的特点外,任课教师引导失误是主要原因。

(2) 学生的学习方法有偏差

汇编语言复杂难学,是一门非常重视基础的课程,如要想学好指令,必须扎实理解其寻址方式。而学生在学习中,不重视基础,往往学了后面忘了前面,不去认真理解,而往往死记硬背,结果事倍功半。例如学完寻址方式后,再学习数据传送指令时,还有较多的学生写出两个存储器之间直接传递数据的指令,很显然这是基础不牢造成的。

(3) 教师的教学手段存在缺陷

传统的板书式教学方式正逐渐被多媒体教学手段所取代。多媒体课件信息量大、生动直观,在很大程度上激发了学生的学习兴趣,提高了教学效果。但其缺点也是明显的:信息量大往往使学生对知识消化吸收困难,找不到重点,理不出头绪。而且采用多媒体方式,学生往往产生一种依赖情绪,一旦遇到困难就想课后看课件,从而导致注意力分散,使得问题不能得到及时解决。

(4) 实验和实践环节重视不足

实验和实践环节对于学好汇编语言来说是非常重要的。学生只有经过上机实验和课后实践,才能很好的理解教科书上的内容,从而打下坚实的理论基础,反过来才能更好地指导实践。目前的上机实验时间往往很短,常常是学生才刚刚有点入门,实验环节就结束了;且课外实践环节几乎没有,导致学生即使课内学的再好也不会应用。

3解决方法研究与探讨

(1) 强调学生对课程的正确认识,端正学生的学习态度。

汇编语言指令采用助记符等符号书写,与机器指令一一对应,比机器指令容易记忆和理解。通过学习和使用汇编语言,我们能够感知、理解机器的逻辑功能;实践中向上可以理解软件,向下可以感知硬件。因此在课程讲述过程中,我们应不断强调:学习汇编语言是理解计算机系统的最佳起点和最有效途径;在实际应用中,汇编语言在调试程序或开发底层内核程序方面都有较大的竞争优势。除此之外,教学中还需要例举一些大家比较熟悉的应用汇编语言的实例,让学生们感觉到汇编语言的重要性。这一环节,也可让学生们课后自己去图书馆或网上查找资料,然后课内组织大家一起讨论。学生们一旦理解了汇编语言的重要性,自然会端正自己的学习态度。课堂教学中,要鼓励学生打好基础,引导学生不断回忆以前的内容,使他们能自己发现问题,然后尽量用简单的例子对问题进行讲解。

(2) 指导学生采取正确的学习方法,培养学生的学习兴趣。

在实验课程中及课后学习中,积极引导学生对汇编语言的学习兴趣:指导学生编写一些平时常见的并且有实际应用功能的程序,如文件加密程序;让学生阅读或尝试编写一些有趣的小游戏,如迷宫小游戏;让学生阅读并用自己的方法修改别人的源程序,如对已有程序进行优化,比较谁的程序最简单高效;指导学生使用反编译工具对较小的软件进行反编译,然后对结果进行分析。

(3) 采用丰富的教学方法和教学手段。

将课堂教学、自主学习、网络教学等有机地结合起来,并充分利用多媒体教学手段提高教学效率和教学效果。在教室中,将多种教学方法有机地结合起来,通过电子教案、软件仿真等手段,让学生边学习、边实践,引导学生自己发现问题、思考问题、解决问题。在讲解不易理解的问题时,应放慢速度,除用多媒体课件直观演示外,应尽量结合板书讲解,这样更有助于学生对讲述内容的消化吸收。同时,在教学中应多采用类比的方法,尽量用生动的语言、鲜活的事例对比讲解某一问题,既能激发学生的学习兴趣,又使其加深对内容的理解。

(4) 增强实验环节,做一些实际项目 。

在实践教学中,积极创造学习环境,挤出时间加强实践环节和编程上机操作的训练。实验室硬件资源有限,学生上机实验次数受限,因此在学习masm等基本汇编工具基础上,指导学生课外利用一些软件模拟工具,如emu8086等进行汇编程序的学习。这些软件基本上都结合了先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),有的还有循序渐进的指导工具。它们都是可视化的环境,可以完全模拟计算机硬件系统。由于模拟器在虚拟PC中执行程序,因此它不会去存取实际硬件,程序运行中可以随时看到各寄存器、标志位、存储器单元的状态,不但可以很方便地进行程序的调试,还可以对计算机硬件进行深层次的了解,而且这些软件完全兼容Intel 的后继处理器,包括Pentium II、Pentium 4等等。图1就是采用emu8086可视化8086模拟器调试汇编程序的画面。

另外,在实验过程中,可以将学生分成若干组,各组间互相进行提问、讲解和讨论;各组在课后可以自己寻找感兴趣的题目或实际应用项目(如广告牌等)进行实践,这样就能明显提高学生的动手实践能力。

4结束语

基于以上的考虑,我们进行了教学改革的尝试,通过一段时间的实践取得了较好的效果。既加深了学生对课程的理解和掌握程度,同时又使教师加强了对该课程的教学能力。当然,良好的教学效果是我们永远追求的目标,因此在今后的教学中,我们还需要不断进行探索、研究和尝试,不断更新观念,取得教学艺术中的精华。

参考文献:

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

[2] (美)布鲁姆,著. 汇编语言程序设计[M]. 马朝晖,译. 北京:机械工业出版社,2006.

第5篇

关键词:汇编语言;寄存器;思维能力;建构主义

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

1引言

没有问题就是最大的问题。没有问题的安逸如同没有引爆的地雷一样危险。在满堂灌输、不与学生交流和沟通的教学模式下,学生只是被动的接收知识,其发现问题的能力、提出问题的勇气、解决问题的追求、寻根问底的态度在悄无声息的受到摧残。久而久之,学生成为了一个无所思无所想的机械,失去了思维的活力、想象的活力、创造的活力。

问题的提出是解决问题的开始。围绕某一知识点提出一系列的问题,在师生互动中解决这些问题,能够将知识学习和能力培养有机的结合在一起。这种教学方法是建构主义理论实践的具体体现。建构主义认为认识是一种以主体已有的知识、经验、认知结构、心理结构等为基础的主动建构过程,坚信知识是由认知主体主动建构的结果,学习是认知主体的一个意义建构的过程,教学是培养学生主体性的创造活动,是引导学生从原有的知识经验中生长出新的知识经验的过程,教师应是学生主动建构意义的促进者、合作者和指导者。

本文以汇编语言的最基础内容――寄存器教学实践为例,介绍教学过程中提出的一系列问题。通过问题的牵引,教师与学生、学生与学生之间的互动,将有关知识组织组成网络,开阔学生的眼界,培养学生主动求知的技能、态度与习惯。

2数据寄存器教学中问的问题

数据寄存器是学习汇编语言时学生最早接触的内容,单纯的介绍有哪些寄存器(名称、大小),各个寄存器的含义(常用用法),学生们会觉得寄存器很抽象,既不知道寄存器有何实际用途,也不知道如何使用寄存器。我们通过系列问题的牵引,从不同角度不同侧面来解读寄存器,将新知识和已有知识组织成一个网络。

(1) 为什么要设置寄存器?

通过“CPU执行一个加法指令”的具体应用场景来引导学生回答。CPU要执行一个加法操作,就需要从内存取两个操作数,CPU能够一次性地取来两个操作数吗?答案是不能,地址总线、数据总线上一次只能加载一个单元的地址和数据。先取到的数据放在何处呢?类比生活中车站、超市的寄存处,学生能自然而然的接受寄存器的概念。

(2)CPU的执行部件中有哪些寄存器呢?32位的寄存器是什么含义?

这些问题的回答是寄存器教学的基本内容,在汇编语言教材上都有较详细的介绍。但是我们在教学时对有些内容进行了简化,避免一次性引入过多的概念。

(3) 寄存器为何能记住0、1呢?

直接回答该问题已超出了本门课程的范畴。但为了激发同学们的好奇心,有必要提出该问题。同时指出计算机组成原理将会回答该问题,使学生感受课程间的一些联系。

(4) 如何使用寄存器?

用一个指令实例说明一种给寄存器赋值的方法。例如:MOV EAX, 12345678H。之后,一个接着一个地提出写完成某功能的指令问题。遵循循序渐进、由浅入深的原则,使学生能够模仿实践(学生自己写指令)、能够在和已有知识关联中给出答案,在问答互动和鼓励中,建立信心,巩固所学知识、开启灵活应用之门,开阔思路和眼界。

① 如何将EAX的低16位全部置成0?

② 如何将EAX的低8~15位全部置成1?

③ 有无其他将EAX的低16位全部置成0的方法?

④ 如何将EAX的高16位全部置成0?

⑤ 如何将EAX的第30位置成0?

⑥ 如何将EAX的第30位置成1?

在此过程中,一方面使学生记牢32位寄存器、16位寄存器、8位寄存器之间的相互关系,另一方面调动学生积极性,思考实现各功能的办法。教师作为引导者只是进行必要的启发提醒。与此同时,同学们看到了算术运算(减法)、逻辑运算(XOR、AND、OR)、移位操作、数据传送(借助其他寄存器)等方法的指令。建立实现某一种功能的指令多样性概念,破除指令写法僵化单一的迷信。在应用中熟悉了指令的功能和写法,在写指令的过程中强化了记忆。

(5) 通用寄存器又为何给予特定含义的名称?

我们以一个生活场景来进行类比,讲解通用性与常用性的关系。饮水的杯子作为一种容器,它可以用来装可乐、装牛奶、葡萄酒,这就是容器的通用性,但我们一般只有它来喝水,即常用性。“葡萄美酒夜光杯”,用茶杯喝红葡萄酒就难显现品酒的情趣和情调。类比CPU里要计算一组连续数的和,涉及到和、加法的次数、加数的位置等信息的存放,需要不同的寄存器。各种信息分别存放到什么寄存器中?从寄存器的通用性角度来看,可用累加器EAX来保存计数值,用计数器ECX来保存和等。同时指出不需要这样标新立异,而要注重约定俗成,注意程序的可读性和可理解性。当然,也可以指出在某些指令中是要专用某些寄存器的。

计算机作为人类史上的杰出人造产物,其设计之中有很多优美的地方,值得我们品味和欣赏、借鉴和学习,其中寄存器的命名、指令的命名都能很好地表达“望文生义”的理念。解读这些理念是对学生欣赏能力的一个熏陶,也是人文和科技和谐统一的具体体现。

(6) 寄存器在什么时候使用呢?

虽然前面已从原理上分析了寄存器存在的必要性,但在一般的C语言程序中并没有直接使用到寄存器。因此,我们使用VC++6.0环境下的调试工具显示一个C语言程序及其对应的机器码,如图1所示,很清楚地展现寄存器在被不停地使用着,寄存器这些程序运行必不可少的幕后英雄走上了前台。学生能够初步看到编译器的杰作。

在阅读“z=x+y; a[x]=100”等语句对应的机器指令时,请同学猜测各指令的功能。在机器指令的单步执行中,观察寄存器的变化,在互动中巩固前面所学知识,极大地消除了对汇编语言、指令、寄存器等的神秘感。

(7) 能否现在动手体会一下所学内容呢?

从学习寄存器开始就可以使用调试工具来写一些指令,然后执行这些指令,观察指令的执行结果,并不需要有完整的程序才能使用调试工具。调试器TD的用法在文献[5]中有较详细的介绍。

(8) 如何理解寄存器中0、1的含义?

学生在前面课程的学习中,从宏观的角度建立了计算机程序复杂、应用灵活、表象丰富的概念。而在汇编语言课程中,将从微观的角度揭示计算机工作简单、呆板的一面。在学习汇编语言之时,学生要转变观点,以机器的角度去考虑问题,把自己当成一个CPU,理解计算机工作的本质。这会引发许多值得深思的问题。

首先,让学生牢固建立计算机世界是0、1世界的观点,认识计算机是一个编码的世界,人世间的万事万物映射到计算机中都是0、1,就如丰富多彩的物质世界只由有限化学元素组成一样。复杂的对象由简单的元素排列组合而成。其次,建立计算机(CPU)是机械工作的观点,它是按部就班的处理指令,当根据CS:EIP取出指令后,才依序确定指令各成份的含义,进行解释和操作,改变EIP,就会看到指令都发生了变化。这也就是说,0和1代表的含义和作用是在程序运行时才体现出来的,具有动态性和角色转换性,例如对于文件拷贝程序、病毒程序而言,被拷贝或感染的程序只是作为一个数据对象;而在运行时,指令的各组成成份依其位置起到操作码、地址码、操作数等作用。第三,计算机并不关心0、1串对应现实世界对象的含义,而只是机械的处理;而对于编程者和程序阅读者,他们会关心各对象代表的含义,他们达成一致性的理解是得益于对象出现的场景和双方的约定,这也是人们编写和阅读程序的基础。

3其他寄存器教学中问的问题

与数据寄存器教学一样,我们也通过一系列问题来引导学生思考,学生在思考中寻求问题的答案,逐步加深对计算机工作基本原理的理解。

(1) 指令的地址放在何处?

(2) 改变EIP的值,TD代码区有何变化?TD的数据区有无变化?

(3)C语言程序变量的定义和处理语句是混在一起的,在其对应的机器语言程序中,它们所占空间在一起吗?

从取指令、EIP自动更新的方法、计算机基本的工作过程分析,不难给出其答案。将数据所占的存储空间与指令所占的存储空间分开,又是编译器编译时的功劳。该问题的解答自然会引出分段的概念。

(4) 在指令中出现的地址能够是物理地址吗?有必要是物理地址吗?

(5) 在调度程序运行时,指令之间的相对位置会发生变化吗?

(6) 能用16位的寄存器存放20位的段开始位置的物理地址吗?

(7) 段从内存的何处开始?段的首地址放在何处?

教学实践表明,学生在一个一个问题中受到了启发,问问题和解答问题的能力和习惯逐步得到了强化,课堂充满了活力和生机,激发了探究式学习的热情。

4结束语

学习过程中最大的问题是没有问题。一个无所思无所想的机械是没有创造活力的。兴趣是最好的老师,而体现兴趣的一个重要方面就是心中存有“为什么、是什么、怎么样、行不行、可以吗”等问题。示范、引导、鼓励学生从多角度多视野来问问题,培养学生细致入微的观察能力,深刻全面的分析能力,使学生逐步养成主动求知的态度与习惯,这都将为创新活动奠定良好的基础。

参考文献:

[1] 江珊. 没有问题就是最大的问题[M]. 北京:新华出版社,2009.

[2] 张建伟,陈琦. 从认知主义到建构主义[J]. 北京师范大学学报:社会科学版,1996(4):75-82.

[3] 王晓茜. 建构主义教学论探析[J]. 科学探索,2006(11):30-31.

第6篇

一、汇编语言在软件工程中的应用

汇编语言是建立在传统机器语言基础之上的,保留了传统语言的优势的同时,突破了传统语言的弊端,能够对关键程序代码进行准确控制,且能够直接访问并控制相应的硬件系统,促使硬件发挥积极作用,从而确保系统稳定运行,不仅如此,汇编语言程序编译后的目标代码空间需求较小,执行效率较高,在系统软件程序和过程控制程序中的应用比较广泛、且普遍,其具有独特的优势,是其他语言难以取代的。但是,事物具有两面性,汇编语言也存在一定不足,由于其基础是机器语言,使得其对象没有发生变化,没有改变其是一种低级语言的地位,且理解难度也较高。在软件开发中应用此语言,效率并不明显,且针对硬件系统而言,且精确度并不高,兼容性较差,即便是类似硬件也不能够通用。在软件工程中,汇编语言凭借自身与硬件系统联系密切,且能够实现直接访问,很多系统软件都采用汇编语言进行编程,还包括一些对处理速度要求较高的程度也是通过汇编语言编写的。不仅如此,在系统核心部分、软件加密、解密及计算机病毒分析等方面也都具有广泛的应用。在一些行业中,汇编语言是不可缺少的,只能够选择它,在熟悉的程序员手中,使用汇编语言能够显著提升效率及性能,但是,其弊端是需要利用更长的时间进行调整和优化。汇编语言在一些工业企业中,制作4位单片机等,以此来实现对工业生产过程的控制和管理,另外,针对需要快速及实时响应的场合,也需要选择汇编语言,例如:仪器仪表及工业控制设备等,一般情况下,汇编语言应用于最底层,驱动程序及嵌入式操作程度等,随着现代软件系统不断发展,汇编语言逐渐成为计算机专业学生必须了解和掌握的一门课程,能够帮助学生认识计算机运行原理,夯实计算机相关知识基础。

二、C语言在软件工程中的应用

C语言自上个世纪90年代出现在计算机领域中,C语言作为一种高级语言,不仅具有人性化特点,还包括汇编语言的特性,受到软件工程开发广泛关注,其本质是高级与低级语言有机结合的编程工作单元,通过函数、循环等应用,能够形成结构化设计方法,提高系统层次性、清晰度等方面具有积极作用,且方便用户调试和维护。C语言自身优势很多,运算符丰富,实现多样化表达,满足多元化需求,且数据类型较多,例如:指针型、实型等类型,能够实现相对复杂的数据运算任务,相比较而言,C语言更具有灵活性,兼顾人性化及实用性两方面,能够直接对对位地址和字节地址进行操作,另外,运用C语言编写源程序,不仅系统质量高,而且执行效率也很高为更好地移植和修改奠定了坚实的基础,诚然,C语言也存在一定缺陷,灵活度高,使得其对语法规则要求并不严格,使得变量类型规范也受到一定影响,存在一定安全隐患,初学者刚接触C语言时,难以更好地接受和理解,增加了学习难度。指针作为C语言在软件工程中应用的关注点,针对与硬件联系较多的程序,C语言编写程序更为高效,且多种机型及操作系统也可以选择C语言,帮助人们直接访问地址,及时检查语法错误,纠正错误,既能够提高系统质量,也能够有效提高系统运行效率。未来,C语言将会广泛应用于系统程序编写中。综上所述,汇编语言与C语言自身都存在优势及缺陷,单纯的使用一种语言,难以发挥有效作用,且不利于软件工程开发,至此,可以将二者有机结合,实现优势互补,在程序编写过程中,发挥各自优势,更好地满足用户对系统的需求。

三、结论

根据上文所述,软件工程作为一项综合性工程,在促进社会发展等方面占据不可替代的位置,而汇编语言与C语言作为实现软件工程开发的核心,二者均具有自身独特的优势及不足,为了更好地实现程序编写,应将二者结合在一起,取二者之长,提高系统软件可读性、灵活性,进而为用户提供更加优质的服务。

作者:邢俊杰 郭锦雯 刘婵 单位:中国石油天然气股份有限公司山西煤层气勘探开发分公司

第7篇

关键词:汇编语言;集成开发环境;实践教学

中图分类号:G642

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

[5] 田庆. 汇编语言程序设计课程的教学探讨[J]. 电器电子教学学报,2007,(2):14-15.

第8篇

精品课程建设和立体化教学体系的构建,建立了一个开放、互动、积极、科学的和高效率的教学机制,为高校课程建设和改革指明方向,推动实践教学和人才培养模式改革创新,整合教学资源,最大限度地满足教学需要,提高教学效果[1]。“汇编语言程序设计”是高校计算机类专业本科生必修的专业基础课,是操作系统、单片机和微型计算机原理与接口等核心课程的先修课。通过该课程的学习,培养学生设计和编写汇编语言程序的能力,对计算机的底层编程有一定认识,使学生掌握时效性要求高、直接控制硬件的程序设计方法;另一方面,使学生理解计算机底层运行程序的机制,了解计算机的工作原理,为以后一些课程的学习打下良好的基础,并使各门课程之间的知识融会贯通。实行立体化教学将在提高教学效率、增强教学效果、加大教学信息量、培养学生的实际应用能力、加强学生课后的学习能力等方面起到积极的作用[2]。

一汇编语言及其教学现状

汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。汇编语言直接描述机器指令,与机器指令相比更容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点。

在以往汇编语言课程教学过程中,经常存在以下问题[3]:

第一,汇编语言是一种完全面向硬件的语言,和机器的体系结构结合紧密,使用者需要对计算机的组成、硬件控制和指令的解释过程有比较本文由收集整理清晰的掌握才可以,学生反映难懂。

第二,汇编语言指令和伪指令众多,语法难记,调试困难,程序的可读性差。因此学生普遍反映这门课难学难懂。

由此,学生一开始就产生了畏学情绪,学习的能动性丧失,给老师的教学工作也带来一定的困难。在多年该课程教学经验的基础上,我们对该课程的教学进行了深入的改革,在教学模式、教学方法和教学手段等方面提出并采用了一系列新举措,明显提高了教学质量和效果。

二关于汇编语言课程立体化教学模式的探索

1组建创新型教师队伍,是精品课程建设成功的基础

创新型教师应当是学术造诣深、授课经验丰富、创新意识强、改革成果明显的创造型高素质教师。合理的教学梯队,能够将多年积累下来的行之有效教学经验和教学成果巩固和发展下去。因此要形成师资质量优秀、师德高尚、人员稳定、教学水平高、教学效果好、年龄结构和职称结构钧合理的教师队伍。目前汇编语言程序设计课程组教师7人,其中2名博士,4名硕士;高级职称4人,中级职称3人,教师队伍结构合理,师资力量扎实牢固。

近年来,课程组积极加强在职教师的素质培训,多次组织专题研讨会和教研室会议,就课程的教学内容安排、教学中出现的疑难问题及如何提高教学效果等问题进行研讨,共同提高授课水平。为提高教学技能,教学组定期和不定期地进行教学心得和教学方法的交流,并鼓励撰写教学研究论文。课题组还多次组织教学观摩活动,一方面要求青年教师学习优秀教师课堂教学的经验和技巧,另一方面也要求有经验的教师结对帮助青年教师,提高他们的教学质量。鼓励青年教师积极申请教学和科研项目,鼓励青年教师出国深造等。严格按照省级精品课程评选标准进行建设,定期组织专家对本课程建设情况进行检查和监督,每年召开不少于一次的精品课程建设工作研讨会。积极开展课程建设,大力支持本课程省部级以上教学成果和教改项目的申报工作。

2教学方法改革,让学生由被动接受变为主动求知

⑴启发与鼓励

启发式教学是教学实践中一个古老又新颖的课题。从孔子提出启发式教学至今两千多年的历史中,启发式教学日益展现出自身强大的功能[4]。

现代教学的指导思想是“学生为主体,教师为主导”,如何体现“学生为主体,教师为主导”,关键是学生能否有学习动机,而学生的学习动机并不会无缘无故地产生,在很大程度上和教师的主导作用有直接关系,要靠教师在师生的交流中去激发、去培养。特别是对于汇编语言这门指令多、语法难记、程序难读的课程,启发的过程中,可能对一部分同学还产生不了很好的效果,这

时就要启发加激励并行。例如在讲解寻址方式时,不同的寻址方式如何区分?区分寻址方式的关键点在哪里?问题抛出后,给学生一段思考的时间后,为了让学生能够站起来主动回答这个问题,一定要对主动回答问题的同学给予适当的鼓励和表扬,而且不管回答对与否,主要是先把学生的学习的主动性和积极性调动起来,使学生摆脱教师那种生浇硬灌的教学模式,掌握学习的主动权,主动探求蕴藏在教材中的知识,变“讲授知识”为“主动求知”。

⑵探究式教学

探究性教学模式是指以“自主、探究、合作”为特征的学习方式对当前教学内容中的主要知识点进行自主学习、深入探究并进行小组合作交流,从而较好地达到课程标准中关于认知目标与情感目标要求的一种教学模式[5]。

探究式教学的核心是问题,所以教师在采用探究式的教学方法之前,需要根据教学目的和内容,精心考量,提出难度适度、逻辑合理的问题,以便全班学生带着这些问题去探究,去挖掘自己的内在潜力,获得新知、增长能力。教师为了达到让学生自主学习的目的,要引导学生自己去发现问题,学生不明白时可适当点拨,诱导探究的方向。在探究教学中,教师是引导者,基本任务是启发诱导;学生是探究者,其主要任务是通过自己的探究,发现新事物。因此,必须正确处理教师的“引”和学生的“探”的关系,做到既不放任自流,让学生漫无边际去探究,也不能过多牵引。最后教师引导学生对问题进行总结,对学习成果进行分析归纳,并可联系实际,对当前知识点进行深化、迁移与提高。

探究式教学使学生的主体地位和自主能力都得到了加强,对知识技能的理解与掌握都达到了较深的程度,非常有利于创新思维和创新能力的形成和发展。

3改变考核方式,注重综合能力的培养

打破以最终的一次期末考试成绩作为学生学习好坏的唯一评价标准的模式。把评价学生的标准分成三部分:平时表现占20%,期末考试占40%,能力作业占40%。结合教学内容教师布置专题项目的学习内容作为能力作业,学生以小组形式通过课下调研、上网、各级图书馆资料查询完成作业。最后学生要上台讲授自己的能力作业,通过评分竞选优胜者。这样就把由教师讲授学生被动接受的过程变成学生主动获取知识的过程。通过这种形式的学习,在引入竞争机制后,不仅培养学生的浓厚的学习兴趣,而且学生可获得更多课堂以外的专业知识,拥有了较强的自学能力、组织能力、人际交往能力和人与人之间的协作沟通能力。最后对于学生的评价是根据学生的学习成绩和能力作业给予综合评定,全面考察学生的综合素质。

4课堂教学与网络教学相结合

随着网络、通信技术的迅速发展,可以制作多媒体网络课件、建立网上教学平台。网上教学的优势在于它不受课堂教学时间和空间的限制,可以在课程网站上补充、增加更多的相关专业知识与内容,建立更多的专业网站链接,有助于学生从更大范围内了解学科与专业发展的现状。借助于网络教学,学生的自学、自测基本不受时间和地点的限制,方便了学生的自主学习;学生遇到任何问题,教师都可以通过网络进行答疑,这些问题也可能是同学们共有的问题,教师的回答信息可供学生共享,这就从一对一的形式转变成一对多形式,大大提高了教学效率。我们学院已经建立了一个比较完善的网络教学平台,供教师和学生使用。

5重视立体化教材建设

第9篇

程序设计在高校计算机及相关专业的课程中是最主要的基础课,而汇编语言程序设计又是程序设计的基础,并且是微机原理、操作系统、编译原理和系统结构等主要课程的基础课,是一门软硬件相结合、理论联系实践的课程。如果没有汇编语言程序设计作为基础,想要学深学透后续课程是十分困难的。学好汇编语言可以更好地深入理解和掌握计算机的硬件构成和工作机理,为进行计算机相关的应用和研究奠定基础[1,2]。因为汇编语言是接近于计算机硬件的低级语言,它是联系高级语言和计算机系统的桥梁,对于例如变量参数等在高级语言不容易理解的概念,用汇编语言讲述则很清楚,而且对于理解计算机原理帮助较大。但是由于汇编语言是面向机器的一种语言,很多学生在学习过程中感觉比较难入手。

汇编语言作为一种用助记符表示的面向机器的符号语言,如何认识该课程的作用和地位,如何取得更好的教学效果?在长期从事该课程的教学过程中,笔者尝试各种提高该课程教学质量的探索,有些体会,供大家参考。

1 目前《汇编语言程序设计课程》的教学状况

汇编语言是面向机器的一种符号语言,它与机器的结构密切相关,是直接针对CPU、内存和I/O端口编程的程序设计语言。而目前的各种高级语言和网络应用开发工具很多程序几乎可以自动生成。然而机器语言、汇编语言和高级语言的程序设计语言体系仍然是计算机技术的基础,也是计算机技术的重要知识体系之一。对于计算机及其相关专业的学生以及计算机爱好者来说,汇编语言程序设计是需要掌握的重要专业基础知识之一。可由于汇编语言面向机器的特点,不仅需要硬件知识的配合,而且它有大量的语法规则需要记忆,加之上机调试单调且容易出错,导致了大部分同学对于《汇编语言程序设计》课程的畏难情绪,学生初学阶段普遍反映该课程难学,很多学生在学习过程中感觉比较难入手。

2 教学方法探讨

2.1 合理组织课程内容

教学过程中为了让学生掌握所学知识并用于程序开发,在课程教学中把握教材的难点和重点尤为关键。

(1)基础知识的教学。

主要包括计算机硬件和指令系统的教学。对计算机硬件基础知识的理解和掌握程度直接影响学生对汇编语言地理解和掌握,其中包括CPU内部的构成、总线的作用、寄存器的设置和用途以及内存的使用等是较难理解的部分,在实际教学中,可将相关内容融汇在一起来进行教学。通过应用如:图片和动画等形象化的方法将这些比较抽象的知识以较容易理解的方式展现出来。作为编程的指令系统对汇编语言程序设计而言是很重要的一部分内容,在进行该部分内容教学时,可以尽量通过演示程序来进行讲解,解释各条指令的运用方法、效果等,同时也可以适当应用动画等方式演示指令的执行过程。

(2)程序控制结构的教学。

程序控制结构是程序设计教学中的重点,汇编语言中的选择结构和循环程序结构程序设计则是此部分的难点。为了使学生更好地掌握,在教学过程中,可选择部分典型的例题,如:解决汉诺塔问题和阶乘的计算等。

2.2 教学手段上采用传统教学与多媒体教学相结合

在教学过程中我们可以有选择地使用多媒体教学,例如:用动画模拟汇编语言中寻址方式、子程序调用的堆栈变化过程、中断调用过程等。运用多媒体教学,增强学生的直观感,加深对问题的。在讲用汇编语言指令编程序的内容时,采用传统的教学方法,教会学生如何思考、推理,如何用指令实现算法,培养学生的抽象思维、逻辑推理能力。传统教学方法与多媒体教学相结合,将有助于提高学生的理解能力及综合思维能力。

2.3 随堂写一些小程序增强记忆

在课堂上多加练习编写小程序段会提高学生对指令的记忆及理解掌握。经过几年的教学发现,课堂上练习少了以后,很多同学往往出现在编写程序时有些指令写不出来或不会用相关指令来组织程序。在课堂上练习,使学生可以增强记忆,对指令的使用方法有了进一步了解,能够运用自如。

2.4 注重案例教学

案例教学法在当前面向各个层次学生的教学过程中已得到广泛应用,具体是指教师需要根据课程教学目标与内容的要求,选择相关典型的实例并组织学生学习、组织学生讨论从而最大程度调动学生的创造性思维的教学方法。其具体执行有两种形式。

(1)案例讲解。

案例讲解需要在理论知识讲授之后进行,通过案例讲解辅助,达到加深学生理解的目标。

(2)案例分析法。

案例分析方法的重点在于讨论和分析,其主要目的是培养学生的创造性思维。案例的选择应注意培养学生理解知识,提高学生分析问题和解决问题的能力。在汇编语言程序设计的教学中综合运用案例讲解法和分析法,能够使学生尽快理解汇编语言程序设计的本质特征并迅速掌握编程方法。

2.5 注重实验内容的实用性和趣味性

把实验实践环节与理论教学相融合,用实践教学促进学科理论知识学习,激发学生学习兴趣。对于任何一门计算机语言课程来说,实验都是教学中非常重要的一个环节,实验可以加深对理论知识的理解,提高学生的实践动手能力。为了避免传统的程序三大结构、数据组织与数值计算、代码转换和数制转换等方面的枯燥无味的实验,应将实验内容和实际应用相结合,如将汇编语言和计算机的系统维护等实际相联系,用汇编语言编写简单的设备驱动程序等等,增加图形化的实验内容等方法和手段,使实验变得实用有趣,增强学生动手的积极性和提高学生的动手能力。

2.6 突出重点和难点

另外,在教学过程中,加强传统的教学方法也是重要的,如在教学过程中要突出重点和难点;课堂上多做练习,课后注意答疑、辅导。

如:讲解指令系统时部分指令应结合指令编码(即机器指令)来介绍,这样学生更容易理解和接受。

例如:讲解转移指令中段间转移直接寻址和段间转移间接寻址问题,如果只列出样例:

段间直接寻址:jmp far ptr target1

段间间接寻址:jmp dword ptr addr [bx]

学生很难理解,具体怎么实现跳转。但是如果结合指令编码来讲解上述两条转移指令则效果会有很大改进。

如:

段间转移直接寻址指令编码需要5个字节,如图1所示。

也就是说,上例中Jmp far ptr target1 的target1给出的是转移地址,即包括段地址和偏移地址。

而段间转移间接寻址的指令编码是2~4字节,如图2所示。

指令中由MOD和R/M确定的双字存储单元中的内容分别送入IP寄存器和CS段寄存器,完成转移。

第10篇

【摘要】 随着科学技术不断发展,软件工程取得了进一步发展。汇编语言与C语言作为两种计算机基础语言,在推动软件工程发展等方面具有重要作用。本文将对汇编语言与C语言概念进行分析和研究,并阐述汇编语言和C语言在软件工程中的应用,进而推动软件工程可持续发展。

【关键词】 汇编语言 C语言 软件工程 应用

前言:软件工程作为一门工程化方法,是构建及维护有效的、高质量软件学科,广泛应用于工业、银行及航空等多个领域发展中,并发挥着积极的促进作用,而汇编语言与C语言是低级与高级语言,各自存在一定优势及缺陷,如何更好的使用两种语言受到越来越多的关注。至此,加强对汇编语言及C语言在软件工程应用的研究具有现实意义。

一、汇编语言与C语言概念

汇编语言主要是指汇编指令集、伪指令集及使用规则的总称,通过具有特点的符号作为助忆符号,用符号地址等组合成为汇编格式指令。C语言主要是指一种编程语言,实现简便、效率高且要求低的运行的编程目标,两种语言都是软件工程编写的基础。

二、汇编语言在软件工程中的应用

汇编语言是建立在传统机器语言基础之上的,保留了传统语言的优势的同时,突破了传统语言的弊端,能够对关键程序代码进行准确控制,且能够直接访问并控制相应的硬件系统,促使硬件发挥积极作用,从而确保系统稳定运行,不仅如此,汇编语言程序编译后的目标代码空间需求较小,执行效率较高,在系统软件程序和过程控制程序中的应用比较广泛、且普遍,其具有独特的优势,是其他语言难以取代的。但是,事物具有两面性,汇编语言也存在一定不足,由于其基础是机器语言,使得其对象没有发生变化,没有改变其是一种低级语言的地位,且理解难度也较高。在软件开发中应用此语言,效率并不明显,且针对硬件系统而言,且精确度并不高,兼容性较差,即便是类似硬件也不能够通用。在软件工程中,汇编语言凭借自身与硬件系统联系密切,且能够实现直接访问,很多系统软件都采用汇编语言进行编程,还包括一些对处理速度要求较高的程度也是通过汇编语言编写的。不仅如此,在系统核心部分、软件加密、解密及计算机病毒分析等方面也都具有广泛的应用。在一些行业中,汇编语言是不可缺少的,只能够选择它,在熟悉的程序员手中,使用汇编语言能够显著提升效率及性能,但是,其弊端是需要利用更长的时间进行调整和优化。汇编语言在一些工业企业中,制作4位单片机等,以此来实现对工业生产过程的控制和管理,另外,针对需要快速及实时响应的场合,也需要选择汇编语言,例如:仪器仪表及工业控制设备等,一般情况下,汇编语言应用于最底层,驱动程序及嵌入式操作程度等,随着现代软件系统不断发展,汇编语言逐渐成为计算机专业学生必须了解和掌握的一门课程,能够帮助学生认识计算机运行原理,夯实计算机相关知识基础。

三、C语言在软件工程中的应用

C语言自上个世纪90年代出现在计算机领域中,C语言作为一种高级语言,不仅具有人性化特点,还包括汇编语言的特性,受到软件工程开发广泛关注,其本质是高级与低级语言有机结合的编程工作单元,通过函数、循环等应用,能够形成结构化设计方法,提高系统层次性、清晰度等方面具有积极作用,且方便用户调试和维护。C语言自身优势很多,运算符丰富,实现多样化表达,满足多元化需求,且数据类型较多,例如:指针型、实型等类型,能够实现相对复杂的数据运算任务,相比较而言,C语言更具有灵活性,兼顾人性化及实用性两方面,能够直接对对位地址和字节地址进行操作,另外,运用C语言编写源程序,不仅系统质量高,而且执行效率也很高为更好地移植和修改奠定了坚实的基础,诚然,C语言也存在一定缺陷,灵活度高,使得其对语法规则要求并不严格,使得变量类型规范也受到一定影响,存在一定安全隐患,初学者刚接触C语言时,难以更好地接受和理解,增加了学习难度。指针作为C语言在软件工程中应用的关注点,针对与硬件联系较多的程序,C语言编写程序更为高效,且多种机型及操作系统也可以选择C语言,帮助人们直接访问地址,及时检查语法错误,纠正错误,既能够提高系统质量,也能够有效提高系统运行效率。未来,C语言将会广泛应用于系统程序编写中。综上所述,汇编语言与c语言自身都存在优势及缺陷,单纯的使用一种语言,难以发挥有效作用,且不利于软件工程开发,至此,可以将二者有机结合,实现优势互补,在程序编写过程中,发挥各自优势,更好地满足用户对系统的需求。

结论:根据上文所述,软件工程作为一项综合性工程,在促进社会发展等方面占据不可替代的位置,而汇编语言与C语言作为实现软件工程开发的核心,二者均具有自身独特的优势及不足,为了更好地实现程序编写,应将二者结合在一起,取二者之长,提高系统软件可读性、灵活性,进而为用户提供更加优质的服务。

第11篇

关键词:计算机教学;汇编语言;实验;改革创新

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

文章编号:1672-5913(2007)18-0129-03

1 “汇编语言程序设计”课程存在的必要性

高职教育的目标在于培养具有组织、管理高新技术的生产,能够操作、调试和维护高新技术设备,解决生产过程中遇到的各种实际问题的高素质技能型人才,与普通本科教育有着本质的区别。眼下许多高职院校的计算机专业已经进行了各种教学改革。这些方法和措施所强调的大都是:以提高学生实践能力为主,理论够用就行,应用型不强的科目该砍就砍。所以,在许多高职院校的教学改革中,“汇编语言程序设计”被大刀阔斧地砍掉了,或者合并到“微机原理”、“计算机组成”等其他课程中。但是,尽管与发展初期相比,计算机开发和应用技术已经有了根本性的变化,我们有了各种高级语言、有了网络应用开发的许多编程工具,很多程序甚至可以自动生成,那么汇编语言是不是就真的应该退出历史舞台呢?笔者不这样认为。

汇编语言是计算机专业及相关学科一门重要的基础课程,是培养学生直接使用计算机硬件资源能力的一门课程。它不仅能帮助学生进一步理解计算机组成原理课程中的各种概念,而且还为其它课程如:操作系统、接口与通信技术和计算机控制技术等课程提供必要的预备知识。该课程在计算机学科课程设置中起着承上启下的作用。不能了解和熟悉汇编语言知识不仅将导致学生知识结构的不完整,也可能导致学生认知水平降低、开发手段贫乏。在一些应用中,汇编语言甚至是开发工具的唯一选择。

当前嵌入式系统软件的开发非常热门,其发展前景很广阔,嵌入式系统较常用的操作系统Windows CE与Windows同样是基于Win32 API的,Win32汇编语言的学习有利于开展后续课程“嵌人式系统”,为嵌人式系统的软硬件开发打下了坚实的基础。

总之,无论对于计算软件还是硬件工作者来说,汇编语言都是十分重要的基本工具。因此,高职教育中计算机及其相关专业开设“汇编语言程序设计”课程是非常必要的。

2课程改革势在必行

目前许多高职院校尤其是计算机专业的教学模式,大多是本科计算机专业的“压缩版”,在制定教学计划和大纲时,以名校相应专业的教学大纲作为自己的大纲,以名校选用的教材作为自己开展教学的教材,就如“汇编语言程序设计”这门课的教材,很多学校仍然采用清华大学出版社出版的《IBM-PC汇编语言程序设计》。这种教学模式尽管有其先进和优秀之处,但并不适合高职教育。而另一方面,汇编语言本身固有的复杂性,使学生理解起来比较困难。这体现在以下几个方面:

1) 由于汇编语言与硬件联系紧密,学生一般是在还没有学习过相关硬件课程的情况下就开始学习汇编语言的,因此初学时不易理解,容易造成厌学情绪。

2) 汇编语言的内容丰富,需要记忆的内容很多,学生在学习一段时间后容易遗忘,从而造成跟不上课程的进度而放弃的现象。

3) 由于学习高级语言后产生的思维模式,使得学生在编制汇编语言程序时易出现一些语法或逻辑上的错误。

4) 在学习汇编语言的过程中,由于课程的特点,学生不能够及时上机实现,造成学生感到课程抽象,很难理解,甚至觉得所学的知识无用,从而产生厌学情绪。

以上归纳的几点,是我们在教学实践中经常遇到的现象,要解决这些问题除了要改革教学方法以外,还要从学科特点和学生的实际出发,改革课程设置,完善课程的前后衔接,合理安排课程开设的次序等。因此,如何改革汇编语言课程以提高其教学效果和教学质量,使它跟上计算机技术的发展,是我们当前亟待解决的问题,而不是简单地取消这门课。

为了使学生系统而全面地掌握汇编语言的编程方法,把握本课程的重点,消化难点,我们用实验的方法对“汇编语言程序设计”这门课程的教学方法进行了改革,取得了一定的成绩。

3行之有效的改革尝试

在认清汇编语言的重要作用和明确其教学改革的紧迫性后,我们制定了改进的教学大纲,并据此编写了相应的实验教材讲义,开始了“升级”汇编语言教学的改革尝试。

3.1教学手段的改革

“汇编语言程序设计”课程一向都有上机实验的教学要求,但教学主体是课堂教学,无论是实验设计还是实验强度都带有强烈的“验证性”色彩。而高职院校的培养对象区别于普通高等学校学生的鲜明特点是:思想活跃、智商与情商皆高、活动能力强,但普遍存在的问题主要是学习自觉性不高、单纯凭兴趣学习的观点重、刻苦精神差等。因此,如果上课基本不听,则验证性实验的基础就不存在,实际教学效果也可想而知。所以对于这样的学生群体单凭课堂教学和一般作业,要真正领会汇编语言程序设计课程所介绍的概念、原理、方法和技巧等,是很困难的。经验表明,学习并真正体会和掌握汇编语言程序设计的最好方式是对它进行充分的实践。把实验作为学习汇编语言程序设计的主导方法,为学生提供了一个掌握汇编语言程序设计全新的学习方法,可以由此来体验汇编语言程序设计的知识及其应用技巧。当然,通过实验,也一定能够很好地提高学生汇编语言程序设计能力。

区别于传统实验,我们的理想是,用实验、实践的方法来改革理论教学方法。所以我们把课堂搬到了实验室,所有的课程都在实验室完成,让学生在实践中激发对相关理论的兴趣,再用提高了的理论水平来指导新的实验和实践活动。而我们在教学中采用“先做后说”的方法,把根据学科理论知识精心设计的实验实践环节与学科理论教学相融合,解决学生的认知困难,取得了很好的教学效果。

3.2教学内容的改革

我们在取舍教学内容时,体现了“浅、广、新”的特点。其中,“浅”体现在重点介绍基本概念、原理和方法,而没有过多地详述深入和细节内容;“广”体现在比较全面地介绍了指令系统和汇编语言所涉及的内容,形成比较完整的知识体系;而“新”更是我们教学改革的重点,介绍了简化段定义程序格式、32位指令及编程、混合编程等。根据当前国内教学实际,我们仍然以16位8086CPU指令系统和基本汇编语言知识和程序结构作为基本的、重点的内容;而将新增内容作为独立章节引出。采用微软的最新版本汇编程序MASM 6.11,但主体内容仍然适合MASM 5.0版本。教学内容中,舍弃了一些过时的应用技术,而引入了一些实用的汇编语言程序设计方法,例如开发大型程序需要的模块化方法、与C/C++语言的混合编程技术(尤其是汇编语言与Visual C++ 5.0/6.0的混合编程,非常受学生的欢迎)、新增的高级语言特性伪指令等。

新编的实验教材包括7个方面共20个实验。全部实验结合目前广泛使用的PC机Intel 80x86 CPU来开展教学,目的是通过一系列使用80x86和Windows环境下32位汇编语言的实验练习,把汇编语言程序设计的概念和理论知识融入到实践当中,从而加深对汇编语言程序设计的认识和理解。实验练习几乎覆盖了汇编语言程序设计教学的各个方面,内容涉及汇编语言编程基础、构建汇编语言编程环境、汇编语言程序设计、输入输出与中断、Win32汇编语言程序设计及汇编语言与C/C++的混合编程等。

3.3考核方法的改革

为了保证教学效果,必须进行考核。传统的汇编语言教学的考核方法多为笔试,再参考平时上机的表现,这种考核方法不能体现学生的真实水平。改革后的考核手段多样化,由平时作业、实验、论文、课程设计、阶段性练习和期中、期末考试等多种环节组成,新编的实验教材每个实验后面都有学生自测和教师评价栏目,并且得到了切实认真地执行,这样极大地改变了读书为了考试,只有考试前才读书,甚至连考试前都不读书的状况。

4实验教学中应重视教材建设

教育的一个重要原则是“因材施教”,高职教育对人才的培养,应该体现到教材建设上。教材建设不仅要做好减法――适当地降低理论要求,也要做好加法――增加探究性实验并在实践环节中有突破性的创新。要根据学生求知欲望强的特点重视扩大学生的知识面,要利用学生动手能力强的特点来提高学生的实践能力、创新能力和就业竞争能力,努力形成一个“什么都学过什么都会点”的积极局面。

教学内容要有可操作性、趣味性和适当难度。可操作性保证学生都能完成作业、实验、设计而促进学生学习信心的建立,在一定程度上减少学生抄袭的理由,克服作业、实验、论文普遍抄袭的弊病;趣味性体现“寓教于乐”以提高学生完成作业、实验、论文的积极性;适当难度有助于激发优秀学生进一步钻研的斗志。

实践证明,“汇编语言程序设计”课程的实验教学改革,取得了明显的效果,也受到了学生的普遍欢迎,通过教学改革,学生提高了学习兴趣,由被动学习变为主动学习,为后续课程的学习打下了坚实的基础。

笔者在“汇编语言程序设计”课程实验教学中所做的改革尝试,目的是为了“抛砖引玉”,试图引起更多的老师产生共鸣而繁荣计算机实验教学。

参考文献

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

[2] 李立冬,朱晓鸥. 微机原理与汇编语言基础[M]. 北京:高等教育出版社.

第12篇

由于《汇编语言程序设计》本身的特点具有理论抽象性、与硬件的相关性,使它难学难教,学生普遍反映这门课程难学、不容易理解、抽象。这门课程难学的另一个原因体现在上机实验方面。上机实验时是DOS黑白界面,检查语法编译程序繁琐,结果不具直观性。编写程序复杂、调试程序复杂,所以很多教师讲课时侧重于理论教学,忽视实验教学。另外,尽管有上机实验的教学要求,但教学主体是课堂教学。无论是实验设计还是实验强度都远远不够。带有强烈的“验证性”色彩。这些影响了学生学习时的积极性,许多学生在学习《汇编语言程序设计》的过程中往往感觉找不到头绪。认为《汇编语言程序设计》是一门难学的课程,比较抽象,是“天书级”的语言,不像应用型课程非常直观与生动。在学习《汇编语言程序设计》时积极性不高。因此,对汇编语言程序设计的教学改革势在必行。

2、用建构主义理论分析汇编语言

教学现状汇编语言与高级语言教学是有区别的,高级语言经常包含学生原有的经验和知识,因此在对新知识的理解,通过运用已有的经验建构起来,得心应手。而汇编语言中很多都是新的知识,并且与学生原有的知识有较大的差别,教师就要以学生为主体,利用网络和多媒体手段创设有利的学习情境,帮助学生完成新知识的建构。在教育心理学领域中,建构主义作为一种新的学习理论,对学习和教学提出了一系列新解释,认为认识是一种以主体已有的知识和经验为基础的主动建构过程。建构主义认为,知识不是通过教师的传授得到的,而是学习者在一定的情境即社会文化背景下,借助他人的帮助即通过人与人之间的协作活动,利用必要的学习资料,通过意义建构的方式来获得。建构主义更关注学习者如何以原有的经验、认知结构、心理结构和经验为基础来建构知识、建构知识结构。学生是在教师的帮助下,利用自己特有的思考方式和学习方法,通过自己的经验对外部信息进行主动的选择、加工和处理,从而获得自己的意义,建构自己的理解过程。建构主义这种强调以学习者为中心的学习理论,既强调了学习者的认知主体作用,又不忽视教师的指导作用。教师不是知识的传授者与灌输者,而是意义建构的帮助者与促进者。学生是信息加工的主体,是意义建构的主动者,这种学习方法更加强调学习的主动性、社会性情景与协作性。从教师的视角来理解建构主义,教师就应该重视学生自己对各种现象的理解,倾听他们的看法,洞察他们这些想法的由来,以此为根据,引导学生丰富或调整自己的理解,在新知识的输入阶段、相互作用阶段、操作阶段和输出阶段等不同阶段帮助学生完成新知识的建构。汇编语言本质上是机器语言,与高级语言相比又具有一些自身的特点:①汇编语言属于低级语言,与硬件联系紧密;②指令繁杂,编程繁琐;③调试环境不易被学生理解与掌握汇编语言调试工具采用的是Debug,DOS下的命令交互方式,界面不友好;④课程中段才涉及程序设计和应用。按照建构主义理论,目前汇编语言教学方面的问题主要体现在以下方面:①教师通常将教材内容按部就班地灌输给学生,教学内容顺序安排不合理,并未真正地按循序渐进的原则来教授;②有的内容一讲到底,以教师为主体,学生处于被动接受的地位,虽然教师教学很认真,但不和学生进行互动,不及时提供实践的机会,使学生缺乏主动性,学习效果自然不理想;③教学实践缺乏有效性。目前该课程上机实践多数仅满足于对理论知识的验证,很少有具备针对性或直接面向实际问题的综合训练,学生难以对所学知识融会贯通,综合运用所学知识解决实际问题的能力没能得到很好培养。现有的例题特别是上机习题编排,不利于培养提高学生的汇编语言程序设计技能,更不利于通过上机实验进一步调动学生语言的积极性。因此,在建构主义理论的输入阶段,受高级语言的影响,汇编语言学习者很难实现新知识的输入;在建构主义理论的相互作用阶段,原有的高级语言学习方法、理论基础不能在这里形成知识与编程技能的正迁移,反倒阻碍了新知识与能力的习得;在建构主义理论的操作阶段,由于学生不熟悉DEBUG调试环境,不能很好地驾驭上机环境,实践脱离了理论,不能使新学习的知识与原有的认知结构之间产生较为密切的联系。在输出阶段,由于作业或课程设计题目主要针对操作系统的某一子功能进行设计,无正误判定,很大程度上影响了学生解决具体应用问题的信心与决心。

3、建构主义理论的汇编语言教学实施

3.1、随着计算机发展,多次讨论修改教学大纲

随着PC性能的不断攀升,内存的不断扩大。汇编语言的优点已经不是特别突出,学生总觉得汇编语言指令繁多,枯燥难学。有了很多种高级语言,开发程序非常容易。他们非常不愿意学习汇编语言。哪些需要删除,哪些增添,已经是需要重新讨论的问题。教研室主要讨论了以下内容:明确学习《汇编语言程序设计》的目的,如何与其他高级语言衔接,如何相辅相成。在整个计算机体系中处于什么地位。哪些陈旧的内容需要删掉,哪些新的内容需要增添,这是教研室会议重点讨论的问题。

3.2、多用形象的类比

汇编语言枯燥抽象,硬件结构又看不见摸不到,用类比的方法讲授就显得比较重要。用鲜活的例子来打比方可以起到事倍功半的效果。例如在讲解寻址方式时,笔者就用类比的讲解方法,告诉学生说,例如,一个小孩子对他妈妈说:“我要吃苹果”,妈妈就给他拿了一个苹果,这就是直接给出,是立即寻址方式:孩子大了一点,有一天又和妈妈讲,我要吃苹果,妈妈给了他一个盒子,孩子打开盒子,苹果放在盒子里,这就像寄存器寻址,操作数在寄存器里;再大了一点,孩子又和妈妈说要吃苹果,妈妈给了他一个纸条,上面写着放苹果的地址,例如在厨柜的第二个抽屉里,孩子按照地址找到苹果。这就是直接寻址方式。给出操作数的地址;如果妈妈给孩子一个盒子,打开盒子,里面是一个字条,写着放苹果的地方,孩子按照地址找苹果。这就像寄存器间接寻址,寄存器存放的是操作数的地址,按照地址找到操作数。通过这样的讲解使得学生很容易理解寻址方式的精髓,不必再去死记硬背,很快就能理解和记忆,在实际教学中效果良好。

3.3、实现对上机环境的知识建构

通过分析代码在源程序和DEBUG下的区别,帮助学生利用已学得的汇编指令实现对上机环境的知识建构。代码在源程序和DEBUG下的区别明显存在的,源程序中的汇编指令经过编译发了很多变化,不同版本的DEBUG对机器指令的反汇编结果也不完全一致。了解这些区别对学生熟悉和掌握DEBUG的作用非常巨大。

3.4、努力提高学生的学习兴趣

根据高级语言程序“可视化”的特点,在开展案例教学时,利用DOS功能调用和BIOS功能调用来设计“可视化”的汇编语言程序,在相互作用阶段帮助学生建构汇编语言的案例知识。汇编语言写起来费劲,调试起来困难,怎样才能引起学生学习的兴趣是教师的一个非常重要的工作。因为平常所说的操作用汇编语言来写都十分困难,即使是写出来了,运行起来可能什么都看不到,学生很难有兴趣去编写更多的汇编程序,如何解决这一问题是汇编语言教学成败的关键,用DOS功能调用和BIOS功能调用,就可以在很大程度上解决汇编程序运行起来什么都看不到的问题,如果运用得好可以产生非常好的演示效果,大大增强汇编语言运行的可视程度,从而极大地激发学生学习汇编语言的兴趣。另外,还要特别给学生指出:如果在调试运行程序时系统中断资源发生变化,一些使用BIOS中断资源或DOS功能调用的程序,其执行结果可能会不正常。如有的学生在录入源程序时为注释汉字信息,而在WINDOWS平台的DOS兼容模式下加载了汉字平台,结果该让喇叭鸣叫的地方而无此运行现象。

3.5、编制有利于学生兴趣建构的上机习题集

深入分析汇编语言上机环境,结合理论教学进度,编制梯度合理、易学、易练、易调试,有较直观的运行结果和一定趣味性的上机习题集,提高学生的程序设计和调试技能,促进汇编语言教学效果的进一步提高。

3.6、建构教师引导、学生主导的生态课堂

密切关注课堂生态环境,充分利用环境资源,引导学生进入生动活泼的教学氛围。在汇编语言教学中,为了随堂掌握学生的学习情况,经常要求学生把自己编写的程序段写在黑板上来讲评,由于学生对知识理解和掌握的差异,在评讲过程中,无法预料会出现何种错误,因此需要教师随机应变,根据学生情况,总结代表性的错误总之,针对汇编语言的课程特点,将建构主义的理论与方法手段引入课堂,使课堂不仅成为知识传递的场所,更是促进学生完善和发展自我的舞台,实现教学相长。

4、结束语