汇编语言学习活动

####比较汇编语言与高级语言,说明其优缺点。

答:高级语言是高度封装了的编程语言,与低级语言(又称汇编语言)相对。由于汇编语言依赖于硬件体系,且助记符量大难记,于是人们又发明了更加易用的所谓高级语言。在这种语言下,其语法和结构更类似普通英文,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以编程。高级语言与计算机的硬件结构及指令系统无关,在编写程序方面比汇编语言优越。但是高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。

优缺点主要有以下:

高级语言,具有可移植性,能够结构化编程。使用高级语言的程序,几乎都可以不作改变移植到不同的微机平台上,对于嵌入式等的微控制芯片,属于高级语言的部分也很少需要修改,而且程序很容易读懂。高级语言编写程序结构清晰,移植性好,容易维护和修改。高级语言缺点是,程序的效率不如极端优化的汇编高,特别是数学计算程序。

汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。

####“汇编语言”是计算机及电子信息类相关专业一门重要的基础课程,开设这门课程目的不仅仅是教授一门编程语言,更重要的是通过这门课程的学习,可以帮助学生理解计算机的体系结构以及系统各硬件之间如何协调统一工作,为以后从事软硬件相关方面的工作打下良好的基础。结合你自己的学习经历,谈谈你认为学习汇编语言的意义,以及汇编语言今后的发展前景。

在学习了汇编语言这门课程后,我深深了解了汇编语言是最近接近于机器语言的编程语言。如果说机器语言是计算机操作的本质,那么汇编语言就是最最接近本质的语言。汇编语言操作直接面向硬件。我们在使用汇编语言的时候,我们能够感知计算机的运行过程和原理,从而能够对计算机硬件和应用程序之间的联系和交互形成一个清晰的认识。这也是最能购锻炼编程者编程思维逻辑的。只有我们学习了汇编语言,才能形成一个软、硬兼备的编程知识体系,这事任何高级语言都无法给予的!相对于繁复的高级语言,汇编语言指令集合更简约,指令操作更直接,从汇编开始学习更符合循序渐进的学习原理!所以,对于像我们这种计算机技术初学者或者自学者,汇编语言的重要性无可替代。

通过学习汇编语言,能够加深对计算机原理和操作系统等课程的理解。通过学习和使用汇编语言,能够感知、体会和理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践

应用基础。迄今为止,还没有程序员敢断定汇编语言是不需要学的,同时,汇编语言(Assembly Language)是面向机器的程序设计语言,设计精湛的汇编程序员,部分已经脱离软件开发,挤身于工业电子编程中。对于一个全面了解微机原理的程序员,汇编语言是必修语言。

汇编语言(Assembly Language)是面向机器的程序设计语言。历史上,汇编语言曾经是非常流行的程序设计语言之一。随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。但即便如此,高级语言也不可能完全替代汇编语言的作用。就拿Linux内核来讲,虽然绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码。由于这部分代码与硬件的关系非常密切,即使是C语言也会显得力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。

汇编语言试用于很多领域。例如:要求执行效率高、反应快的领域,如:操作系统内核,工业控制,实时系统等;系统性能的瓶颈,或频繁被使用子程序或程序段;与硬件资源密切相关的软件开发,如:设备驱动程序等;受存储容量限制的应用领域,如:家用电器的计算机控制功能等;没有适当的高级语言开发环境。

 

第二篇:《汇编语言》学习指导书

《汇编语言》学习指导书

《汇编语言》学习指导书

汇编语言学习指导书

20xx年9月

1/13

《汇编语言》学习指导书

《汇编语言》学习指导书

1. 课程的性质

本课程授课对象是计算机与信息技术学院本科生,属于专业基础课。

计算机汇编程序知识是进行计算机程序设计的基础,它体现了计算机软件的基本原理,它对于进一步学习高级软件知识具有基石般的作用。

本课程直接教学目标是使学生学习IBM-PC计算机汇编语言程序设计的原理,掌握汇编语言程序实际编程能力。

同时,使学生较深刻的理解计算机软件知识的本质特征和实践原理。

2. 本课程的基本要求

本课程教材选用杨季文等编著《80X86汇编语言程序设计教程》(清华大学出版社)。讲授绪论、寻址方式和指令系统、汇编语言及程序设计初步、子程序设计和DOS功能调用、输入输出与中断等五章内容。其中核心内容为汇编语言及程序设计初步。

本课程教学过程中强调实践性,从指令系统起,及其以后的各项教学内容,必须在学习书本知识的同时,进行配合上机实验。

学习过程中还要与《计算机原理》课程中讲授的知识紧密地、有机地联系在一起,形成互动,达到加深对计算机原理(含硬件原理和软件原理)理解,弄清楚电子计算机系统中硬件、软件之间的联系与作用。

本课程基本教学要求是学习IBM-PC计算机汇编语言程序设计的原理,掌握汇编语言程序实际编程能力(简曰:会编程序)。

2/13

《汇编语言》学习指导书

同时,使学生较深刻的理解计算机软件知识的本质特征和实践原理(简曰:理解软件)。

3. 第一章主要内容提示与学习要求

〖主要内容提示〗

? 机器语言(二进制指令代码)—〉 (宏)汇编语言—〉 高级语言的变化过程

和内在含义。

? 由汇编语言的特点出发,理解汇编语言的本质特征。即计算机的CPU(控

制器、计算器)与计算机软件中的程序指令代码的结合与作用方式。 ?

? 在第二点的基础上,理解汇编语言的“时空”概念。 可以构造任意数制关系,如3进制,4进制等,但可能无实际应用意义。

不同数制之间可以转换,转换时依托十数制运算。

? 计算机内表示数值数据是基本需要,在此基础上再是实现非数值的表示。

数值数据分为由符号数和无符号数,但在计算机内它们都是二进制形式的数,孤立地看待一个二进制形式的数无法确定它们的含义,结合二进制数的上下文关系,可以确定其含义,程序的编制者十分清楚起含义。 ?

?

?

? 为什么要考虑符号扩展问题? 补码的意义所在?与硬件的关系? 数的表示范围与存储空间的关系。 BCD码有多种,8421码常用。INTEL CPU中有专门的指令,处理

8421BCD码的运算(仅8421BCD码)。

? ASCII码十分重要,是基础的非数值数据编码。不仅在计算机中应用,

也应用于各种数据通信系统中,如手机,卫星等。注意ASCII码的内部规律。ASCII码是7位编码,最多可编128个码。

3/13

《汇编语言》学习指导书

? 扩展ASCII码为8位编码,最多可编256个码。除ASCII码外,可另外

编128个码。这些码可以表示非英语国家的文字字母,可以表示表格边线。

? 汇编语言可以处理汉字信息。GB2312-80是汉字信息表示的基本国家标

准,今天我们在时刻使用着这个标准!(请你在WINDOWS里、IE浏览器里、邮件系统里察看,它们的汉字编码是什么?)

? (扩展)多媒体信息也是非数值数据,经过(声卡、视频卡)变换,多媒

体信息都变成了计算机内部的二进制数据。汇编语言当然可以处理多媒体信息。

? INTEL系列CPU是向下兼容的,兼容什么?兼容的实质含义是什么?本

课程仅基于INTEL8088/8086CPU进行学习。

〖学习要求〗

本章书本上的知识讲解比较简单,深度不够。学生在学习时应首先读懂书本知识,再〖主要内容提示〗中的提示加深理解。

〖重点、难点〗

数据的表示和类型是重点,有符号数及无符号数的存储与辨识是难理解点。

〖思考题和作业题〗

1. 理解这句话:“计算机内只有二进制代码,计算机只认识二进制数”。

2. 汇编语言的根本特征是什么?

4. 第二章主要内容提示与学习要求

〖主要内容提示〗

? 8086/8088CPU寄存器组。寄存器与存储器的区别,寄存器数量少,容量

4/13

《汇编语言》学习指导书

小,速度快(于运算器速度同步)。寄存器位于CPU内部。寄存器字长与ALU相同(8088-80286为16位,80386-奔腾III为32位)。寄存器与寄存器之间、寄存器与存储器之间可以交换数据。段寄存器及SI、DI、BP、SP寄存器的深入理解放在稍后进行。

? 标志寄存器的每一位必须深入理解,特别是PF的含义、CF和OF的关

系,IF在第四、第五章使用,TF位本课程不直接使用。

? INTEL CPU按字节编地址!INTEL 8088/8086为20位地址,最多可编

1MB地址。

? “存储器分段表示”是重要的学习内容。小段—〉 分段—〉 分段表示-〉

物理地址形成。段重叠,段交叉。一个物理地址可以用多种段地址:偏移量方法表示。注意看书本上的图。

? 计算机指令由操作码和操作数两部分组成。指令寻找操作数的过程即寻

址。

? 操作数寻址方式有7种,分3类。①立即寻址方式,特点是操作数与指

令代码一起存放。②寄存器寻址方式,操作速度块,使用方便。③针对存储器的寻址,共5种方式。

? 注意词语:“相对”---加8/16位偏移量,偏移量是补码。“基址”---BX

/BP寄存器。“变址”---SI/DI寄存器。

? 8088指令有一百余条,但常用的不多。学习时选择部分常用的先学,非

常用指令只要知道,可用时再学。

? 数据传送类指令。这是程序中最常用的指令,是程序中必不可缺的指令。

其中:①类:MOV(看图2-13),XCHG,LEA(LDS,LES),PUSH,POP常用,操作后不影响条件码②类:操作后影响条件码,LAHF,SAHF,PUSHF,POPF有时使用,CLC,STC,CMC有时使用,CLD,STD在字符串操作指令中只用, CLI,STI在中断服务程序中使用。

5/13

《汇编语言》学习指导书

? 算术运算类指令。加减乘除4组,加减区分是否带进位(看图2.17),乘

除区分有/无符号数。操作后影响条件码。存在计算溢出问题:无符号加减运算看CF位,有符号加减运算看OF位,乘运算无溢出,除运算会产生0溢出,此时产生0号中断。以上指令仅对整数定点数操作。

? 逻辑运算,按位操作。注意其影响条件码的规律。逻辑运算指令虽然简

单,但使用起来十分灵活,注意从例题、习题中体会。

? 移位运算,按位操作,共8条指令,注意其规律,看图2.18,2.19帮助

记忆。注意其影响条件码的规律,特别是CF位。移位运算指令虽然简单,但使用起来十分灵活,注意从例题、习题中体会。

?

? CMP指令和TEST指令,编写分支程序时十分有用。 转移指令,分为无条件转移(仅1条JMP)和条件转移两类。无条件转移

指令仅1条,JMP指令,但有4种(细分5种)寻址方式,条件转移指令有多条,但寻址方式仅1种。注意:这里所讲寻址方式也称转移方式,与前面不同。这里寻址的目的是找到“转移地址”,即确定转移后:CS:IP寄存器的数值。注意词语:段内/段间,直接/间接。

? 条件转移指令使用灵活,容易出错。注意词语:单个标志/两个标志/无符

号数/有符号数,要严格加以区分。条件转移指令的跳转距离短,它仅采用8位偏移量的段内直接跳转。

? 循环指令不是必要的程序指令,循环指令用于编写循环程序。使用转移

指令完全可以写出所有循环程序,但使用循环指令编写循环程序十分方便。最常用的循环指令是LOOP指令。

〖学习要求〗

学生在学习时首先应读懂书本上的“表面”知识,在反复读书过程中,结合〖主要内容提示〗中的提示加以理解。

从这章开始,应安排大量的上机实验。读不懂、想不清的事往往在计算

6/13

《汇编语言》学习指导书

机上实验一下就会了。

目前学生仅学习了部分计算机指令,还无法编写完整程序,所以目前的实验需要借助一些软件工具来实现。推荐大家使用DEBUG进行试验,它可以满足学生的学习需求,且随操作系统自带。DEBUG使用方法请读课本578页。

本章知识量较大,学习后应掌握和会运用寄存器知识、地址变换知识、指令寻址知识、前文所述到的指令知识。将以上知识使用DEBUG进行试验,较深入理解。

〖重点、难点〗

寄存器知识、地址变换知识、指令寻址知识、前文所述到的指令知识都是学习的重点,是以后学习的基础。使用DEBUG进行实验是难点,需要一个较长的理解过程。

〖思考题和作业题〗

1. 使用DEBUG进行实验。理解实验结果,进而理解、掌握有关知识,理解计算

机软件是如何工作的。

2. 习题

2.4,2.5,2.6,2.7,2.8,2.9,2.12,2.15,2.16,2.17,2.19,2.24,2.26,2.27,2.32,2.45,2.46

5. 第三章主要内容提示与学习要求

〖主要内容提示〗

? 利用前一章所讲的计算机指令已经可以编写基本的程序了,但还有问题

未解决,如程序如何装入存储器?指令所需要的数据以及指令运算产生的数据位于何处?为此需要引入伪指令。

? 在指令格式中,指令助记符前的“标号”带冒号,伪指令前的“名字”、

“标号”不带冒号。

7/13

《汇编语言》学习指导书

? 认真理解计算机指令、汇编指令(指令助记符)、伪指令的含义与区别,

区分它们的执行过程。

? 常量不占用存储器空间,变量占用存储器空间。在汇编语言程序中常量

默认为十进制数,且可以改变默认为数制。注意:DEBUG中只认16进制数,且不加“H”。

?

?

?

? 只有常量才可以利用伪指令进行算术、关系、逻辑运算。 数据定义伪指令,十分重要。注意掌握数在存储器中的存放关系! 段定义伪指令不要求学习SEGMENT后的参数。 P77和P79的程序是汇编语言程序的框架,体现了编写汇编语言程序的

“死套子”。请认真理解、掌握。

? 从程序设计原理角度看,计算机程序分为顺序程序(简单程序)、分支程

序、子程序三大类。循环程序本质上属于分支程序。

? 分支程序结构有两种,看图3.6。一次判断分两支,两次判断分三支,N

次判断分N-1支。

? 循环程序结构有两种,看图3.9。请理解这句话:多重循环程序和一重循

环程序没有区别,掌握一重循环程序后,也就掌握了多重循环程序。 〖学习要求〗

认真读书,认真读懂书中的每一个例题,并上机实验(随本指导书的附件中有本章例题的原代码)。

在书后习题中自由选择不同难度的题目4道,在计算机上调试通过。 “调试通过”需要借助DEBUG工具,并且借助DEBUG工具仔细观察、理解程序指令的指令、数据段中的数据的变化过程和规律,以及在存储器中的码放关系。

〖重点、难点〗

数据定义伪指令、段定义伪指令、顺序程序设计、分支程序设计、循环

8/13

《汇编语言》学习指导书

程序设计是重点。

“调试通过”需要借助DEBUG工具,并且借助DEBUG工具仔细观察、理解程序指令的指令、数据段中的数据的变化过程和规律,以及在存储器中的码放关系是难点。

〖思考题和作业题〗

思考题:

1. 数据和程序指令在内存中是如何码放的?

2. 指令、数据段中的数据在程序执行过程中的变化规律如何?

3. 如何理解分支程序与循环程序的关系?

作业题

P106习题共42题,其中“文字叙述题”只要求思考,不需笔答。其中约有20道编程题,请按照较容易、中等、较难三个等级自选10道在计算机上按“调试通过”要求解答成。

6. 第四章主要内容提示与学习要求 〖主要内容提示〗

?

?

?

?

?

? 过程调用和返回指令,过程调用指令不影响条件码! 过程调用与转移指令(特别式无条件转移JMP指令)的对照。 四种情况:段内直接调用,段内间接调用,段间直接调用,段间接调用。 如何描述四种情况下的过程调用和返回指令? 过程定义,请仔细看P115 程序间的参数传递方式课本内讲了4种,请重点掌握“利用寄存器传递

参数”。

? 依据在此之前的知识,尚未解决在外部设备上进行数据操作的方法问题。

DOS功能调用提供了解决这一问题的基本的、简洁的方法。

? DOS功能调用是微软的操作系统为应用程序员提供的程序接口。只要使

9/13

《汇编语言》学习指导书

用微软的操作系统,就具有其功能;而其它操作系统为应用程序员提供的程序接口可能与DOS功能调用不兼容,或采用其它解决方案。

? DOS功能调用的技术本质是程序软中断,依赖INT指令实现。对此进一

步的理解与下一章知识有关。

? DOS功能调用所包含的功能丰富,不仅涉及输入输出操作,如进一步学

习,需要查阅技术手册。

? DOS功能调用具有风格统一的使用方法。

〖学习要求〗

学习、掌握子程序设计、编写的方法,掌握寄存器参数传递方法。在读书学习过程中,注意仔细阅读例题。

学习、掌握DOS功能调用的程序设计、编写的方法,掌握传递方法。在读书学习过程中,注意仔细阅读例题。

在书后习题中自由选择不同难度的题目4道,在计算机上调试通过。

“调试通过”需要借助DEBUG工具,并且借助DEBUG工具仔细观察、理解程序指令的指令、数据段中的数据的变化过程和规律,特别是执行转移指令、子程序调用指令、子程序返回指令时程序地址的变化规律,以及在存储器中的码放关系。

4.4节、4.5节不作要求。但建议同学们学习4.4节,磁盘文件管理是很使用的知识。

〖重点、难点〗

子程序设计、编写的方法,掌握寄存器参数传递方法,DOS功能调用的程序设计、编写的方法,DOS功能调用掌握传递方法是重点。执行转移指令、子程序调用指令、子程序返回指令时程序地址的变化规律是难点。

〖思考题和作业题〗

思考题

1. 执行转移指令、子程序调用指令、子程序返回指令时程序地址的变化规律如

何?

10/13

《汇编语言》学习指导书

2. DOS功能调用的技术原理是什么?请深入理解。

作业题

P152习题共42题,其中部分题目是超出课程范围的,不做。“文字叙述题”只要求思考,不需笔答。其余题目,请按照较容易、中等、较难三个等级自选4道在计算机上按“调试通过”要求解答成。

7. 第五章主要内容提示与学习要求 〖主要内容提示〗

? INTEL CPU输入输出端口地址与存储器地址分别单独编址,只用IN/OUT

指令完成输入输出操作。

? 输入输出端口地址也是按字节编址的,但可以按照8位、16位、32位方

式访问。

?

? 输入输出按照端口地址号分为长格式、短格式两种。 INTEL CPU输入输出操作方法有4种。无条件传送方式和查询方式有明

显的缺欠,在较高级的计算机应用系统中一般不使用,这里仅作为原理来学习;中断方式是最重要的输入输出操作方法,应重点学习和研究;DMA方式实际为硬件解决方案,但需要软件配合,本课程不学习。

? 以上4种输入输出操作方法中,第一、二种仅使用IN/OUT指令完成输入

输出操作,中断方式输入输出操作过程中也使用IN/OUT指令种最终完成数据传输过程。

? 5.3节中断,其内容请同学们认真阅读,深入理解。注意词语和知识点:

中断、中断源、中断向量、中断分类、设置中断向量、获取中断向量、中断的响应过程、中断的返回过程。

? 结合计算机原理有关知识,学习、理解图5.8描述的有关知识。

11/13

《汇编语言》学习指导书

?

? 深入理解INT指令的执行过程,进而理解前一章DOS功能调用的原理。 掌握图5.9描述的中断屏蔽寄存器的使用方法,理解图5.10描述的中断

命令寄存器的概念。

? 基本输入输出系统(BIOS)由一组INT中断服务程序组成,与DOS功能调

用对照,BIOS更接近计算机底层硬件,是针对具体的、不同的计算机硬件电路进行设计、编写的输入输出程序,它只能有计算机硬件设计者、制造者完成编写,但是BIOS按照IBM-PC机的技术规范向应用程序员提供标准化地、统一的程序接口。只要IBM-PC机或兼容机,不管运行什么操作系统,就具有BIOS功能。请仔细理解图5.11。

? BIOS所包含的功能都是非常底层的功能,利用它可以解读键盘的每一个

按键产生的键码,操作显示器上的每一个扫描点,绕过操作系统直接读写磁盘上的某个柱面、某个磁道、某个扇区、或格式化某一条磁道等。利用BIOS可以编出“很好”的程序,也可以编出“很坏”的程序。如进一步学习,需要查阅技术手册。

? 键盘中断处理程序。请认真理解键盘扫描码的概念。请认真理解、掌握

图5.13所示“键盘状态字节”的意义和用法。

? 键盘产生的是“键盘扫描码”,程序通常使用ASCII码,它们之间可由

BIOS程序进行自动转换。

〖学习要求〗

学习、掌握输入输出端口知识和输入输出指令知识,理解4种数据传送方式,重点学习和理解、掌握中断方式输入输出数据传送的工作原理,有能力的学生应力求掌握中断服务程序设计、编写的方法。在读书学习过程中,注意仔细阅读例题。

学习、掌握BIOS的原理、工作工程、应用程序设计方法,理解BIOS对于编写应用程序的意义。

掌握BIOS中INT16H应用程序设计、编写的方法,掌握传递方法。在读书学

12/13

《汇编语言》学习指导书

习过程中,注意仔细阅读例题。

在书后习题中自由选择不同难度的题目2道,在计算机上调试通过。

“调试通过”需要借助DEBUG工具,并且借助DEBUG工具仔细观察、理解INT指令的执行过程。

5.5节不作要求。但建议同学们自学,再次值得多花点时间。

〖重点、难点〗

重点:输入输出指令及用法,中断原理与实现,BIOS原理,INT16H应用。难点是中断原理与实现。

〖思考题和作业题〗

思考题

1.

2. 计算机如何实现输入输出过程?(详细过程) 硬件中断发生时软件、硬件的互动过程如何?

作业题

P197习题5.1,5.2.5.9,5.10,5.15,5.22,5.25。

8.需要说明的问题

?

? 2003汇编语言程序.zip ,这是PPT讲稿。 汇编程序软件有多种,现随学习指导书发给大家的是微软的MASM程

序,以及令LINK程序。MASM.zip。

? ? 文件是第三章、第四章的例题,供大家上机实验。 内提供了一些相关知识

和扩展内容,供大家学习时参考。

13/13

相关推荐