1、1微型计算机原理 及接口技术2目目 录录第第1 1章章 微型计算机基础微型计算机基础 3 3第第2 2章章 IntelIntel系列微处理器系列微处理器.30.30第第3 3章章 8048680486微处理器的指令系统微处理器的指令系统.52.52第第4 4章章 汇编语言程序设计汇编语言程序设计. 96. 96第第5 5章章 存储系统存储系统 171 171第第6 6章章 输入输出方式及中断系统输入输出方式及中断系统 210 210第第7 7章章 可编程接口芯片可编程接口芯片 251 251第第8 8章章 外设接口技术外设接口技术 374 374第第9 9章章 总线总线 440 4403第1章
2、 微型计算机基础 41.11.1微型计算机的组成微型计算机的组成 1.1.1微型计算机的硬件系统组成 1.1.2微型计算机的软件系统组成 1.21.2微型计算机的硬件结构及基本工作过程微型计算机的硬件结构及基本工作过程 1.2.1数据总线、地址总线和控制总线 1.2.2微型计算机的主要组成部分及功能 1.2.3微型计算机基本工作过程51.31.3微型计算机的运算基础微型计算机的运算基础 1.3.1计算机中数的表示 1.3.2计算机的基本运算方法1.41.4典型微型计算机典型微型计算机 1.4.1主要性能指标 1.4.2PC系列微型计算机 1.4.3微型计算机中的主要计算机技术 1.4.4 微型
3、计算机类型 1.4.5微型计算机的应用及发展 61.11.1微型计算机的组成微型计算机的组成 微型计算机系统是由硬件系统和软件系统两大部分组成。1.1.11.1.1微型计算机的硬件系统组成微型计算机的硬件系统组成 图1-1 微型计算机的硬件基本组成1.1.2 1.1.2 微型计算机的软件系统组成微型计算机的软件系统组成 计算机的软件系统是由系统软件和应用软件两大部分组成。 71.2 1.2 微型计算机的硬件结构及基本工作过程微型计算机的硬件结构及基本工作过程 目前各种微型计算机的硬件均由微处理器、存储器、输入输出接口、输入输出设备这几部分组成,如图1-2所示。 根据总线的组织方式,可把微型计算
4、机的硬件结构分为单总线结构、双总线结构和双层总线结构。图1-2 微型计算机的硬件结构框图81.1.单总线结构单总线结构2.2.双总线结构双总线结构图1-3 单总线结构的微型计算机图1-4双总线结构微型计算机93.3.双层总线结构双层总线结构 图1-5 双层总线结构微型计算机101.2.11.2.1数据总线、地址总线和控制总线数据总线、地址总线和控制总线p数据总线数据总线 DBDB 数据总线用于传输数据信息,是双向总线。p地址总线地址总线 ABAB 地址总线用于传送CPU发出的地址信息,是单向总线。地址信息用于找寻存储器或外设, AB总线的位数决定了外界存储器最大的存储容量 p控制总线控制总线
5、CBCB 控制总线是微处理器向各部件发出的控制信息、时序信息以及外部设备发送到微处理器的请求信息的总称。控制总线中每一根线的方向都是一定的、单向的,但作为整体来看则是双向的。 111.2.21.2.2微型计算机的主要组成部分及功能微型计算机的主要组成部分及功能1.1.微处理器微处理器图1-6 微处理器的基本组成12 微处理器是微型计算机的运算和控制指挥中心,主要由运算器、控制器、寄存器组(阵列)以及内总线组成。(1)(1)运算器运算器 运算器是执行算术运算和逻辑运算的部件,由累加器Acc、暂存器TMP、算术逻辑单元ALU、标志寄存器FR和一些逻辑电路组成。 (2)(2)控制器控制器 控制器是指
6、令执行部件,包括取指令、分析指令(指令译码)和执行指令,由指令寄存器IR、指令译码器ID和操作控制电路三个部件组成。(3)(3)寄存器组寄存器组 在微处理器内部的寄存器组中,主要由通用寄存器和专用寄存器组成。 13p通用寄存器 通用寄存器的作用是暂时存放ALU需要用到的数据,方便完成各种数据操作。p专用寄存器 它们在程序的执行过程中有特殊功能,如程序计数器PC、堆栈指示器SP等。 程序计数器程序计数器PCPC 程序计数器PC用于存放下一条要执行的指令在存储器中存放的地址,通常称为PC指针。 堆栈及堆栈指示器堆栈及堆栈指示器SP SP 堆栈一旦形成就必须遵循先进后出FILO(First In L
7、ast Out)的原则对栈区的数据进行操作。如图1-7.图1-7 堆栈区示意图142.2.存储器存储器 存储器是计算机中存储程序和数据的部件。存储器的性能通常用存储容量和存取速度来描述。如图1-8。3.3.输入输出接口输入输出接口 该接口是CPU与外部设备之间交换信息的连接电路,它们通过总线与CPU相连,简称I/O接口。 4.4.输入输出设备输入输出设备 使用微型计算机就必须进行人机交互,将外部信息传送到微型计算机称为输入操作;将微型计算机的运行结果传送出来称为输出。能完成信息输入或输出的设备称为输入输出设备,二者也合称为外部设备。 图1-8 存储器单元与地址的关系151.2.3 1.2.3
8、微型计算机基本工作过程微型计算机基本工作过程 计算机的核心是CPU,了解CPU的工作过程对于理解计算机内部工作原理非常重要。为了便于理解,下面以模型机执行简单程序为例,说明程序的执行过程:16本段程序已放入内存指定位置,内部结构如图1-9所示: 图1-9 假想模型机与程序执行示例171.31.3 微型计算机的运算基础微型计算机的运算基础1.3.1 1.3.1 计算机中数的表示计算机中数的表示 1.1.机器数和真值机器数和真值 在计算机中,无论数值还是符号,都是用0或1来表示。通常用最高位做符号位,0表示正数,1表示负数。2.2.带符号数的表示方法带符号数的表示方法p原码:在机器数中,将最高位作
9、为符号位,其余二进制位表示该数的绝对值的表示方法叫做原码表示法。 p反码:正数的反码表示与原码相同,负数的反码是将其对应的正数的各位取反,符号位为负。p补码:正数的补码表示与原码相同,负数的补码是将其对应的正数的各位取反后再加1,符号位仍为负。183.3.编码编码 编码是为了在特定场合下方便使用而制定的一种数字代号。计算机中常用的编码有两种(BCD码和ASCII码),是为方便进行特定计算而制定的编码规则。(1)(1)二进制编码的十进制数(二进制编码的十进制数(BCDBCD码)码)用4位二进制数表示1位十进制数的编码方法叫做BCD码。见表1-1 。 在计算机里BCD码的表示方法又分为两种: 分离
10、BCD码和组合BCD码。 表1-1 十进制数与BCD码对照表 19p分离BCD码 用1个字节表示1位十进制数,低4位为BCD码,高4位补0。用这种方式表示的BCD码叫做分离BCD码,见表1-2。p组合BCD码 在1个字节中,用低4位表示1位BCD码,同时高4位也表示为1位BCD码,即在1个字节中同时表示两位十进制数。 (2)(2)字母和符号的编码(字母和符号的编码(ASCIIASCII码)码) ASCII码表示与分离BCD表示很相似,低4位都是相同的,均用00001001表示09,差别仅在高4位,ASCII码不是0000而是0011。详见附录1-1。表1-2 十进制数与分离BCD码对照表 20
11、1.3.2 1.3.2 计算机的基本运算方法计算机的基本运算方法 计算机中CPU能直接提供的运算有算术运算和逻辑运算。 1.1.补码运算及溢出判别补码运算及溢出判别(1)(1)补码的加减法运算规则补码的加减法运算规则 若进行 X + Y运算,则利用CPU内部的加法器可直接计算得到。 若进行X-Y运算,则需将其转换为X + (-Y),此时只需将-Y转换为补码,仍可通过加法器来实现。(2)(2)溢出的判断溢出的判断 当进行带符号数计算时,如果计算的结果超出了二进制带符号数的表达范围,就被称为溢出。 对运算结果是否有溢出的判断,可通过“双进位”法来进行。212.BCD2.BCD码运算及十进制调整码运
12、算及十进制调整 由于计算机总是将数据作为二进制数来进行运算,在利用指令进行算术运算时,是按“逢16进一”的法则进行,而日常生活中采用的十进制运算均是按“逢10进一”法则进行的,故两种计算方法中相差6。因此,需要进行 “十进制调整”。 十进制调整的规则如下:十进制调整的规则如下:若BCD码加法运算结果中出现无效码或出现进位,则在相应位置再加6。若BCD码减法运算结果中出现无效码或出现借位,则在相应位置再减6。实际上,分离BCD码的十进制调整处理方法略有不同,在高4位上还需加F。 223.3.逻辑运算逻辑运算 逻辑运算是按照二进制的最小单位Bit(位)来进行的,常用的逻辑运算有,与、或、异或、非等
13、。(1)(1)与运算与运算 与0相与得0,与1相与保持不变。利用与运算可以将指定位清0。 (2)(2)或运算或运算 与1相或得1,与0相或保持不变。利用或运算可以将指定位置1。 23(3)(3)异或运算异或运算 与1相异或等于取反,与0相异或保持不变。利用异或运算可以对指定位求反。(4)(4)非运算非运算 按位取反,利用非运算可以对所有位求反。 241.4 1.4 典型微型计算机典型微型计算机1.4.1 1.4.1 主要性能指标主要性能指标1.1.字长字长 字长是指计算机对外一次能传送及内部处理数据的最大二进制数码的位数。2.2.运算速度运算速度 计算机的运算速度一般用每秒钟所能执行的指令条数
14、来表示。3. 3. 内存储器的容量内存储器的容量 内存的性能指标主要包括存储容量和存取速度。4.4.外存储器的容量外存储器的容量 外存储器容量通常是指硬盘容量(包括内置硬盘和移动硬盘)。 5.5.外设扩展能力外设扩展能力 微型计算机系统配接各种外部设备的可能性、灵活性和适应性。 6.6.软件配置软件配置 软件是微型计算机系统的重要组成部分,微型计算机系统中软件配置是否齐全,直接关系到计算机性能的好坏和效率的高低。 251.4.2 PC1.4.2 PC系列微型计算机系列微型计算机 PC系列微型计算机从外部看都是由主机和外设组成。1.1.主板硬件结构主板硬件结构 主板,又称系统板或母板。如图1-1
15、0.(1)CPU插槽(2)内存插槽(3)BIOS系统(4)芯片组(5)总线扩展插槽(6)外设接口系统 图1-10 主板示意图262. 2. 常用常用I/OI/O适配器适配器(1)显示适配器 (2)音频卡 (3)网络适配器 (4)硬盘驱动器接口3.3.硬盘硬盘 硬盘是是微型计算机海量存储的主要存储媒介之一 。4.4.输入输出设备输入输出设备 (1)输入设备键盘 鼠标器 摄像头 (2)输出设备输出设备的作用是接收微型计算机输出的信息。 显示器(类型和重要技术指标) 打印机(类型) 271.4.3 1.4.3 微型计算机中的主要计算机技术微型计算机中的主要计算机技术1.流水线技术2.乱序执行技术3.
16、推测执行技术4.高速缓冲存储器技术5.虚拟存储器技术6. 基于Core微架构(Core Micro-Architecture)系列技术281.4.4 1.4.4 微型计算机类型微型计算机类型1.1.按结构形式分类按结构形式分类 (1)台式计算机 (2)便携式个人计算机 (3)平板电脑 (4)单片机 2. 2. 按微处理器的位数分类按微处理器的位数分类 8位微型计算机、16位微型计算机、32位微型计算机和64位微型计算机等。3. 3. 按用途分类按用途分类 (1)专用机 (2)通用机 4. 4. 按原理分类按原理分类 (1)模拟计算机 (2)数字计算机 (3)混合计算机 291.4.5 1.4.
17、5 微型计算机的应用及发展微型计算机的应用及发展1.1.计算机应用领域计算机应用领域(1)科学计算(或称为数值计算) (2)检测与控制(3)数据处理 (4)计算机辅助设计(5)人工智能 (6)计算机仿真(7)办公自动化与信息管理2.2.计算机的发展趋势计算机的发展趋势(1)巨型化(2)微型化(3)网络化(4)智能化30第2章 Intel系列微处理器 312.1 Intel2.1 Intel系列微处理器概述系列微处理器概述2.1.1 8086/8088微处理器2.1.2 80286微处理器2.1.3 80386/80486微处理器 2.1.4 64位微处理器及多核技术 2.2 804862.2
18、80486微处理器的体系结构微处理器的体系结构2.2.1 80486微处理器的体系结构特点2.2.2 80486微处理器的内部结构 2.2.3 80486的工作方式 2.2.4 80486的常用引脚功能322.1 Intel2.1 Intel系列微处理器概述系列微处理器概述2.1.1 8086/80882.1.1 8086/8088微处理器微处理器 8086是标准16位微处理器,内、外数据总线均为16位。8088是准16位微处理器,内部数据总线为16位,外部数据总线为8位。1.8086/80881.8086/8088微处理器的内部结构微处理器的内部结构 在8位微处理器中,微处理器执行一段程序通
19、常按以下步骤循环往复顺序执行的,即: 从内存储器中取出一条指令,分析指令操作码。 从内存储器或寄存器中获取操作数(如果指令需要操作数)。 执行指令。 将结果存入内存储器或寄存器中(如果指令需要)。 为提高效率8086/8088微处理器在其内部结构设计上进行了改进,其内部结构如图2-1所示。 3334(1)执行单元EU 执行单元主要完成分析指令、执行指令的任务,它由8个16位的通用寄存器、1个16位的标志寄存器、1个16位 的运算数据暂存器、1个16位的算术逻辑单元ALU及EU控制电路组成。(2) 总线接口单元BIU 总线接口单元主要完成取指令及对外存取数据。它由4个16位的段寄存器(CS、DS
20、、SS、ES)、1个16位的指令指针寄存器IP、1个与EU通信的内部暂存器、1个指令队列、1个20位的地址加法器及总线控制电路组成。352.2.指令流水线和存储器的分段模式指令流水线和存储器的分段模式(1)指令流水线 由于EU和BIU两个独立的功能部件可以并行工作,改变了以前8位微处理器执行程序时的串行工作方式,使得取指令操作码和分析、执行操作重叠进行,从而形成了两级指令流水线结构,提高了微处理器的运行速度。如图。36(2)存储器的分段模式 8086/8088引入了“分段”的概念。即把1MB的物理存储空间分成若干个逻辑段,每个逻辑段最大可为64KB。 每个段的起始单元地址被称为段的首地址,由2
21、0位2进制数表示,它是一个能被16整除的数;段的首地址的高16位地址被称为段的基地址,简称段基址;段中某存储单元相对于段基址的偏移量(16位)被称为段内偏移地址,也称段内偏移量。段基址和段内偏移量也被称为逻辑地址。1MB存储器空间中的某一存储单元所在位置的实际地址又叫物理地址,用20位地址信息表示。将逻辑地址变换为物理地址的关系式为: 物理地址=段基址l6段内偏移地址 BIU中的4个16位的段寄存器CS、SS、DS和ES分别存放着4个当前段(代码段,堆栈段,数据段,附加段)的段基址。372.1.2 802862.1.2 80286微处理器微处理器 80286是继8086之后推出的一种增强型标准
22、16位微处理器。与8086/8088相比,它在结构上有很大改进,性能上有明显提高。主要表现在: (1) 内部由执行单元EU(ExecutionUnit)、总线单元BU(Bus Unit)、指令单元IU(Instruction Unit)和地址单元AU(Address Unit)4个部分组成,可实现4级流水线作业,使数据吞吐率大大提高,加快了处理速度。 (2)80286 CPU有24位地址线、16位数据线,且地址线与数据线不再复用,可直接寻址的存储空间为16MB。 (3)对8086向上兼容。具有8086/8088 CPU的全部功能,在8086/8088上运行的汇编语言程序不需修改就可在80286
23、 CPU上运行。 (4)80286有两种工作方式:实地址模式(简称实模式或实地址方式)和保护虚拟地址模式(简称保护模式或保护方式)。38 实地址模式下,80286相当于一个快速的8086,可寻址1 MB的物理地址空间,对存储单元寻址时,从逻辑地址到物理地址的转换也与8086一样,4个段寄存器中装入的是段基值。 保护虚拟地址模式下,80286可直接寻址的存储器空间为16 MB,并可提供l GB 的虚拟地址空间。存储单元的物理地址仍由段基址和偏移地址通过运算而得。但4个段寄存器装入的不再是段基址,而是段选择符。24位的段基址存放在一个段描述符中,通过段选择符可找到相应的段描述符,由该描述符便可获得
24、待操作存储单元所在段的段基址。,392.1.3 80386/804862.1.3 80386/80486微处理器微处理器 80386/80486是 Intel公司推出的32位微处理器,与80286相比,它们在结构和性能上的主要特点如下: (1)内部由总线接口单元、指令预取单元、指令译码单元、指令执行单元、段管理单元和页管理单元等6个独立的部件组成,可同时并行工作,具有6级流水线结构。 (2)内部寄存器数量较80286明显增加。具有32位数据处理能力。可进行64位的数据运算,增强了位处理指令的功能。数据总线以及地址总线均为32位。 (3)对存储器的管理可实现段式、页式和段页式存储管理,具有64T
25、B的虚拟存储空间(246B)和4GB物理存储空间(232B)。 (4)提供32位外部总线接口,最大数据传输率显著提高,具有自动地在16位和32位数据总线之间进行切换的功能。 (5)具有三种工作方式,实地址方式、保护虚拟地址方式和虚拟8086方式。虚拟8086方式。402.1.4 642.1.4 64位微处理器及多核技术位微处理器及多核技术1.Pentium1.Pentium微处理器微处理器 Pentium是一种高性能的64位微处理器。它采用超标量体系结构,内含两条指令流水线,在一个时钟周期内可执行两条整数运算指令或一条浮点运算指令;内置的浮点运算部件采用超流水线技术,有8个独立执行部件进行流水
26、线作业;增加了分支指令预测;内置了指令和数据两个独立的超高速缓存器(分别为8KB);采用64位外部数据总线,提高了使经总线访问内存数据的速度;引入了大型计算机中采用的内部错误检测、功能冗余校验和错误报告等自诊断功能;进行了更多的可测性设计(如边界扫描、探针方式等);提供了独特的性能监察功能,提供了灵活的存储器页面管理,既支持传统的4KB存储器页面,又可使用更大的4MB存储器页面。 412.2.多核技术多核技术 多核技术是64位微处理器面世后发展起来的新技术,为提高64位微处理器性能的新技术主要有:超线程技术、多核技术和睿频智能加速技术等。 (1) 超线程技术(Hyper-Threading T
27、echnology) Intel公司提出的超线程技术在CPU内增加了一个逻辑处理单元,使一个CPU能够同时执行两个“事件”,看上去就像有两个CPU一样。但其实际性能远远低于两个CPU,超线程技术的应用在单核微处理器中可使其性能得到一定的提高。 (2) 双核/多核技术(Dual/Multi Core Technology) 双核微处理器指一个微处理器内部集成有两个独立的内核(core),每个内核有自己的高速缓存和控制器,均能独立读取并执行指令,实现了指令级的并行工作。但在实际工作中并非任何时候都是两个CPU在同时工作。 (3)睿频加速技术(Turbo Boost Technology) 睿频加速
28、技术是Intel新一代的能耗管理方案。在不超过散热设计功耗(Thermal Design Power, TDP)的前提下,尽量提高CPU性能。422.2 804862.2 80486微处理器的体系结构微处理器的体系结构2.2.1 804862.2.1 80486微处理器的体系结构特点微处理器的体系结构特点 80486采用的是单倍的时钟频率,以增加电路的稳定性。内部包含有8KB的指令/数据高速缓存器(Cache),用于存储CPU当前正在使用的指令和数据。内部包含了相当于增强型80387功能的浮点协处理器(FPU)。提高了处理速度。对使用频度较高的基本指令,采用了硬件逻辑直接控制,并在指令执行单元
29、采用了RISC(精简指令集)技术和流水线技术,提高了指令的执行速度,平均指令执行速度为1.2条指令/时钟周期。采用了突发(burst)式总线传输方式,使系统取得一个地址后,与该地址相关的一组数据都可以进行输入/输出,有效地解决了CPU与存储器之间的数据交换问题。内部数据总线的宽度不都只限于32位,而是有32位、64位和128位多种,分别用于不同单元之间的数据通路,对于加快数据传输速度、缩短指令执行时间也有重要作用。对某些内部寄存器(如控制寄存器)中部分位的内容进行了变动和增加。面向多处理器结构,在总线接口部件上增加了总线监视功能;增加了支持多机操作的指令。432.2.2 804862.2.2
30、80486微处理器的内部结构微处理器的内部结构1.1.内部结构内部结构图2-4 80486微处理器的内部结构示意图44 由图2-4可见,80486微处理器的内部结构主要由8个逻辑单元组成:总线接口单元、指令预取单元、指令译码单元、指令执行单元、段管理单元、页管理单元、高速缓冲存储器单元和浮点运算单元。 在上述各逻辑单元的支持下,80486按6级流水线方式工作,如图2-5所示。 图2-5 80486的流水线工作示意图452.2.内部寄存器组内部寄存器组 80486的寄存器按功能可分为四类:基本寄存器、系统级寄存器、调试和测试寄存器、浮点寄存器。 (1)基本寄存器 图2-6 基本寄存器46(2)系
31、统级寄存器系统级寄存器包括4个控制寄存器和4个系统地址寄存器。 1)控制寄存器 80486有4个32位的控制寄存器(CR0、CR1、CR2和CR3),它们的作用是保存全局特性的机器状态,控制片内Cache、FPU和分段、分页单元的工作。 图2-7 控制寄存器格式472)系统地址寄存器 系统地址寄存器只在保护方式下使用,所以又叫保护方式寄存器。80486有4个系统地址寄存器,非别为全局描述符表寄存器(GDTR)、中断描述符表寄存器(IDTR)、局部描述符表寄存器(LDTR)和任务寄存器(TR),它们主要作是将保护方式下常用的数据基地址、界限和其他属性保存起来,以确保其快速性。 图2-8 系统地址
32、寄存器48 (3)调试和测试寄存器80486提供了8个32位的调试寄存器DR0DR7,它们为调试提供了硬件支持。 图2-9 调试和测试寄存器a) 调试寄存器 b) 测试寄存器49(4) 浮点寄存器80486的FPU中包含有13个浮点寄存器 ,专门用于80486进行浮点运算时使用。 图2-10 浮点寄存器502.2.3 804862.2.3 80486的工作方式的工作方式 80486有三种工作方式:实地址方式,保护虚地址方式和虚拟8086方式。上电复位时自动进入实地址方式。图2-11 80486微处理器三种工作方式的转换512.2.4 804862.2.4 80486的常用引脚功能的常用引脚功能
33、图2-12 80486微处理器的引脚配置52第3章 80486微处理器 的指令系统 533.1 3.1 8048680486微处理器的寻址方式微处理器的寻址方式3.1.1 操作数寻址方式3.1.2 转移地址寻址方式3.1.3 指令的执行时间和占用空间3.2 3.2 8048680486微处理器的指令系统微处理器的指令系统3.2.1 数据传送指令3.2.2 算术运算指令3.2.3 逻辑运算和移位指令3.2.4 字符串操作指令3.2.5 控制转移指令3.2.6 处理器控制指令 3.2.7 按条件设置字节指令543.1 804863.1 80486微处理器的寻址方式微处理器的寻址方式3.1.1 3.
34、1.1 操作数寻址方式操作数寻址方式1 1立即寻址立即寻址操作数直接包含在指令中的寻址方式称为立即寻址方式。 立即数可为8位、16位或32位的固定数值,即常数,不能是小数、变量或其他类型的数据,它只能作为源操作数,不能作为目的操作数。立即数跟随指令操作码一起存放在内存的代码段中,在CPU取指令时随指令操作码一起取出并直接参加运算。2 2寄存器寻址寄存器寻址 在这种寻址方式下,操作数存放在CPU内部的某个8位、16位或32位的通用寄存器中。 采用这种寻址方式的指令编码短,执行时操作就在CPU内部进行,无需访问存储器,故执行速度快。553 3存储器操作数寻址存储器操作数寻址 操作数在除代码段以外的
35、内存单元中。通过不同寻址方式求得操作数地址,从而取得操作数。在指令中给出计算操作数所在内存单元偏移地址的表达式,完整的地址表达式如下: 段寄存器:段寄存器: 基址寄存器基址寄存器+ +变址寄存器变址寄存器比例因子比例因子+ +位移量位移量 表3-1 16位和32位寻址时的4个分量定义56(1)直接寻址(Direct Addressing) 直接寻址是指操作数所在内存单元的有效地址EA直接出现在指令中,EA可以是8位、16位或32位。这种寻址方式是对存储器操作数进行访问时可采用的最简单方式。 (2)寄存器间接寻址(Register Indirect Addressing) 这种寻址方式下,操作数
36、所在内存单元的有效地址由规定的寄存器指出。(3)寄存器相对寻址方式(Register Relative Addressing) 在这种方式中,操作数所在内存单元的有效地址为规定的基址寄存器或变址寄存器的内容与一个常量(即位移量,Displacement)之和。 (4)基址变址寻址方式(Based Indexed Addressing) 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。 当基址寄存器和变址寄存器默认的段寄存器不同时,一般规定由基址寄存器来决定哪一个段寄存器为默认段寄存器。57(5)相对基址变址寻址方式(Relative Based Indexed Addressing
37、) 该方式中,操作数所在内存单元的有效地址是基址寄存器、变址寄存器 的内容与一个常量(即位移量)之和。 (6)比例变址寻址方式(Scaled Indexed Addressing) 操作数的有效地址是变址寄存器的内容乘以比例因子再加上位移量之和,所以EA由3种成份组成。 (7)基址比例变址寻址方式(Based Scaled Indexed Addressing)操作数的有效地址是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和。 (8)相对基址比例变址寻址方式(Relative Based Scaled Indexed Addressing) 操作数的有效地址是变址寄存器的内容乘以比例因
38、子,加上基址寄存器的内容,再加上位移量之和。 583.1.23.1.2转移地址寻址方式转移地址寻址方式 在程序运行过程中,往往需要根据不同的条件执行不同的程序段,因此程序的执行要产生分支或转移。在指令系统中,控制程序执行顺序的指令称为控制转移指令,这组指令的实质是根据需要修改IP或修改CS:IP的内容。控制转移指令的寻址方式涉及如何确定转移的目标地址。1段内直接寻址(Intrasegment Direct Addressing) 在这种寻址方式下,通过当前IP寄存器的内容与一个8位或16位位移量之和得到转移的目标地址。位移量为8位时,称为短程转移;位移量为16位时,称为近程转移。 2段内间接寻
39、址(Intrasegment Indirect Addressing) 该方式中,转移的目标地址存放在寄存器或存储单元中。寄存器或存储单元的内容可以用数据寻址方式中除立即数寻址以外的任何一种寻址方式取得,所得到的内容将用来取代IP寄存器的值。该寻址方式不能用于条件转移指令。593段间直接寻址(Intersegment Direct Addressing) 指令中直接提供转移目标地址的段基址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段基址取代CS寄存器的内容即可完成从一个段到另一个段的转移操作。4段间间接寻址(Intersegment Indirect Add
40、ressing) 该方式下,用存储器中两个相继字的内容来取代IP和CS寄存器中原来的内容,以达到段间转移的目的。这里,存储单元的地址是由指令指定除立即数寻址方式和寄存器寻址方式以外的任何一种数据寻址方式取得。3.1.3 3.1.3 指令的执行时间和占用空间指令的执行时间和占用空间 指令的执行时间取决于时钟周期的大小和执行指令所需要的时钟周期数。如果涉及内存操作,那么执行一条指令的时间为基本执行时间加上计算有效地址所需要的时间。 不同指令或不同寻址方式的机器指令长度不同,一个程序一旦装入计算机,它就会占有一定的存储空间。程序量越大,占有的存储空间也越大。完成同样功能的不同程序,可能会在占用的存储
41、空间和执行时间上有很大差别。603.2 804863.2 80486微处理器的指令系统微处理器的指令系统3.2.1 3.2.1 数据传送指令数据传送指令 数据传送是一种最基本、最常用、最重要的操作,在程序中它的使用频率最高。这类指令可用于实现立即数到存储器或寄存器、存储器与寄存器、寄存器与寄存器、累加器与输入/输出端口之间的字节、字或双字的传送。这类指令又可以进一步分为:通用传送指令、堆栈操作指令和输入/输出指令3类。图3-1 数据传送指令能够实现的操作示意图611通用传送指令 基本传送指令MOV 格式:MOV 目的操作数,源操作数 功能:把源操作数的内容复制到目的操作数中。源操作数的内容保持
42、不变,不影响状态标志。 带符号扩展传送指令MOVSX(80386新增) 格式:MOVSX 目的操作数,源操作数 功能:将8位或16位的带符号源操作数通过在高位填充符号位的值,扩展成16位或32位后传送给目的操作数,源操作数保持不变。 零扩展传送指令MOVZX(80386新增) 格式:MOVZX 目的操作数,源操作数 功能:将8位或16位的无符号源操作数通过在高位填充“0”,扩展成16位或32位后传送给目的操作数,源操作数保持不变。62 交换指令XCHG 格式:XCHG目的操作数,源操作数 功能:将源操作数的内容与目的操作数的内容进行交换。 地址传送指令1) 有效地址传送指令LEA 格式:LEA
43、目的操作数,源操作数 功能:将源操作数所在位置的有效地址(即偏移地址)送到目的操作数中。2) 地址指针传送指令 格式:LDS/LES目的操作数,源操作数 LFS/LGS/LSS目的操作数,源操作数(80386新增) 功能:将源操作数中存放的一个32位或48位的全地址指针(包括有效地址和段基址)传送到目的操作数和对应的段寄存器中(由指令助记符指示)。其中,低16位或32位的内容作为有效地址传送到目的操作数,高16位的内容作为段基址传送到段寄存器中。63 查表转换指令XLAT 格式:XLAT 功能:完成一个字节的查表转换功能。将DS:BX+AL指向的字节单元的内容送给AL。可以根据数据表中元素的序
44、号取出表中的相应元素(也可以看成是对一维数组的访问)。 说明: 1)使用该指令需要先在数据段中建立一张字节类型的表,该表的最大长度为256个字节。 2)该指令隐含了两个操作数:BX中存放该表首单元的有效地址,AL中存放相对于表首单元的表内偏移量(即要查找的元素序号),需要事先赋值。 3)该指令执行后,实现了AL中一个字节内容的转换。64 字节交换指令BSWAP(80486新增) 格式:BSWAP源操作数 功能:将32位通用寄存器的4个字节交换顺序,即将32位源操作数的D31D24与D7D0交换、D23D16与D15D8交换。 标志寄存器传送指令LAHF/SAHF 格式:LAHF SAHF 功能
45、:LAHF将EFLAGS的最低字节部分传送到AH中,SAHF将AH的内容传送到EFLAGS的最低字节部分。2堆栈操作指令 堆栈是内存中一片按照“后进先出(LIFO)”方式工作的特殊区域,用以存放暂时不用却又必须保护的数据。对于堆栈的操作有压入和弹出两种情况,分别称为“压栈”和“弹栈”,且这两种操作均在堆栈的栈顶位置进行。65 压栈指令PUSH 格式:PUSH源操作数 功能:SP=SP2(16位操作数)或SP=SP4(32位操作数),源操作数压入SS:SP指向的字(或双字)单元。 弹栈指令POP 格式:POP目的操作数 功能:首先将SS:SP所指的栈顶元素弹出给16位或32位的目的操作数,SP=
46、SP+2(或4)。 16位标志寄存器压栈/弹栈指令PUSHF/POPF 格式:PUSHF POPF 功能:执行PUSHF时,首先,SP=SP2,然后,标志寄存器低16位压入SS: SP指向的两个连续单元。执行POPF时,先从栈顶弹出2个字节给标志寄存器低16位,然后SP=SP+2,显然POPF的执行会影响标志寄存器中相应标志位的状态。66 32位标志寄存器压栈/弹栈指令PUSHFD/POPFD 格式:PUSHFD POPFD 功能:执行PUSHFD时,首先,SP=SP4,然后,32位标志寄存器压入SS:SP指向的4个连续单元。执行POPFD时,先从栈顶弹出4个字节给32位标志寄存器,然后SP=
47、SP+4。 全部16位通用寄存器压栈/弹栈指令PUSHA/POPA(80286新增) 格式:PUSHA POPA 功能:执行PUSHA时,SP=SP16,然后,将8个16位的通用寄存器内容压栈,压栈的顺序为AX、CX、DX、BX、SP、BP、SI、DI。被压栈的SP是本指令执行之前的值。执行POPA时,从当前栈顶开始,依次把其中的内容弹给8个16位的通用寄存器,弹栈的顺序为DI、SI、BP、SP、BX、DX、CX、AX,应注意SP的内容仍然按照弹栈的规律变化,即SP=SP+16,不受此次操作过程中堆栈空间对应单元内容的影响。67 全部32位通用寄存器压栈/弹栈指令PUSHAD/POPAD(80
48、386新增) 格式:PUSHAD POPAD 功能:执行PUSHAD时,SP=SP32,然后,将8个32位的通用寄存器内容压栈,压栈的顺序为EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI。被压栈的ESP是本指令执行之前的值。执行POPAD时,从当前栈顶开始,依次把其中的内容弹给8个32位的通用寄存器,弹栈的顺序为EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX,应注意的是,SP的内容仍然按照弹栈的规律变化,即SP=SP+32,不受此次操作过程中堆栈空间对应单元内容的影响。683输入/输出指令 直接寻址的输入/输出指令格式:INAL/AX/EAX,PORTOUTPO
49、RT,AL/AX/EAX功能:IN指令从PORT指定的端口把字节、字或双字数据传送到AL、AX或EAX中;OUT指令把AL、AX或EAX中的字节、字或双字数据传送到PORT指定的端口。说明:PORT是一个8位的I/O端口地址,地址范围为0FFH。 DX间接寻址的输入/输出指令格式:INAL/AX/EAX,DXOUTDX,AL/AX/EAX功能:IN指令从DX指定的端口把字节、字或双字数据传送到AL、AX或EAX中;OUT指令把AL、AX或EAX中的字节、字或双字数据传送到DX指定的端口。说明:用DX间接寻址方式最大可寻址64KB个端口,端口地址范围为0FFFFH。693.2.2 3.2.2 算
50、术运算指令算术运算指令1基本四则运算 加法指令ADD格式:ADD目的操作数,源操作数功能:目的操作数 = 源操作数 + 目的操作数 带进位加法指令ADC格式:ADC目的操作数,源操作数功能:目的操作数 = 源操作数 + 目的操作数 + 进位标志CF 减法指令SUB格式:SUB目的操作数,源操作数功能:目的操作数 = 目的操作数 - 源操作数70 带借位减法指令SBB格式:SBB目的操作数,源操作数功能:目的操作数 = 目的操作数 - 源操作数 借位标志CF 加1指令INC和减1指令DEC格式:INC目的操作数 DEC 目的操作数功能:执行INC指令后,目的操作数 = 目的操作数 + 1; 执行