1、2022-5-24汇编语言程序设计教程1汇编语言程序设计教程汇编语言程序设计教程第四版第四版卜艳萍 周伟编著清华大学出版社2022-5-24汇编语言程序设计教程2课程的性质与基本要求课程的性质与基本要求 汇编语言是一门实践性很强的课程,在教学过程中要训练学生掌握指令的操作过程、程序设计的基本规则和方法以及上机调试的能力。 汇编语言适合于编制在时间和空间要求都很高的程序。汇编语言是能够利用计算机所有硬件特性的一门语言,在涉及到硬件设计的系统中,一般都用汇编语言完成接口部分程序的设计。 本课程的开设,对于训练学生掌握微型计算机的结构、指令的操作过程、汇编语言程序设计技术以及应用汇编语言编制实用程序
2、都有重要的作用。2022-5-24汇编语言程序设计教程3本课程与其它课程的关系本课程与其它课程的关系 汇编语言是计算机科学专业语言类最基础的课程之一,计算机文化基础、计算机编程基础等作为本课程的前导课程。 学好这门课程,可为学习相关的专业课打下基础,它是微机原理及接口技术、操作系统、计算机组成原理、编译原理和单片机原理及应用等的前导课程。2022-5-24汇编语言程序设计教程4第1章 汇编语言基础知识第2章 微型计算机体系结构第3章 微型计算机的指令系统第4章 伪指令与汇编语言程序结构设计 第5章 汇编语言程序设计第6章 子程序设计第7章 输入/输出程序设计第8章 高级汇编技术第9章 DOS/
3、BIOS功能调用第10章 汇编语言上机环境及程序设计实例目目 录录2022-5-24汇编语言程序设计教程5第第1章章 汇编语言基础知识汇编语言基础知识1.1 计算机基础知识1.2 计算机的基本结构与组成1.3 计算机中的数制与码制2022-5-24汇编语言程序设计教程61.1 计算机基础知识计算机基础知识1.1.1 计算机的发展史1.1.2 计算机的特性1.1.3 计算机的分类与应用1.1.4 计算机的主要技术指标2022-5-24汇编语言程序设计教程7计算机的发展史计算机的发展史 第一代:电子管计算机时代(从1946年第一台计算机研制成功到50年代后期),其主要特点是采用电子管作为基本器件。
4、 第二代:晶体管计算机时代(从50年代中期到60年代后期),这时期计算机的主要器件逐步由电子管改为晶体管。 第三代:集成电路计算机时代(从60年代中期到70年代前期),随着半导体器件生产工艺与技术上的进步,在一片半导体基片上,可以生产出多个晶体管,并用它们形成具有一定处理功能的逻辑器件,这就是集成电路。 第四代:大规模集成电路计算机时代(70年代初开始)。2022-5-24汇编语言程序设计教程8计算机的特性计算机的特性 高速 高精度 通用 准确 智能化 体积小、重量轻 2022-5-24汇编语言程序设计教程9计算机的分类计算机的分类 计算机按其用途来分可以分成专用机和通用机两类。 专用机是专门
5、用于某种用途的,它对于特定用途而言最经济、最快速、最有效,但适应性差,而通用机适应性强。 2022-5-24汇编语言程序设计教程10计算机计算机的几个主要应用的几个主要应用领域领域 科学计算 数据处理 计算机控制 人工智能 计算机网络 计算机辅助设计/制造(CAD/CAM) 嵌入式应用 2022-5-24汇编语言程序设计教程11未来未来计算机的发展呈现出以下几个发展趋势计算机的发展呈现出以下几个发展趋势微型化:便携式、低功耗的计算机系统成为人们追求的目标。高性能:尖端科技领域的信息处理,需要超大容量、高速度的计算机系统。人们对于高性能计算机的追求是无止境的。智能化:模拟人类大脑思维和交流方式,
6、具有多种处理能力,如智能机器人等。系列化、标准化:便于各种计算机硬、软件兼容和升级。网络化:这是计算机网络普及的必然结果。多机系统:利用多个计算机构成一个更加庞大的系统,使得多个计算机之间可以并行地、协调地工作,从而提高计算机系统的整体性能,如分布式系统、网络计算等。 2022-5-24汇编语言程序设计教程12计算机的主要技术指标计算机的主要技术指标 机器字长是指该计算机能进行多少位二进制数的并行运算,实际上是指该计算机中的运算器有多少位,通常计算机的数据总线和寄存器的位数与机器字长一致。 CPU速度是指单位时间(秒)内能够执行指令的条数。 主频又称为主时钟频率,是指CPU在单位时间(秒)内产
7、生的时钟脉冲数,以MHz(兆赫兹)为单位。 存储器容量的大小不仅影响着存储程序和数据的多少,而且也影响着运行这些程序的速度。 存储器完成一次数据的读(取)或写(存)操作所需要的时间称为存储器的存取(或访问)时间。存储器执行一次完整的读/写操作所需要的时间称为存取周期。系统的可靠性通常用平均无故障时间MTBF和平均故障修复时间MTTR来表示。 计算机的数据传输率还常用带宽表示,它反映计算机的通信能力。数据传输率的单位是bps,bps代表每秒传输一位或一比特。 2022-5-24汇编语言程序设计教程13存储器的容量存储器的容量2022-5-24汇编语言程序设计教程141.2 计算机的基本结构与组成
8、计算机的基本结构与组成1.2.1 计算机的硬件1.2.2 计算机的软件1.2.3 计算机的程序设计语言1.2.4 计算机系统的层次结构2022-5-24汇编语言程序设计教程15 微型计算机系统的硬件部分包括微型计算机和外围设备,软件部分包括系统软件、应用软件和程序设计语言等。 微型计算机系统的组成如图1.1所示。 2022-5-24汇编语言程序设计教程162022-5-24汇编语言程序设计教程17计算机硬件组成计算机硬件组成2022-5-24汇编语言程序设计教程18计算机硬件组成计算机硬件组成 运算器是对信息或数据进行处理和运算的部件,可以实现各种算术运算和逻辑运算。 控制器(Control
9、Unit, CU)主要用来实现计算机本身运行过程的自动化,即实现程序的自动执行,是计算机的管理机构和指挥中心。 存储器是计算机的存储和记忆装置,用来存储程序和数据,由存储单元组成。 计算机的输入输出设备(Input / Output Device)简称I/O设备或者外设。位于主机之外,实现计算机与外部设备或者计算机与人进行信息交换,所以又称为外围设备(Peripheral Device)。 2022-5-24汇编语言程序设计教程19微型计算机系统结构微型计算机系统结构2022-5-24汇编语言程序设计教程20系统总线系统总线 地址总线:在该组信号线上,CPU输出将要访问的内存单元或I/O端口的
10、地址信息。 数据总线:CPU进行读操作时,主存或外设的数据通过该组信号线输入到CPU内部;CPU进行写操作时,CPU内部的数据通过该组信号线输出到主存或外设。 控制总线:控制信号线用于协调系统中各部件的操作。其中,有些信号线将CPU的控制信号或状态信号送往外界;有些信号线将外界的请求或联络信号送往CPU。 2022-5-24汇编语言程序设计教程21 微型计算机简称“微型机”、“微机”,是指以微处理器为基础,配以内存储器及输入/输出(I/O)接口电路和相应的辅助电路而构成的裸机。由微型计算机配以相应的外围设备(如打印机、显示器、磁盘机和扫描仪等)及其他专用电路、电源、面板、机架以及足够的软件构成
11、的系统称为微型计算机系统。 图1.4给出了微处理器、微型计算机、微型计算机系统之间的关联。 2022-5-24汇编语言程序设计教程222022-5-24汇编语言程序设计教程23主板主板 微型计算机系统是指以微型计算机为主体,配以相应的外围设备及其他的专用电路、电源、面板、机架以及软件系统所构成的系统。 由微处理器、存储器与外围芯片组等所构成的主机板(或称为主板)为生产兼容机的厂商或自行组装电脑的业余爱好者提供了方便。 主板是PC机硬件系统集中管理的核心载体。几乎集中了全部系统功能,能够根据系统和程序的需要,调度PC机各个子系统配合工作,并为实现系统的管理提供充分的硬件保证。2022-5-24汇
12、编语言程序设计教程24主板主板的主要构成有以下几部分的主要构成有以下几部分CPU插槽内存插槽芯片组二级高级缓冲存储器CMOS芯片总线扩展槽AGP显示卡插槽外接接口插座串行和并行端口主板跳线系统监控 2022-5-24汇编语言程序设计教程25计算机的软件计算机的软件 计算机的软件是指运行、维护、管理、应用计算机所需要的各种程序及其有关的文档资料。即指计算机系统所用的各种程序的集合,包括系统软件和应用软件两大类。 系统软件的核心称为操作系统(Operating System)。操作系统是系统软件的指挥中枢,它的主要作用是统一管理计算机的所有资源。 用户软件是用户在自己的业务范围内为解决特定的问题而
13、自行编制、开发的程序。 2022-5-24汇编语言程序设计教程26计算机的程序设计语言计算机的程序设计语言 机器语言:计算机能够直接识别的是二进制数0和1组成的代码。机器指令就是用二进制编码的指令,一条机器指令控制计算机完成一个操作。 汇编语言:汇编语言是一种符号语言,它用助记符表示操作码,比机器语言容易理解和掌握,助记符一般是表明指令功能的英语单词或其缩写。 高级语言:高级语言比较接近于人类自然语言的语法习惯及数学表达形式,它与具体的计算机硬件无关,更容易被广大计算机工作者掌握和使用。 2022-5-24汇编语言程序设计教程27汇编语言的应用汇编语言的应用 程序要具有较快的执行时间,或者只能
14、占用较小的存储容量。 程序与计算机硬件密切相关,程序要直接、有效地控制硬件。 大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动态连接库等。 没有合适的高级语言或只能采用汇编语言的时候。例如,开发最新的处理器程序时,暂时没有支持新指令的编译程序。 汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。2022-5-24汇编语言程序设计教程28计算机系统的层次结构计算机系统的层次结构2022-5-24汇编语言程序设计教程29计算机系统的层次结构计算机系统的层次结构 数字逻辑层是计算机系统的最底层,它涉及计算机硬件的最基础的数
15、字逻辑和数字门电路知识,解决了如何存储信息、如何传送信息以及如何运算与加工信息等方面的问题。 微体系结构层要实现执行指令所需要的所有功能部件,如运算、控制、存储、输入/输出、接口和总线部件等。 在指令系统层,需要定义机器的指令集,规定每一条指令的格式和功能。 操作系统层主要承担计算机系统中的资源管理与分配,也向使用者和程序设计人员提供简单、方便、高效的服务。 2022-5-24汇编语言程序设计教程30计算机系统的层次结构计算机系统的层次结构 汇编语言是面向计算机硬件本身的,程序设计人员可以使用的一种符号式的计算机语言,汇编语言的语句可以直接访问CPU、存储器和I/O设备,它是除机器语言外实现速
16、度最快的一种计算机编程语言。汇编语言的程序必须经过汇编程序的翻译才能在机器上执行。 高级语言不像汇编语言那样“靠近”计算机的指令系统,而是着重面向解决实际问题所用的算法,更多的是为方便程序设计人员写出自己解决问题的处理方案和解题过程的程序。 在高级语言层之上,还可以有应用层,这一层是为了使计算机满足某种用途而专门设计的,它由面向问题的应用语言和解决实际问题的处理程序组成。2022-5-24汇编语言程序设计教程311.3 计算机中的数制与码制计算机中的数制与码制1.3.1 数制及数制转换1.3.2 机器数的编码1.3.3 定点数与浮点数1.3.4 码制2022-5-24汇编语言程序设计教程32数
17、制及数制转换数制及数制转换进位计数制 基本概念:基数()、权()、N = Dn-1 Dn-2Rn-2 1nmi常用计数制:二进制();八进制();十进制();十六进制()。2022-5-24汇编语言程序设计教程33常用的进位计数制常用的进位计数制二进制 R = 2 基本符号 0,1八进制 R = 8 基本符号 0,1,2,3,4,5,6,7十进制 R = 10 基本符号 0,1,2,3,4,5,6,7,8,9十六进制 R = 16 基本符号 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F2022-5-24汇编语言程序设计教程34进位计数制间的相互转换进位计数制间的相互转换()二
18、进制、八进制、十六进制转换为十进制数。(按权相加) 10101101.1012222222128328410.50.125 173.625D()十进制数转换为二进制、八进制、十六进制。(按取余) 36512D /162282 2282/16142 142/16=8 8/16=0 (a0=9) ( a1=10) ( a2=14) ( a3=8) 36521D = 8EA9H(3)二进制数与八进制、十进制、十六进制之间的转换。10101001.01101B = (1010) (1001).(0110) (1000)B A 9 6 8 10101001.01101B =A9.68H 2022-5-2
19、4汇编语言程序设计教程35机器数的编码机器数的编码 原码 反码 补码数的最高位表示符号位,其余各位表示真值的绝对值。符号位为0表示该数为正数,符号位为1表示该数为负数。正数的反码与原码相同,负数的反码其符号位仍用1表示,其余数值位则按位取反。用于解决减法转换为加法的问题,简化计算机运算电路。常用方法之一:先取原数反码,再末位加1即得到补码。2022-5-24汇编语言程序设计教程36原码、反码和补码的比较原码、反码和补码的比较 如果真值x为正数,则有x原= x反 = x补。如果真值x为负数,则x原、x反 、x补有不同的表示。 如果真值x =0,则x补有唯一的编码,x原和x反都有两个不同的编码。
20、定点小数中,原码和反码所能表示数的范围为-1 x 1,补码所能表示的数的范围为-1 x 1。 用x原、x反、x补表示的机器数,最高一位表示符号位,正数用“0”表示,负数用“1”表示。2022-5-24汇编语言程序设计教程37定点数与浮点数定点数与浮点数 定点数:是指小数点在数中的位置是固定不变的,以定点法表示的实数叫做定点数。 通常定点数的表示有两种形式:一种是定点整数,小数点在数的最右方,即为纯整数;另一种是定点小数,小数点在符号位之后,即为纯小数。 2022-5-24汇编语言程序设计教程38浮点数浮点数 浮点数是指计算机中数的小数点位置不是固定的,而是“浮动”的。 任意一个二进制数N总可以
21、写成下面的形式:式中:2称为基数,E称为阶码,S称为尾数。浮点数在机器中的表示形式为:2022-5-24汇编语言程序设计教程39码制码制 ASCII码:字母、数字、符号等各种字符也必须按特定的规则,用二进制编码才能在计算机中表示。 ASCII码可以表示27 即128个字符。其中包括34个控制字符、52个英文大小写字母、10个阿拉伯数字、32个标点符号和运算符号。 BCD码:一位十进制数用四位二进制编码来表示,表示的方法可以极多,较常用的是8421BCD码。 2022-5-24汇编语言程序设计教程40汉字编码汉字编码 汉字也是字符,但它比西文字符量多且复杂,给计算机处理带来了困难。 汉字处理技术
22、必须解决汉字的编码问题。 汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。 2022-5-24汇编语言程序设计教程41汉字的输入编码汉字的输入编码 数字编码:数字编码就是用数字串代表一个汉字的输入,常用的是国标区位码,也可用电报码。 拼音编码:拼音编码是以汉语拼音为基础的输入方法。这种编码方法存在的问题是:汉字中同音字多,重码率高,因此在按拼音输入后还需进行同音字的选择,汉字的输入速度受到影响。 字形编码:字形编码是以汉字的形状确定的编码。汉字总数虽然很多,但是由一笔一划组成,全部汉字的部件和笔划是有限的。 音形编码:除字形编码外,还有一些编码方法是利用汉字字形、字音两个
23、属性的特点并使其结合的混合编码方法。 2022-5-24汇编语言程序设计教程42汉字交换码汉字交换码 在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标码。 无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标识每个汉字。 2022-5-24汇编语言程序设计教程43汉字机内码汉字机内码 汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的编码。 汉字机内码表示有许多种,要考虑的因素有以下几点: 码位尽量短; 表示的汉字要足够多; 码值要连续有序,以便于操作运算。2022-5-24汇编语言程序设计教程44汉字字形码汉字字形码 字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。计算机显示或打印输出汉字时是通过点阵形式表示汉字的。 字模点阵是以字节为单位存储,所占用存储空间也很大,以1616点阵为例,每个汉字就要占用32个字节,两级汉字大约占用256KB的空间。 汉字字形码只能用来构成“字库”,而不能用于机内存储。字库中存储了每个汉字的点阵代码,当显示输出时才检索字库,输出字模点阵,得到字形。 2022-5-24汇编语言程序设计教程45各种汉字编码之间的逻辑关系各种汉字编码之间的逻辑关系