汇编语言程序设计范文1
关键词:汇编语言程序设计;高级语言程序设计;比较教学法
“汇编语言程序设计”是计算机相关专业的一门重要课程,目前国内大部分院校的相关专业都有开设。从时间上看,“汇编语言程序设计”一般开设在大学二年级,从课程的衔接上看,则一般开设在“高级语言程序设计”和“计算机组成原理”之后。
汇编语言也好,高级语言也好,它们都只不过是程序设计的工具,因此对于程序的基本功能和程序设计的基本问题,它们都有相应的实现机制,而且在很多方面都是相通的,尤其是在程序设计的基本思想方法上。但汇编语言和高级语言毕竟是两种不同的语言类别。从源程序的基本单位――语句的层面看,高级语言语句的功能远比汇编语言语句即各种指令和伪指令的功能要强大。此外即便是同样的问题,如数据安排、数据处理、流程控制、子程序结构等,它们的实现机制也不一样。
效率最高的教学方法首推比较教学法(或叫类比教学法),也就是将新的陌生的东西和旧的熟悉的东西做比较,找出它们之间相同的地方和不同的地方,然后进行差异化的学习,重在存同求异,这样就会事半功倍。
因此,笔者在多年从事“汇编语言程序设计”的教学中,特别注重以学生在学习高级语言程序设计课程时所获得的知识和体验为基础,将汇编语言和高级语言进行比较教学。
本文就是这一教学方法的经验总结。
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)
汇编语言程序设计范文2
关键词:汇编语言 I/O 子程序 库
中图分类号:TP313 文献标识码:B 文章编号:1002-2422(2008)03-0086-02
设计的I/O子程序库包括16位版本和32位版本,可分别应用于16位和32位汇编语言应用程序,提供的子程序功能包括不同数制和字符串的输入与显示,状态标志的显示,满足汇编语言程序设计的通常要求。
1 设计方案
1.1子程序功能需求
根据在汇编语言程序设计中的通常要求,子程序所提供的功能主要包括键盘输入和显示器显示,输入和显示的内容可以是不同的数制与字符串格式。如表1所示。
1.2子程序库结构
为了方便整个子程序库的设计,设计了一些通用予程序。在实现提供给用户使用的子程序时,充分利用这些通用子程序,简化了子程序的代码编写,减少了子程序库的长度。主要子程序之间的关系如图1所示。
字符输入和显示子程序READC、DISPC是整个子程序库输入输出的基础。利用这两个子程序实现了字符串输入和显示子程序READMSG和DISPMSG。子程序READMSG和DISPMSG又是不同数制数据输入和显示的基础:通过调用READMSG读入字符串,然后调用字符串转换子程序STRTOBIN、STRTOHEX、STRTOUI和STRTOSl分别将字符串转换为不同数制的数据,从而实现了不同数制输入的子程序READBIN、READHEX、READUI、READSI等;通过调用DISPMSG显示字符串,然后调用数据转换字符串子程序BINTOSTR、HEXTOSTR、UITOSTR和SITOSTR分别将字符串转换为不同数制的数据,从而实现了显示不同数制的子程序DISPBIN、DISPHEX、DISPUI、DISPSI等。
设计的16位和32位的子程序库提供的子程序功能都是相同的,区别在于16位的字符输入子程序是利用DOS系统调用实现的,而32位的字符输入子程序是利用WIN-DOWS API函数实现的。其他子程序则可以通用。
各个子程序汇编后,由库管理工具LIB.EXE生成16位子程序库I/O16.LIB和32位子程序库I/O32.LIB。
1.3参数传递
汇编语言子程序的参数传递可以采用寄存器传递,共享内存变量和堆栈传递三种方法。堆栈传递参数时,可以用MASM提供的伪指令PROTO来声明子程序,用INVOKE来调用子程序。这两个伪指令在声明和调用子程序时相对于CALL指令和PROC伪指令要简洁得多。使用堆栈传递参数也是高级语言通常使用的子程序传递参数的方法,用堆栈传递参数的子程序可以被高级语言调用。子程序的返回参数也遵循高级语言子程序的规范,采用寄存器EAX返回子程序的出口参数。
1.4宏命令
调用子程序需要用专门的调用指令并遵循一定的格式要求,这对于初学者来说有一定的难度。当子程序的参数比较多时,调用子程序的编码量较多,设计了调用子程序的宏指令,利用宏指令来实现对应的子程序调用,格式简单,使用方便,尤其适合初学者应用。为提高代码的复用性,被调用子程序的声明和宏定义都放在包含文件IO.INC中,在汇编语言应用程序中用INCLUDE语句包含该文件即可。
汇编语言程序设计范文3
汇编语言不同于其它高级语言,必须要求编程人员有一定的硬件基础,如对CPU的结构、CPU与存储器等部件的数据传送过程必须要有基本的了解,这样才能学好这门课程。在教学过程中,我们发现学生对高级语言编程学习积极性高,对汇编语言课程缺乏兴趣,因为课程本身指令复杂,规定繁多,再加上学习汇编指令前对CPU的相关工作过程理解不透,导致学生厌学,又由于本课程面对的低年级学生只有高级语言的基础,习惯于高级语言的自然表达,初次接触计算机硬件知识心理上有恐惧感,更难以适应繁杂的低级语言。
针对本课程的特点,对教学内容、环节、过程等进行了精心设计,下面就教学方法的设计、实践教学方法、课程考核形式等方面进行的一系列改革进行详细探讨。
2教学方法设计改革
为了避免学生因指令复杂,规定繁多、难度大而对该课程产生畏惧的学习心理,教师有必要对教学内容进行合理组织,对教学过程进行精心的设计。
2.1利用FLASH技术,使教学难点容易理解
在多年的教学过程中,我发现学生在学习CPU结构这章节中,对介绍的CPU由哪些寄存器(名称、大小)构成,各个寄存器的含义,用途,CPU与存储器等部件的数据传送过程,会觉得很抽象,多数同学都是采用死记硬背的方式,这章节是第二章节的内容,也是能否学好该课程关键的一章,如果理解不深,这无疑为后续的学习,特别是寻址方式的学习埋下了隐患。
针对这个问题,教师有必要对教学过程进行精心的设计。
在这章节中我们利用FLASH技术,把各种寻址方式下传送指令的CPU与存储器等部件的数据传送过程以动画形式展现给学生,使得复杂,抽象的过程变得直观,学生理解比较容易,也加深了对寻址方式的记忆。
2.2对比法教学
目前计算机专业的课程设置中,《汇编程序语言的程序设计》课程通常是学习完C语言课程之后开始学习的。所以在教学中可以采用对比法来讲解课程,对某些语法知识点和程序设计过程我们可以以C语言和汇编语言对应分析。
例如在介绍寄存器时,由于在一般的c语言程序中并没有直接使用到寄存器。因此,我们使用vC++6.0环境下的调试工具显示一个c语言程序及其对应的机器码,让学生看到编写汇编程序寄存器的用途,加深了学生对汇编语言程序的理解。
int m=5,n=6,c;
004010E8 mov dword ptr [ebp-4],5
004010EF mov dword ptr [ebp-8],6
c=m+n;
004010F6 mov eax,dword ptr [ebp-4]
004010F9 add eax,dword ptr [ebp-8]
004010FC mov dword ptr [ebp-0Ch],eax
在介绍语法知识时,比如变量的定义:
C语言中的变量定义形式如下:
int c1,c2=0;
汇编语言的变量定义形式如下:
cl DW ?
c2 DW 0
2.3抽象概念的比喻教学法
在对段地址和偏移地址的讲解过程中,可以采用比喻法,把操作数比喻成学生,把教室的房间号比喻成段地址,教室内每个座位编个号,编号就是偏移地址,要想到教室把某个学生找到,就要找到相应的教室号,再到对应的座位号找到这个学生,同理,要想把主存中的操作数找到就要找到段地址和相应的偏移地址,另外要让学生知道每个教室里的座位号都是从0号开始编号的,也就是每个段里的偏移地址如果不特别指定,也是从0号开始编号的。
3实践教学改革
3.1增强实验环节,做一些实际项目
程序设计对于大多数的初学者来说有一定的难度。对于给定的一个实验题目,许多学生往往感到无从下手。目前的上机实验时间往往很短,常常是学生才刚刚有点入门,实验环节就结束了;且课外实践环节几乎没有,导致学生即使课内学的再好也不会应用。
在实验设计方面可以先把一些经典的程序提供给学生,例如分支结构的设计、循环结构的设计等,让学生在写出C语言程序之后再设计汇编程序,找出两者编程思维的区别。这样通过一段时间的经验积累,就能够编写比较复杂的的程序,由于上机时间有限,可以每次实验课之后布置一些题目供学生选择思考,让学生课外分组来设计这些程序,题目的类型可以是研讨型的让学生从更多的角度去思考上机实验过的题目,编写出不同的程序;另一种为编程型,
例如可以设置这2道题目,音乐小键盘、贪吃蛇游戏等,以加强同学们的编程能力的训练。
3.2采用与高级语言混合编程
目前越来越多的场合要使用汇编语言和高级语言进行混合编程,因此在教学时应强调汇编语言和C/C++的混合编程,并且这样也可以为今后嵌入式系统软件开发的学习打下坚实的软硬件基础。
在实验课中可以借助 Visual C++开发工具,采用内联汇编的方式,在 C/C++源程序中嵌入汇编指令序列完成一定的功能,并让学生设置断点然后跟踪执行,同时注意观察寄存器的内容和变量的值。这样可以一方面让同学们熟练掌握两种语言的切换使用,另一方面让他们感受到两种语言各有特点。例如可以利用汇编语言处理高级语言中不方便处理的一些问题。
4课程考核形式改革
因为“汇编语言程序设计”是实践性很强的一门课程,所以实验课成绩应该在总成绩中占有相当大的比重。目前大多数高校的汇编语言课程的实验课成绩只占很小的比重,即理论知识往往占课程期末考核总成绩的70%~80%,这样往往会导致学生不得不将大量的精力放在理论知识的学习中,结果只会造就大批的应试高手。在教学中,我们遇到过有的学生考试试卷能考90分以上,却连最基本的计算机操作都不能动手。今后这门课程的考核,实验课成绩应该提高到占总成绩的1/2。老师在实验中应该营造出互动气氛,检查每个学生的完成情况同时做好记录,根据学生的实际动手情况给出他们的平时实验成绩,而不是只依据交上来的实验报告,这样也能杜绝抄袭之风。
汇编语言程序设计范文4
关键词:汇编语言;教学改革;多媒体教学方法;案例教学方法
中图分类号:G434 文献标识码:A 文章编号:1672-7800(2012)005-0214-02
0 引言
汇编语言程序设计是计算机专业及相关专业重要的专业必修课。汇编语言面向计算机硬件,与计算机机器指令一一对应,功能强大,使用灵活。目标程序效率高,长期以来一直适用于系统软件及驱动程序的编写。汇编语言程序设计课程不仅需要培养学生的程序设计技能,而且还要培养学生对计算机硬件运行机制的理解能力,为学习后续与硬件密切相关的课程(如计算机组成原理,微机原理与接口,单片机等)打下扎实的基础知识,同时,它也是NCRE三级的一个可选科目,因此其对计算机专业及相关专业的重要性不言而喻。
该门课程的特点是软件知识与硬件知识相互融合,理论与实践并重,同时对英语水平的要求也比一般计算机高级语言高,而独立学院是一种新型高等教育办学形式,其高考招生录取分数线主要介于普通本科和高等专科之间。独立学院学生在基础知识、自身素质、自制力、认知能力等方面与一本和二本的学生存在一定的差异。所以在汇编语言程序设计课程教学中,许多学生都反映课程内容抽象,难理解、难掌握,从而产生了不同程度的畏难心理,对教学效果产生消极影响。为了能较好地提高该课程的教学质量,本文从该门课程和学生特点入手,通过长期的教学实践,总结了一些思路和建议,并将其运用到实际教学中,有效地提高了学生的学习积极性,取得了较好的教学效果。
1 独立学院汇编语言程序设计课程教学中存在的问题
1.1 从课程内容来说,客观上确实比较抽象
学习汇编语言程序设计的学生,通常只学习过计算机导论和一门高级计算机语言,对于计算机硬件运行的机制很陌生,无法将冯•诺依曼工作原理与80x86计算机组织相互联系,导致一开始学习面向硬件编程的汇编语言,就有很强烈的挫折感,丧失了学习的自信和兴趣。由于学生80x86计算机组织的知识没有很好掌握,使得其指令系统和寻址方式的学习根本难以有效进行,其后果是这门课程难以学下去。
1.2 学生未养成良好的学习习惯,没有掌握正确的学习方法
汇编语言程序设计课程一般开设在大一第二学期,许多学生还没有完全适应大学的学习方式,遇到困难容易退缩,不能发挥学习的潜能,且对自己学习时间安排不够科学充分,达不到消化吸收课堂和课本知识的效果。部分学生还有“等靠要”的依赖思想,等教师来总结,靠教师来消化,要教师来灌输,没有发挥学习主体应用的主观能动性。
1.3 教学过程没有以学生为中心
传统教学方式以教师和教材为中心,课堂上教师与学生沟通较少,这样显然教学进度有了保证,但学生是否能跟上教学的进度却成了未知数。不充分的沟通还导致了教师对学生的学习指导缺乏针对性。教师不了解学生学习困难的具体细节,不可能正确引导学生克服困难,也无法加强教师与学生的相互联系。
1.4 学生理论与实践脱节
在汇编语言程序设计教学过程中,理论与实践是并重的关系,偏袒任何一方都不可能有好的教学效果。偏向理论,实践不到位,应用能力低下;偏向实践,学习到的知识无法系统化、条理化,不利于知识水平的提高和升华,导致知识水平有一定的局限性。在该门课程教学实践过程中,这两种情况的学生都有,急需教师给予科学引导。
2 独立学院汇编语言程序设计课程教学改革
为了解决好上述教学问题,笔者针对独立学院的办学特点和学生特点,总结了一些有益的思路和想法,具体思路如下:
2.1 课程开始时,要和学生就如何学习好汇编语言程序设计这门课程作充分的沟通
课程一开始,就需要将这课程的特点、难点,及其所需要的合理学习时间和正确的方法告诉学生,帮助学生科学合理安排好自己的学习时间,使学习达到应有的效果,同时也有利于学生做好积极战胜学习困难的心理准备。通过笔者自身的学习经历和与众多学习效果比较好的同学沟通,一致认为汇编语言程序设计在学习的开始阶段,上课时间与自己理解消化的时间的比例以1∶6为佳。
2.2 使用多媒体教学方法,变抽象为具体
主要是通过制作多媒体课件,使用文字、图形/图像、动画等素材,向学生动态展现学习内容里比较难想象和难理解的部分,帮助学生深刻理解80x86计算机组织和运行机制以及计算机工作原理的动态过程,从而为学生学习指令系统和寻址方式清除障碍,打下坚实的知识基础,并为今后的硬件知识学习建立一个初步的知识框架。同时,帮助学生克服学习上的困难和挫折感,保持学习的自信和兴趣。
2.3 引入“案例”式教学方法,加强理论联系实际,理论指导实际工作
“案例”式教学方法的引入,可以使学生将学习的理论进行实践,学生在学习理论的过程中始终在思考如何完成对应的案例,较好地激发了学生的学习热情和学习兴趣,同时也兼顾了学习的连贯性和整体性。如让学生完成一个“从键盘输入2个十连制数,然后比较它们的大小,最后在屏幕上输出比较结果”的案例,可以让学生完成对输出/入、字符比较等理论知识的实践,又可以使学生提高如何将有关的理论知识联系在一起,解决实际问题的能力。
在每次实践前,都要求学生做好实践计划,将有关理论知识进行复习。实践完毕,都要求学生对结果进行原因分析,成功的,总结经验;失败的,吸取教训。从而提高学生的理论水平,防止理论与实际脱节。
2.4 教学以学生为中心,课堂教学提倡精讲多练
根据学生特点,对教材内容进行漏选,对涉及知识总体框架的重要知识点及其相互关系详讲,而对于偏、难的内容,则略讲或不讲。同时,在课堂教学中实时地,有针对性地进行课堂练习,学生通过练习产生的问题,可以得到及时的反馈,教师也可以及时准确地知道学生的不足,以便针对这些不足进行教学进度计划的调整、加强和补充。这一方式不但提高了学生的学习兴趣,巩固了所学知识,也加强了教师和学生之间的互动和沟通,有利于建立学生对该门课程的学习自信心。
3 结束语
本文总结了独立学院在汇编语言程序设计教学过程中存在的一些问题,并针对性的提出了一些思路和建议,并将其运用于实际的教学实践中。实践表明这些解决问题的教学思路方法具有一定的实际意义,取得了较好的教学效果,有利于培养高素质的应用型人才。
参考文献:
[1] 玉婷.独立学院Visual FoxPro 课程教学与考试改革初探[J].中国教育信息化,2012(2).
[2] 于丽波.三本院校学生特点分析[J].科技信息,2011(8).
汇编语言程序设计范文5
关键词:汇编语言,C语言
单片机的开发离不开单片机的开发语言,对于一个开发者来说,选择适合的语言是非常重要的一个开发环节。
目前的单片机的编程语言主要有汇编和高级语言两种,每一种类型的单片机都有自己的汇编语言,软件可移植性不是很好。而高级语言有C 语言,PLM 语言,PASCAL 语言,BASIC语言等几种。BASIC 语言主要应用在MCS51 系列单片机上,但效果不是很理想,现在已经基本上不用。PLM 语言主要应用在MCS51 和MCS96 系列单片机中,对硬件的控制能力和代码效率都很好,PLM51语言是介于C语言和汇编语言之间的一种高级语言, 是由一种曾经用于大中型计算机的高级语言 PLM 语言移植来的。PLM 的程序书写格式相当灵活,其说明语句写在输入行的位置不受限制,而且程序的元素之间可以随意插入空格。PASCAL语言在MOTOROLA 单片机中有应用。C语言是现代单片机开发中较常用的高级语言,其程序的可读性,可移植性都很好,对硬件的控制能力也很强,唯一不足的是其代码效率较低,在程序量较大时需使用大容量的程序存储器。下边本文就主流的汇编语言与C语言的语言结构和特点进行研究。
首先是汇编语言的结构及特点。
汇编语言是一种采用助记符来编写程序的语言,它由操作符和操作数两个部分组成,其中操作数又分为源操作数和目的操作数。汇编语言比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。论文大全,汇编语言。。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
由于汇编语言中使用了助记符,用汇编语言编制的程序必须通过预先放入计算机的'汇编程序'的加工和翻译,才可以变成能被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。
其次是C语言的结构及特点。
C语言是一种通用的计算机程序设计语言,在国际上十分流行,它既可用来编写计算机的系统程序,也可用来编写一般的应用程序。以前计算机的系统软件主要使用汇编语言编写的,对于单片机应用系统来说更是如此。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用系统程序的周期长,而且调试和排错也比较困难。而一般效率高的高级语言难以实现汇编语言对于计算机硬件直接进行操作(如对内存地址的操作移位操作等)的功能。而C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,并且采用C语言编写的程序能够很容易地在不同类型的计算机之间进行移植,因此许多以前只能采用汇编语言来解决的问题现在可以改用C语言来解决。
C语言可以用来编写科学计算或其他应用程序,但它更适合于编写计算机的操作系统程序以及其他一些需要对机器硬件进行操作的场合,有的大型应用软件也采用C语言进行编写,这主要是因为C语言具有很好的可移植性和硬件控制能力,表达和运算能力也较强。
概括来说,C语言具有以下一些特点:
1.语言简洁紧凑,使用方便灵活 :C语言一共只有32个关键字,9个控制语句,主要用小写字母表示,压缩了一切不必要的成分;C语言程序书写形式自由,可以用简单的方法构造出复杂的数据类型和程序结构。
2.运算符丰富 :C语言把括号、赋值、强制类型转换等都作为运算符处理,从而使C的运算类型极其丰富,共有34 种运算符。C表达式类型多样化,灵活使用各种运算符可以实现其他高级语言难以实现的运算。
3.数据结构类型丰富 :C的数据结构类型丰富,根据需要可以采用:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等多种数据类型来实现复杂数据结构的运算,尤其是指针类型数据使用起来非常灵活多样。
4.可进行结构化程序设计 :C语言是以函数作为程序设计的基本单位的,用函数作为程序模块以实现程序的模块化,是结构化的理想语言。
5.语法限制不严格,程序设计自由度大 :C语言的语法规则不太严格,程序设计的自由度比较大,限制和灵活是一对矛盾。C语言放宽了语法检查,所以程序员应当仔细检查程序,而不要过分依赖C编译程序去查错。
6.C语言允许直接访问物理地址 :C语言允许直接访问物理地址,能进行位(bit )操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作,这样它可以对单片机的内部寄存器和I/O口进行操作,可以直接访问片内或片外存储器。
7.生成目标代码质量高 :众所周知,汇编语言程序目标代码的效率是最高的,但统计表明,C语言编 写的程序生成代码的效率仅比汇编语言低10~20%。
8.程序可移植性好 :汇编语言完全依赖于机器硬件,因而不具有可移植性,C语言是通过编译来得到可执行代码的。C语言的编译程序便于移植,基本上不作修改就能用于各种机器和操作系统。
尽管C语言具有许多的优点,但和其他任何一种程序设计语言一样,也有其自身的缺点。但总的来说,C语言的优点远远超过了它的缺点。论文大全,汇编语言。。
因此我们在使用中通常将汇编语言和C语言相结合,利用共同的优点来完成开发工作。那在C语言中如何使用汇编语言呢?这个问题在不同的编译器中,具体实现方法是不同的。不过在实现大方上也不过就是有两种,而且各种编译器的实现方法也是大同小异。论文大全,汇编语言。。通常的方法是:一、对C语言程序编译后形成的汇编程序进行手工修改与优化;二、在C语言程序中直接嵌人汇编语句;三、分别编写C语言程序和汇编语言程序,然后独立编译成目标代码模块,再进行链接。第一种编程方式要求对汇编与C语言都极其熟悉,并且这样的编程方式对程序的可读性和扩展性的负面影响比较大,一般不建议使用。第二种方法适用于语句执行频率非常高,并且C编程与汇编编程效率差异较大的情况,例如进入中断的通用中断子程序等。第三种方式是混合编程最常用的方式之一,在这种方式下,C语言程序与汇编语言程序均可使用另一方定义的函数与变量。通过这样的方法就可以使二者结合起来,达到混合使用的目的。
以上就是本文对多种单片机的开发语言特点进行的研究。
参考文献:
[1]陈建铎.单片机原理于应用.北京:科学出版社,2005.2
[2]刘守义.单片机应用技术.西安:西安电子科技大学出版社,2007.8
[3]李平,杜涛,罗和平.单片机应用开发与实践.北京:机械工业出版社,2008.7
汇编语言程序设计范文6
关键词: 比较教学法;汇编语言; C语言;实践;教学效果
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2013)10-2402-02
汇编语言程序设计是计算机专业学生的专业基础课、必修课,属于低级语言的程序设计,是硬件类课程和操作系统的先行课和基础课,是高级语言程序设计的扩展。汇编语言是架起软件、硬件知识的一座桥梁,它不但有利于学生理解计算机的工作原理,而且对学生程序设计能力的培养起着十分重要的作用。
在汇编语言课程教学中发现,汇编语言相对于其他高级语言来说缺乏直观性与生动性,是一门比较抽象和理论化的课程,学生养成了“重软件、轻硬件”的学习态度,往往会选择一些容易学习的高级语言而忽视了对汇编语言的学习,因此在教学中普遍存在“教师难教,学生难学”的问题。
如何改善汇编语言课程的教学效果和教学质量,提高学生学习的兴趣和主动性是当前急需解决的问题。将比较教学法引入到“汇编语言”的教学中,该教学方法注重将汇编语言和
高级语言进行比较教学,能够极大提高学生的学习兴趣,取得良好的教学效果。
1 比较教学法在汇编语言课程教学中的应用
1.1 比较教学法
比较教学法( 或叫类比教学法)是指在教学活动中将两个或两个以上的认识对象放在一定的条件下,按照同一标准进行对照比较,从而确定认识对象属性的同异、地位的主次、作用的大小、性能的优劣、问题的难易或认识的正误深浅,以达到辨识、了解和把握认识对象之目的的一种方法[1]。比较教学法是最常用的教学方法之一,也是使用范围最广的教学方法之一。
由于学生在学习汇编语言之前已经至少学习过如C这类高级语言,所以采用比较教学法不仅能更好地理解汇编语言,同时加深对高级语言的理解也有很大的好处。在实际教学过程中,可以将新的陌生的东西(汇编语言)和旧的熟悉的东西(C语言)做比较,找出它们之间相同的地方和不同的地方,然后进行差异化的学习,重在存同求异,这样就会事半功倍,达到理想的教学效果。
1.2 比较教学法在汇编语言课程与C语言课程教学中的实践
高级语言(如C语言)和汇编语言两者都是程序设计的工具,在程序的基本功能和程序设计的基本问题上均有相应的实现机制,同时在某些方面是相通的,换句话说许多用汇编语言能作的工作也可以用C语言来完成。
2)两操作数的类型匹配问题。
2 结论
限于篇幅,以上仅举2个例子来说明教学过程中如何将汇编语言和C语言进行比较教学,已经取得了很好的教学效果。由于语言的相通性,实际上在整个汇编语言教学中还有很多知识点可以把C语言知识贯穿其中。通过比较教学,一方面学生可以更好地学习汇编语言的相关知识,极大地提高学习效率;另一方面,更提高了学生对C语言的更高层次上的认识,间接地对其他学科的学习也起到了很大的帮助作用。
参考文献:
[1] 李运模.比较教学法论略[J].中南民族学院学报:人文社会科学版,2000(3).
[2] 沈美明,沈冬婵. IBM-PC 汇编语言程序设计[M].2版.北京:清华大学出版社,2001.
[3] 谭浩强.C程序设计[M].3 版.北京:清华大学出版社,2005.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至tiexin666##126.com举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://tiexin66.com/syfw/513724.html