公务员期刊网 精选范文 汇编语言程序设计范文

汇编语言程序设计精选(九篇)

汇编语言程序设计

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

程序设计在高校计算机及相关专业的课程中是最主要的基础课,而汇编语言程序设计又是程序设计的基础,并且是微机原理、操作系统、编译原理和系统结构等主要课程的基础课,是一门软硬件相结合、理论联系实践的课程。如果没有汇编语言程序设计作为基础,想要学深学透后续课程是十分困难的。学好汇编语言可以更好地深入理解和掌握计算机的硬件构成和工作机理,为进行计算机相关的应用和研究奠定基础[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段寄存器,完成转移。

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

关键词: 高职院校《汇编语言程序设计》教学方法

1.前言

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

汇编语言直接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.结语

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

参考文献:

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

关键词: 汇编语言; 子程序; 宏; 中断; 实验设计

中图分类号:G642 文献标志码:B 文章编号:1006-8228(2013)02-58-02

Experimental design of assembly sub-routines in “assembly language and microcomputer principle”

Zhao Yongbiao, Zhang Qilin, Zhan Bin, Kang Changqing

(School of Mathematics and Computer Science, Hubei University of Art and Science, Xiangyang, Hubei 441053, China)

Abstract: "Assembly language and microcomputer principle" is a compulsory course for students of computer science and technology specialty. Assembly language is an important section of this course. There are two common problems exiting in experimental design on sub-routines in assembly language and microcomputer principle——the scheduling time being little and the experiment content being non-comprehensive. The former can be solved by integrating some experiments to set apart enough time for sub-routine experiment. The solution for the latter is adding macro and interrupt, which is closely related to procedure, to experiment content. A design example is provided which is simple, practical and creative. Good teaching effect is obtained.

Key words: assembly language; sub-routines; macro; interrupt; experiment design

0 引言

“汇编语言与微机原理”是计算机科学与技术专业的必修基础课程。该课程融合了汇编语言程序设计和微机原理与接口技术两门课程的内容,要求学生重点掌握汇编语言程序设计的方法和微型计算机系统各个部件的工作原理。掌握汇编语言是掌握微机原理的基础,因为实现和验证微机系统各个部件的工作过程需要用到汇编语言,并且更高层次的综合系统设计也离不开汇编语言。

汇编语言与微机原理课程中,汇编语言子程序设计这部分内容的知识掌握起到承上启下的作用。其“承上”的作用体现在:作为一个独立的模块,子程序设计涵盖之前所学的汇编语言的指令系统、伪指令、数据类型及三种基本控制结构(顺序结构、分支结构和循环结构)。其“启下”的作用体现在:①后续接口芯片的功能应用基本上都是以子程序的形式实现;②中断系统中的中断服务程序就是一种子程序,中断系统是微机系统中非常重要的组成部分,可以说不理解中断系统就不能理解计算机的工作原理[1],而掌握子程序设计是理解和应用中断系统的基础之一;③子程序设计是开发大型程序的基础,对于培养编程能力十分重要[1]。因此,汇编语言子程序设计这部分内容无论在教学上还是在实验中都必须给予足够的重视。但目前鲜有文献涉及这方面的问题,本文针对目前汇编语言与微机原理课程中汇编语言子程序实验设计中普遍存在的问题给出相应的对策,并给出一个实验设计实例。

1 实验设计存在的问题及对策

⑴ 实验学时安排不够。据粗略调查,大多数院校汇编语言与微机原理课程的实验学时为18个学时[1],有一些院校还附加一个课程设计。对于这18个实验学时普遍的分配方式如表1所示。

表1 汇编语言与微机原理实验项目及学时安排表

[类别\&项目\&学时\&汇编语言程序设计部分

(12学时)\&汇编语言上机过程及DEBUG的使用\&2\&DOS系统功能调用\&2\&三种基本程序结构\&6\&子程序\&2\&接口芯片部分

(6学时)\&可编程中断控制器8259\&2\&并行接口芯片8255\&2\&可编程定时/计数器8253\&2\&]

从表1可以看出,子程序实验仅安排了2个学时,学时太少,难以取得良好的训练效果,可以考虑将实验“DOS系统功能调用”融合到“三种基本程序结构”中,腾出2个学时给子程序实验,有助于学生深刻全面的理解子程序的相关知识。

⑵ 实验内容“片面”。对于汇编语言子程序实验,大多数院校的实验内容只涉及到两方面的知识:①子程序的类型(近子程序和远子程序);②三种参数传递方式(寄存器传递、内存单元传递、堆栈传递)[2]。这并不全面,与子程序密切相关的知识应该还包含宏和中断服务程序,所以有必要在实验中安排相应的内容让学生理解子程序与宏的区别,以及如何把一个子程序“注册”为中断服务程序,然后通过软中断指令(INT n)调用该程序的过程,这样做有助于后面对中断系统的学习。中断是学习汇编语言的重点、难点部分,能否真正掌握汇编语言对中断的理解和掌握至关重要,中断也是汇编语言的魅力所在[3]。

2 实验设计的一个实例

针对前面提到的问题,在此给出一个汇编语言子程序实验设计实例,主要内容如下:

⑴ 实验学时:4学时。

⑵ 实验目的:

① 掌握子程序的编写及调用方法;

② 掌握近子程序和远子程序的区别;

③ 掌握三种参数传递方式的差别;

④ 掌握子程序与宏的区别;

⑤ 掌握编写中断服务程序的方法以及通过软中断指令。

⑶ 实验内容:

① 编写一个近子程序实现将一个字节的数据以十六进制的形式输出,采用寄存器参数传递方式;

② 编写一个远子程序,功能与①相同,采用堆栈参数传递方式;

③ 变量STR中存有一个以’$’作为结束符的字符串,编写一个子程序实现将STR中所有的大写字母全部改为小写字母,采用内存单元参数传递方式;

④ 用宏实现①中的功能;

⑤ 编写一中断服务程序实现①中功能。提示:利用DOS系统功能调用的35H号功能和25H号功能提取和设置中断向量,具体如表2所示。

表2 DOS系统功能调用的35H号和25H号功能说明[4]

[功能号\&功能\&入口参数\&出口参数\&25H\&设置中断向量\&DS:DX=所设置中断向量的段基址:偏移量AL=欲设置中断向量所对应的中断号\&无\&35H\&取中断向量\&AL=欲取中断向量所对应的中断类型号\&ES:BX=取得的中断向量的段基址:偏移量\&]

该实验设计实例特点鲜明,首先实验所要求完成的功能都是汇编语言中简单而又常用的功能,这一方面可以使学生不必花太多功夫在算法实现上,而把主要精力集中在子程序本身的语法上,另一方面实验中所完成的程序在后续的实验中可以直接调用,减轻了学生在后续实验中的负担,同时加强了各实验之间的有机联系。我们的实验内容涵盖了与子程序相关的各种知识,特别是子程序与中断服务程序的关系,这也是本实验设计的创新之处。

3 结束语

汇编语言与微机原理课程中汇编语言子程序这部分内容占有很重要的地位。本文首先分析了其实验设计普遍存在的问题,随后给出了相应的对策,最后根据作者多年的教学经验给出了一个实验设计实例,该实例简单实用,又不乏创新之处。该实验设计已应用于实际教学中,取得了满意的效果。学生对汇编语言子程序有了更全面的了解,尤其是后续学习中断系统及8259芯片时,对中断服务程序的概念理解掌握得更迅速。本实验设计的不足之处是在培养学生模块化程序设计思想方面有所欠缺,这是下一步需要思考并改进的。

参考文献:

[1] 张学,陆庆,廖建明.汇编语言实验教学的思考[J].计算机教育,2009.15:81-82

[2] 孙德文.微型计算机技术(第3版)[M].高等教育出版社,2010.

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

关键词:汇编语言程序设计;自主化学习;在线学习;互联网技术

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

文章编号: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,易小琳

E-mail:

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

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

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

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

引言

“汇编语言与微机原理”是计算机科学与技术专业的必修基础课程。该课程融合了汇编语言程序设计和微机原理与接口技术两门课程的内容,要求学生重点掌握汇编语言程序设计的方法和微型计算机系统各个部件的工作原理。掌握汇编语言是掌握微机原理的基础,因为实现和验证微机系统各个部件的工作过程需要用到汇编语言,并且更高层次的综合系统设计也离不开汇编语言。

汇编语言与微机原理课程中,汇编语言子程序设计这部分内容的知识掌握起到承上启下的作用。其“承上”的作用体现在:作为一个独立的模块,子程序设计涵盖之前所学的汇编语言的指令系统、伪指令、数据类型及三种基本控制结构(顺序结构、分支结构和循环结构)。其“启下”的作用体现在:①后续接口芯片的功能应用基本上都是以子程序的形式实现;②中断系统中的中断服务程序就是一种子程序,中断系统是微机系统中非常重要的组成部分,可以说不理解中断系统就不能理解计算机的工作原理[1],而掌握子程序设计是本文由收集整理理解和应用中断系统的基础之一;③子程序设计是开发大型程序的基础,对于培养编程能力十分重要[1]。因此,汇编语言子程序设计这部分内容无论在教学上还是在实验中都必须给予足够的重视。但目前鲜有文献涉及这方面的问题,本文针对目前汇编语言与微机原理课程中汇编语言子程序实验设计中普遍存在的问题给出相应的对策,并给出一个实验设计实例。lw881.com

1 实验设计存在的问题及对策

⑴ 实验学时安排不够。据粗略调查,大多数院校汇编语言与微机原理课程的实验学时为18个学时[1],有一些院校还附加一个课程设计。对于这18个实验学时普遍的分配方式如表1所示。

表1 汇编语言与微机原理实验项目及学时安排表

[类别\&项目\&学时\&汇编语言程序设计部分

(12学时)\&汇编语言上机过程及debug的使用\&2\&dos系统功能调用\&2\&三种基本程序结构\&6\&子程序\&2\&接口芯片部分

(6学时)\&可编程中断控制器8259\&2\&并行接口芯片8255\&2\&可编程定时/计数器8253\&2\&]

从表1可以看出,子程序实验仅安排了2个学时,学时太少,难以取得良好的训练效果,可以考虑将实验“dos系统功能调用”融合到“三种基本程序结构”中,腾出2个学时给子程序实验,有助于学生深刻全面的理解子程序的相关知识。

⑵ 实验内容“片面”。对于汇编语言子程序实验,大多数院校的实验内容只涉及到两方面的知识:①子程序的类型(近子程序和远子程序);②三种参数传递方式(寄存器传递、内存单元传递、堆栈传递)[2]。这并不全面,与子程序密切相关的知识应该还包含宏和中断服务程序,所以有必要在实验中安排相应的内容让学生理解子程序与宏的区别,以及如何把一个子程序“注册”为中断服务程序,然后通过软中断指令(int n)调用该程序的过程,这样做有助于后面对中断系统的学习。中断是学习汇编语言的重点、难点部分,能否真正掌握汇编语言对中断的理解和掌握至关重要,中断也是汇编语言的魅力所在[3]。

2 实验设计的一个实例

针对前面提到的问题,在此给出一个汇编语言子程序实验设计实例,主要内容如下:

⑴ 实验学时:4学时。

⑵ 实验目的:

① 掌握子程序的编写及调用方法;

② 掌握近子程序和远子程序的区别;

③ 掌握三种参数传递方式的差别;

④ 掌握子程序与宏的区别;

⑤ 掌握编写中断服务程序的方法以及通过软中断指令。

⑶ 实验内容:

① 编写一个近子程序实现将一个字节的数据以十六进制的形式输出,采用寄存器参数传递方式;

② 编写一个远子程序,功能与①相同,采用堆栈参数传递方式;

③ 变量str中存有一个以’$’作为结束符的字符串,编写一个子程序实现将str中所有的大写字母全部改为小写字母,采用内存单元参数传递方式;

④ 用宏实现①中的功能;

⑤ 编写一中断服务程序实现①中功能。提示:利用dos系统功能调用的35h号功能和25h号功能提取和设置中断向量,具体如表2所示。

表2 dos系统功能调用的35h号和25h号功能说明[4]

[功能号\&功能\&入口参数\&出口参数\&25h\&设置中断向量\&ds:dx=所设置中断向量的段基址:偏移量al=欲设置中断向量所对应的中断号\&无\&35h\&取中断向量\&al=欲取中断向量所对应的中断类型号\&es:bx=取得的中断向量的段基址:偏移量\&]

该实验设计实例特点鲜明,首先实验所要求完成的功能都是汇编语言中简单而又常用的功能,这一方面可以使学生不必花太多功夫在算法实现上,而把主要精力集中在子程序本身的语法上,另一方面实验中所完成的程序在后续的实验中可以直接调用,减轻了学生在后续实验中的负担,同时加强了各实验之间的有机联系。我们的实验内容涵盖了与子程序相关的各种知识,特别是子程序与中断服务程序的关系,这也是本实验设计的创新之处。

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

 

关 键 词:C语言;计算机;软件编程;实验研究

一、C语言的概述

在1967年BCPL语言被英国MartinRichards 推出,到1970 年B 语言以BCPL 语言为基础被美国Ken Thompson推出[1]。但是B 语言过于简单,而且功能有限,经过研究者的多次试验研究,在1972—1973 年,C 语言在B 语言的基础上经过完善,被美国贝尔实验室D.M推出[2]。在各种计算机编程语言中,C语言属于一门高级语言,它是一切计算机语言的基础,拥有高级语言和低级语言的特点,灵活方便,简洁紧凑;而且它的语法限制不严格,程序员在设计时程序书写自由。不仅能够编写系统软件,同时还可以编写应用软件,能够适应于多种操作系统,应用广泛,可移植性强。总之,C语言对于信息技术的发展具有十分重要的作用和价值。

 

二、基于C语言的计算机软件编程实验研究

(一) C语言的编程技巧

1.灵活运用指针

在C语言编程的时候,指针是一种特殊类型的变量,它能够帮助程序员有效的表达和解决程序设计过程中遇到的复杂问题,熟练掌握指针是必要的。指针具有三要素:指针名以及指针类型和值[3]。在编程时,指针和一般变量名相同,但是在类型以及值上具有区别,另外,指针不仅能够被用于表示数组,还可以被作为函数的参数返回值。

 

2.C 语言的特有函数

在C语言编程的时候,有时需要用到一些特有函数。函数都具有一定的功能,同时函数名也反映了该函数的功能。在进行函数定义时,程序员需要把函数的名字、返回值类型以及参数名等各项都进行定义。另外,因为库函数是由C 编译系统提供的,这些函数均是系统首先定义好的,在程序调用的时候,程序员只需利用“#include 指令”把与之相关的头文件包含到所用文件中即可[4]。例如,在程序运行的过程中,如果用到了sqrt函数,则为了保证程序运行下去,头文件必须含有#include“string .h”。

 

3.算法技巧

在程序设计的过程中,算法是程序的灵魂,因此,掌握一定的算法技巧是必不可少的。通常情况下,算法不仅可以用自然语言表示,有的时候也利用流程图表示。需要注意的是,利用流程图表示算法时,程序设计员必须熟练掌握常用的流程图符号[5]。且“数学乃是计算机之母”,牢固的数学知识同样能够提升编程效率。

 

4.位运算以及文件知识

相比其他计算机高级语言的运算方法,位运算作为C 语言的重要特色,具有独特性和唯一性。位运算是以二进制位为对象,然后结合相关程序要求进行各种运算。文件包含有数据文件以及程序文件,是计算机不可缺少的,程序设计员在进行编程时,需要把所写的程序存储的文件之中,这样可以便于程序员查找数据,提升查找效率。

 

(二) C语言和汇编语言混合的程序设计案例分析

在本次的实验之中,在进行程序嵌入时,有其固定的格式,需要在嵌入的各行代码之前加“asm”关键字,也可以直接在asm代码块中放入汇编语句。但是程序设计者在进行嵌入时,一定要注意满足以下条件:汇编语言指令代码中关键字asm必不可少,且要放在指令代码之前;嵌入汇编语言指令代码能够和正常C语言程序混合,但是C语言的分隔符“;”必不可少;嵌入汇编语言时C语言的注释分界符必不可少,分别是“/*”和“*/” [6]。

 

(2)首先编写C语言程序以及汇编程序,然后独立编译目标代码模块,最终进行链接。

首先,在进行混合编程时,C语言程序能够调用汇编语言的各种子程序以及其定义的变量,同时,C语言编写的函数以及定义的变量等也可以被汇编语言调用。而且混合编程的过程中,一个任务往往是由若干个功能模块组成,且不同的功能模块均是利用合适的语言进行独立编程,且以函数的形式存在。因此,程序设计者要根据每一模块的特点选择相应的语言和语言编程系统进行独立编程,并形成目标文件,继而连接目标文件,形成完整的可执行文件。

 

在混合编程的过程中,设计者需要注意五个问题:参数传递问题;寄存器的使用问题;存储模式;变量以及函数的调用问题;子程序的返回值问题。

其中,关于参数传递问题,在进行C语言程序调用汇编程序时,必须遵从参数传递原则,利用堆栈把参数传递给汇编程序。例如,在C语言程序中含有函数:voidaa(char*p,int i),这个函数是利用汇编语言进行编写的,如果编译是在小内存模式下实施的,系统在进行调用时,则写成aa(&q , n);运行时程序首先把n压入堆栈,然后再把&q压入堆栈,当参数传递过来并被汇编语言的子程序取得时,BP寄存器便被用作基地址寄存器,实现对栈中所存数据进行存取操作。通常情况下,由于调用的子程序和C语言程序往往使用同一个堆栈,所以在程序执行时,汇编语言子程序需要执行两条指令:push bp pop bp、sp[7]。

 

2.混合的软件编程实例分析

三、小结

综上所述,随着信息技术的不断发展,人们对于计算机软件编程的功能要求也将越来越高,而利用C语言能够实现计算机软件的多种功能,因此研究者应当强化对于C语言的计算机软件编程实验研究,开发功能更加强大的软件。

 

参考文献

[1] 侯宏霞.提高“汇编语言”课程实验教学质量的几点思考[J].内蒙古农业大学学报(社会科学版),2011(01):25-26.

[2] 刘海峰.以培养实践能力为导向的“C语言”教学方法探讨[J].科技经济市场,2008(12):33-34.

[3] 阿娜古丽·阿布拉.C语言与汇编语言相互调用实现混合编程[J].电脑编程技巧与维护,2009(10):71-74.

[4] 刘丹,刘德山.C语言程序设计课程综合性和设计性实验研究[J].计算机教育,2012(09):31-32.

[5] 王应军,曲培新,赵晨萍.ARM汇编语言与C语言混合编程的实现方法[J].科技信息,2010(03):69-71.

[6] 方艳红,赵海龙.计算机高级语言程序设计类课程实践教学改革研究[J].中国科技信息,2008(19):12-14.

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

【关键词】C语言 计算机 软件编程

C语言应用建立在简单编程语言的基础上,是一项新型的编程语言确保了编程任务的顺利完成。使用者在实际的应用过程中,不受各项限制条件影响,可以结合自身的实际使用需求,严格按照C语言的编程要求进行编程。通过编程运行应用软件的实施结果上可以看出,C语言是计算机中的高级编程Z言,对提升计算机技术应用效果具有重要作用。

1 C语言下的计算机软件编程实验技巧

1.1 熟练掌握指针运用方法

指针是C语言编程中一种特殊的类型变量,能够快速处理编程设计过程中存在的复杂问题。指针的三要素主要包括指针名、值和类型。在对指针编程过程中,主要确保一般变量和指针的相同性。将指针应用于数组表示和函数的参数返回值中。

1.2 明确C语言特有函数功能

特有函数在C语言编程中被广泛应用,需要充分展现出函数的功能,编程设计人员需要将返回值、函数名字和参数名等项目进行定义。编程库中的函数主要是由C编译系统提供,需要确保函数系统的合理定义,确保程序调用的合理性,将“#include指令”包含到所用文件中。例如,在程序运行过程中,通常会运用sqrt函数,为了确保程序的合理运行,需要将#include“string.h”应用到头文件中。

1.3 掌握算法程序设计技巧

算法是程序设计的灵魂,需要明确算法技巧的应用方法,运用自然语言和流程图合理表达算法。要求程序设计员需要熟练掌握流程图符号,将其作为计算机之母,通过对数学知识的牢固应用,有助于提升计算机编程效率。

1.4 掌握位运算及文件知识

位运算是C语言之间的重要特色,也是计算机中的高级语言运算方法,自身具有唯一性和独特性特点。需要将位运算作为二进制位对象,严格按照程序要求进行运算。程序设计员在编程时,需要将所写的程序存储到文件中,提升数据查找效率。

2 计算机软件C语言编程案例

2.1 混合软件编程方法

随着科学技术的快速发展,需要加大对语言混合编程技巧的应用,对提升系统编程开发效率具有重要作用。在对混合软件编程方法进行研究时,主要包括以下两方面研究内容:

(1)需要将汇编语句嵌入到C语言源程序中,例如,在将asm汇编语句嵌入到C语言源程序中,需要将asm mov as,5/*将5发送到ax寄存器*/,将汇编语句嵌入到C语言源程序中时,需要利用大括号将嵌入程序括起来,例如:

Main( )

{asm{

mov ah,2

mov bh,5

int 10h

}

}

本次实验在实施过程中,在对程序进行嵌入式设计时,需要严格按照固定的格式进行嵌入式输入,并且需要在嵌入的各行代码前加“asm”。程序设计人员在进行嵌入式程序设计时,需要满足以下条件要求:“asm”关键字不可少,并且需要将其放置在指令代码前,需要确保嵌入汇编语言指令代码能够与正常的C语言程序混合使用,用“;”作为C语言的分隔符;将“/%”和“*/”作为C语言的注释分界符。

(2)做好C语言程序和汇编程序的编写工作,确保编译目标代码模块的独立性,确保链接的合理性。首先,明确C语言程序汇编语言中各种子程序和定义变量的合理性,确保汇编语言的合理调用。由于混合编程语言由若干个功能模块共同组成,各功能模块语言能够独立完成编程工作,并且通常会以函数的形式展现出来。设计人员需要结合每一模块的特点,来合理选择独立的语言编程系统,并形成目标性的文件,确保能够形成可视性的文件。其次,需要加大对参数传递问题的合理解决,从参数传递原则方面对C语言的程序调用汇编程序进行分析,运用推栈将参数传递给汇编程序。例如,在对voidaa(char*p,inti)函数进行编写时,主要是利用汇编语言进行编写,确保编译工作能够在小内存模式下开始,系统在调用时,将其编写成aa(&q,n)。

2.2 混合软件编程实例分析

在开展混合软件编程工作时,需要纯5个数中寻找最小值,将主程序设为“min.c”,汇编子程序设为“qiumin.asm”。主程序的编写形式主要是利用C语言进行编写,汇编子程序的编写形式主要是利用汇编语言编写,在实际的应用过程中,通常会被主程序所调用,以便完善对最小数的寻找,程序代码如下所示:

/*文件名为:min.c*/

#include

Int extern qiumin(int count,int vl,int v2,int v3,int v4,int v5);/*声明qiumin为外部函数*/

Main()

{

int min;

Min=qiumuin(12 ,54,8,4,23,9);

Printf(“The min is%d\n”,min);

}

主要是利用C语言和汇编语言混合的编程反复发,确保应用程序能够满足运行速度的要求,编程人员需要做好寄存器的合理分配,明确影响程序的因素。为了确保程序的合理运用,需要确保程序预报语言设计之间外部接口的相互协调性,提升外部调用效果。

3 结论

近年来,信息技术发展迅速,计算机软件是信息化社会的必需品,需要加大对C语言的应用力度,将其应用到各个领域中,确保行业的高效运营,为计算机软件的发展奠定良好的基础。同时,确保C语言软件能够广泛的应用到计算机编程实验中,强化C语言的实践效果,利用简单的C语言编程,提高软件的功能性,拓宽计算机软件的应用领域,确保计算机软件的多样化发展,向网络化和信息化方向不断迈进。

参考文献

[1]龚晨.基于C语言的计算机软件编程实验研究[J].电脑编程技巧与维护,2016(02):36-37.

[2]芮素文.基于C语言的计算机软件编程分析[J].信息系统工程,2015(01):40.

[3]王志超,赵越.基于C语言的计算机软件编程实验研究[J].科技创新导报,2015(11):45.

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

计算机语言分为机器语言、汇编语言和高级语言。机器语言是计算机能直接识别的语言,它是一种由0和1组成的二进制语言;汇编语言是对机器语言符号化了的语言,与机器指令一一对应,它与机器语言都是一种低级语言;高级语言是一种自然语言,是用语句和函数表示的语言,符合我们平常的语言表述,容易被人们接受。

汇编语言比机器语言的可读性要好,但跟高级语言比,可读性还是较差,且不符合自然语言的表述。但它编写的程序具有存储空间占用少、可直接调用硬件资源、执行速度快的特点,这些都是高级语言所无法比拟的。在实际应用中,是否使用汇编语言,取决于具体应用要求、软件开发时间和质量等方面。

汇编语言是将操作码和操作数用约定的符号表示,所以比机器语言容易掌握和运用。又因为要使用到硬件资源,得有一定的硬件知识,所以比高级语言要难掌握。那么在什么场合需要用汇编语言呢?一般来说,有以下几种场合可以使用:

①程序要具有较快的执行时间,或只能占用较小的存储容量。例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。

②程序与计算机硬件密切相关,程序要直接、有效地控制硬件。例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。

③大型软件需要提高性能、优化处理的部分。例如,计算机系统频繁调用的子程序、动态连接库等。

④受存储容量限制的应用领域,如:家用电器的计算机控制功能等。

另外,汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、逆向分析,对有害代码的分析和防治计算机病毒等等;高级语言编写程序如果涉及硬件的操作,一般用汇编语言来编写子程序供高级语言来调用。

说到这,有的同学可能会问,那么与高级语言相比,汇编语言有什么不同之处呢?具体的讲,有以下几点不同:

①汇编语言与处理器密切相关。每种处理器都有自己的指令系统,相应的汇编语言各不相同。所以,汇编语言程序的通用性、可移植性较差。

②汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,所以编写程序比较繁琐,调试也比较困难。高级语言提供了强大的功能,采用类似自然语言的语法,所以容易被掌握和应用,它不必关心诸如标志、堆栈等琐碎问题。

③汇编语言本质上就是机器语言,它可以直接、有效地控制计算机硬件,因而容易产生运行速度快、指令序列短小的高效率目标程序。高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大、程序难以优化,所以运行速度较慢。

可见汇编语言的主要优点是可以编写在“时间”和“空间”两方面最有效的程序。但它的缺点也是明显的,它与处理器密切有关,要求程序员比较熟悉计算机硬件系统、考虑许多细节问题,因此,有时可以采用高级语言和汇编语言混合编程的方法,互相取长补短,更好地解决实际问题。

汇编语言最大的特点就是采用指令语句,也就是用符号语言来代替机器语言,例如用汇编语言书写的指令:MOV AX,BX和ADD AX,8。前者功能是要求CPU把寄存器BX的值传送给寄存器AX;而后者是要求把寄存器AX的值和8相加,并把结果传送给寄存器AX。是翻译过程中:汇编程序能把左边汇编语言源程序翻译成右边的机器指令序列。其中,把汇编语言指令“MOV AX,BX”和“ADD AX,8”分别转换成机器指令898DH和050800H,而后者是CPU能直接识别的,也就是机器语言,所以,计算机可以直接执行它们。由此可见,汇编语言只是把机器语言逐条指令代码来表示,这样做的好处是把难于理解和记忆的二进制语言(机器语言)转化为易于理解和记忆的符号。

另一个特点是它所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那必然就存在着寻址方式,如上面的例子,我们就不能像高级语言一样直接使用数据,而先要从相应的寄存器AX、BX中把数据取出。这增加了复杂性,因为这部分工作是由编译系统来完成的,而在汇编语言中是由程序员自己来完成的,这无异增加了复杂程度。

再者,汇编语言指令是机器指令的一种符号表示,而不同类型的CPU有不同的机器指令系统,就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。所以,除了同系列、不同型号CPU之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)cPU之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。

很多高级语言如Visual C++和Visual Basic等对实现的细节进行了封装,由于封装的关系,各种高级语言或多或少就存在着某种“缺陷”,比如,VB不支持指针,很多需要使用指针的API用起来就很不方便,像多线程一类的特征在VB中就无法实现;而汇编语言见到的是一个最真实的操作系统,可以用最灵活的方式使用各种系统功能。

汇编语言是各种编程语言中与硬件关系最密切、最直接的一种,在时间和空间的效率上也最高的一种,它是高等院校计算机应用技术必修的专业课程之一,对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术有着重要的作用;并对已有程序的代码分析和重新开发有着不可替代的作用。我们可用它作为工具来分析已有的软件,找出其优点,改进其不好的地方,提高其原有系统的性能。

精选范文推荐