第2章微处理器与指令系统课件_第1页
第2章微处理器与指令系统课件_第2页
第2章微处理器与指令系统课件_第3页
第2章微处理器与指令系统课件_第4页
第2章微处理器与指令系统课件_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 微处理器和指令系统2.1 Intel系列微处理器概述2.2 8086/8088微处理器2.3 Pentium微处理器2.4 Pentium微处理器指令系统2-12.1.1 Intel 8086/8088 微处理器2.1.2 Intel 80486 微处理器2.1.3 Pentium 微处理器(80586)2.1.4 Pentium Pro 微处理器2.1.5 Pentium 微处理器2.1.6 Pentium 微处理器2.1.7 Pentium 4 微处理器2.1 Intel系列微处理器概述2-22.1.1 Intel 8086/8088 微处理器 8086是1978年推出的全16位微

2、处理器, 8088是1979年推出的准16位微处理器。二者除外数据总线位数(8086为16位,8088为8位)及与此相关的部分逻辑稍有差别外,内部结构和基本性能相同(地址总线20位),指令系统完全兼容。 在8086/8088的设计中,引入了两个重要的结构概念: 指令流水线 存储器分段 这两个概念在以后升级的Intel系列微处理器中一直被沿用和发展。正是这两个概念的引入,使8086/8088比原来的8位MPU在运行速度、处理能力和对存储空间的访问等性能方面有很大提高。2-32.1.2 80486微处理器 1.内部寄存器的容量都扩充到了32位或以上,具有全32 位数据处理能力,并可进行64位的数据

3、运算。 2.片内存储管理部件可实现段页式存储管理,比80286可 提供更大的虚拟存储空间和物理存储空间。 3.新增了一种保护模式下的工作方式,即虚拟8086方式。 4.指令流水线增加到了6级。 5.提供了32位外部总线接口,最大数据传输速率显著提 高。 80486是继80386之后推出的第二代32位高性能微处理器,它以提高性能和面向多处理器系统为主要目标。80486继承了80386的各种优点,表现在以下几方面:2-4 1.片内集成了一个浮点运算单元FPU 。 2.内含一个8KB的数据与指令合用的Cache。 3.采用RISC技术。使芯片内的不规则控制部分减少,同时常用基本指令采用硬件逻辑控制执

4、行,使基本指令可以用一个时钟周期完成。 4.采用一种突发总线(Burst Bus)的技术。使取得一个地址后,与该地址相关的一组数据可以连续输入/输出,有效地解决了微处理器同内存储器之间的数据交换问题。 5.面向多处理器结构,增加了支持多机操作的指令。 2.1.2 80486微处理器 除以上80386、80486共有的特点之外,80486也采用了许多新技术: 2-52.1.3 Pentium微处理器(80586) 1.采用超标量体系结构。 2.内置的浮点运算部件采用超流水线技术。 3.增加了分支指令预测。 4.内置了指令和数据两个独立的超高速缓存器,避免了预取指令和数据可能发生的冲突。 Pent

5、ium是一种高性能的32位微处理器。其对80486作了下列重大改进:2-6 5.采用64位外部数据总线。 6.引入了大型机中采用的内部错误检测、功能冗余检验和错误报告等自诊断功能。 7.进行了更多的可测性设计。 8.提供了独特的性能监察功能,以利于软、硬件产品的优化和升级。 9.提供了灵活的存储器页面管理。2.1.3 Pentium微处理器(80586)2-7精简指令集技术。二级缓冲结构。乱序执行和预测执行技术。三级超标量和14级超流水线结构。寄存器重命名技术 2.1.4 Pentium Pro微处理器 简称P6,中文名为“高能奔腾”。在体系结构中采用了许多新的思想和新的技术:2-82.1.5

6、 Pentium 微处理器 P6级微处理器的第二代产品,从系统结构角度看,主要采用了以下几种先进技术:采用了由三种创新处理技巧结合的动态执行技术,即:多分支预测、数据流分析和推测执行。双重独立总线技术(DIB, Dual Independent Bus) 多媒体增强技术(MMX技术) 采用单指令流多数据流SIMD技术 新增加了57条功能强大的MMX指令2-92.1.6 Pentium 微处理器 Pentium 是第三代P6级微处理器产品。与Pentium相比,有如下改进:前端总线的时钟频率为100MHz (采用0.18m新工艺的Pentium ,其前端总线达到133MHz)。将256KB的L2

7、 Cache集成到了芯片内。增加了 70条流式单指令多数据扩展SSE指令。首次设置了处理器序列号PSN。2-102.1.7 Pentium 4微处理器 1.采用了超级管道技术,使用长达20级的分支预测/恢复管道,而P6只有10级。 2.它的简单算术逻辑单元(ALU) 采用2倍的处理器核心频率运行。 3.动态执行技术中的指令池能容下126条指令。 4.内含一个4KB的分支目标缓冲。 5.增加了由144条新指令组成的SSE2。 它是第一个非P6核心结构的全新32位微处理器,与P6级微处理器相比,主要结构特点如下:2-112.2 Intel8086/8088微处理器内部结构指令流水线存储器分段 80

8、86是全16位微处理器,8088是准16位微处理器。二者除了外数据总线位数及与此相关的部分逻辑稍有差别外,内部结构和基本性能相同,指令系统完全兼容。 2-121.内部结构2.2 Intel 8086/8088微处理器20位ABEU控制电路总线控制电路通用寄存器累加器基址寄存器计数寄存器数据寄存器堆栈指针基址指针目的变址源变址指针寄存器变址寄存器 地址加法器运算暂存器ALU标志寄存器指令指针内部暂存器指令队列总线接口单元(BIU)执行单元(EU)外部总线8086/8088DB8088:8位8086:16位CSDSSSESIP1 2 3 4 5 68位80888086AX AH ALBX BH B

9、LCX CH CLDX DH DL SPBPDISIALU DB16位段寄存器2-13 这种流水线操作并没有减少每条指令的执行步骤与时间,但由于各指令的不同步骤之间并行执行,从而极大地提高了指令流(程序)的执行速度。 流水线操作的优点:指令队列的存在使EU和BIU并行工作,取指令和分析、执行指令操作可重叠进行,形成了两级指令流水线结构,减少了CPU等待时间,提高了CPU的利用率,加快了整机运行速度,降低了对存储器存取速度的要求。2.指令流水线取指令1 取指令2 取数据1 取指令3 存结果1 取指令4 取指令5 等待 译码1 执行1 译码2 执行2 译码3 BIUEU 8086/8088的指令“

10、流水”操作2.2 Intel 8086/8088微处理器2-14 将1MB的物理存储空间分成若干个逻辑段,每段大小为64KB。 64KB30000H(段基址) 段的起始单元地址叫段基址,存放在段寄存器中。通过4个段寄存器,CPU每次可同时对4个段进行寻址。3.存储器分段2.2 Intel 8086/8088微处理器内存 00000H00001H00002H00003HFFFFFH2-15 分段方式不唯一,各段之间可以连续、分离、部分重叠或完全重叠,这主要取决于对各个段寄存器的预置内容。2.2 Intel 8086/8088微处理器1000H2000H3100H3100H代码段(64KB)堆栈段

11、(64KB)数据段与附加数据段重叠(64KB)CS10000H20000H31000HSSDSES1FFFFH2FFFFH40FFFH 存储器分段结构示例2-16 物理地址是1MB存储空间中的某一单元地址,用20位地址码表示,CPU访问存储器时,地址总线上送出的就是物理地址。 逻辑地址在编程时采用,由段基址和偏移地址组成,两者均为16位。内存20000H20A00H0A00H物理地址20A00H逻辑地址2000 物理地址和逻辑地址2.2 Intel 8086/8088微处理器2-17逻辑地址与20位物理地址的变换关系: 物理地址=段基址16+偏移地址偏移地址段基址段基址 000020位物理地址

12、逻辑地址15 0 15 0 左移四位19 0地址加法器 逻辑地址与物理地址的变换2.2 Intel 8086/8088微处理器2-18 2.3 Pentium微处理器2.3.1 内部结构与外部引脚2.3.2 内部寄存器2.3.3 Pentium的四种工作方式2-19 Pentium在结构上由如下功能部件组成: 整数执行单元 浮点单元 指令Cache和数据Cache 指令预取单元 指令译码单元 地址转换与管理单元 总线接口单元 控制单元 这些功能部件除地址转换与管理单元与80386/80486保持兼容外,其他都进行了重新设计。 2.3.1 内部结构和外部引脚2-201. 内部结构地址转换与存储管

13、理单元APICDP逻辑控制ROM浮点单元8KB指令高速缓存TLB预取地址指令预取单元指令译码单元总线单元8KB数据高速缓存TLB控制单元地址生成U流水线地址生成V流水线整数寄存器组ALUU流水线ALUV流水线控制寄存器组加法除法乘法桶形移位器控制指令指针分支检验与目标地址32位地址总线323232326464位数据总线数据控制控制64位数据总线32位地址总线分支目标缓冲器32323280802.2.1 内部结构和外部引脚1)总线接口单元 主要用于管理访问外部存储器和 I/O端口必须的地址、数据和控制总线,完成预取指令、读/写数据等总线操作。2) 整数执行单元 由“U”和“V”两条指令流水线构成

14、超标量流水线结构,其中每条流水线都有自己的ALU、 地址生成逻辑和Cache接口。3)预取缓冲单元 预取缓冲单元在总线接口单元空闲时,负责提前去内存或指令Cache预取指令。其指令预取缓冲器在前一条指令执行结束之前可以预取多达94个字节的指令代码。4)指令译码单元 将预取的指令译成Pentium可以执行的控制信号并送控制单元。对绝大多数指令来说,Pentium微处理器可以做到每个时钟周期以并行方式完成两条指令的译码操作。 5)控制单元 负责解释来自指令译码单元的指令字和控制ROM的微代码。控制部件的输出直接控制两条指令流水线和浮点单元。 6)地址转换与存储管理单元 Pentium的地址转换与存

15、储管理单元与80386/80486保持完全兼容,由分段和分页部件组成。Pentium除继续支持4KB大小的页面外,还允许使用高达4MB的页面,从而减少了页面切换的频率,并加快了某些应用程序的执行。 7)独立的指令Cache和 数据Cache Pentium片内有两个8KB的超高速缓存器,一个是指令Cache,一个是数据Cache。指令和数据分别使用不同的Cache,使Pentium中数据和指令的存取减少了冲突,提高了性能。 8) 浮点运算单元2-212. Pentium的外部引脚Inter Pentium CPU写顺序控制总线地址总线 CLK PRDY R/SHLDA IBT IV IU 模式

16、探针执行跟踪 TDITMS TRST RESET TCK TDO BUSCHKFRCMCSMI NMI IERR FREE IGNNESMIACT BREQHOLD BOFF INIT INTREWBEWB/WTFLUSHKENPWTPCDNA INVAPCHKPCHKPENW/RM/IOADSD/CSCYCLOCKCACHEBRDYAHOLDEADSHITHITMAP时钟 初始化 中断控制缓存高速内部出错浮点错余检测功能冗理模式系统管测试访问期定义总线周总线仲裁总线周期错数据总线偶校验数据奇地址屏蔽偶校验地址奇断点/性能检测A31A3BE7BE0A20MD63D0DP7DP0BT3BT0BP

17、3BP2PM1/BP1PM0/BP02-22基本寄存器系统级寄存器调试和模型专用寄存器浮点寄存器Pentium的内部寄存器,按功能可分为4类:2.3.2 Pentium内部寄存器2-232.3.2 Pentium内部寄存器标志寄存器指令指针寄存器EFLAGSFLAGSEIPIP31 15 031 15 031 16 15 7 0通 用 寄 存 器EAX AH AX ALEBX BH BX BLECX CH CX CLEDX DH DX DLEDI DIESI SIEBP BPESP SP1. 基本寄存器选择器CSSSDSESFSGS15 0 63 0描述符高速缓存器段 寄 存 器 EIP用于保

18、存下一条待预取指令相对于代码基址的偏移量。它的低16位也可单独访问,称之为IP。2-24 标志寄存器位定义2.3.2 Pentium内部寄存器CFEFLAGSFLAGS31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0ACVMRF0NTIOPLOFDFIFTFSFZF0AF0P F0X 对准检查标志X 虚拟86模式标志X 恢复标志X 嵌套标志X 特权级标志S 溢出标志C 方向标志X 中断允许标志X 自陷标志S 符号标志S 零标志S 辅助进位标志S 奇偶标志S 进位标志注:S表

19、示状态标志,X表示系统标志,C表示控制标志X 虚拟中断标志X ID标志X 虚拟中断挂起0 0 0 0 0 0 0 0 0 0VIFVIPID2-25选择器描述符高速缓存器CSSSDSESFSGS15 0 63 0段寄存器 段寄存器Pentium有6个段寄存器:2.3.2 Pentium内部寄存器CS-指明当前的代码段SS-指明当前的堆栈段DSESFS GS决定程序使用存储器区域块指明当前的4个数据段编程者可直接访问的编程者不能访问的 程序中(或系统)装入段选择器的也不再是直接的段基址,而是一个指向某个段描述符的16位的段选择符。2-26实地址方式和虚拟8086方式下相同,段的长度固定为64KB

20、,段选择器就是段寄存器,它保存的是逻辑段基址的高16位,将它的内容左移4位即可得到实际段基址,而不必使用描述符高速缓存器。在保护虚地址方式下,段的长度可以在1字节到4G字节之间变化;为了描述每个段的基址、属性和边界,为每个段定义了一个描述符。操作系统使用的和各任务公用的段描述符放在一起构成全局描述符表GDT;某个任务专用的段描述符放在一起构成局部描述符表LDT。Pentium段的定义与8086有所不同:2.3.2 Pentium内部寄存器段 的 类 型存储段:代码段、数据段和堆栈段.系统段:局部描述符表(LDT)段和任务状态段(TSS).门:调用门、中断门、陷进门和任务门 门是保护模式新增加的

21、。门并不是段,但是,由它可以通向一个程序的入口或一个任务的入口,而程序在存储器中表现为代码段,因此,门与代码段有关,也把它划归到系统段这一类。一、 32位微型计算机接口技术及应用刘乐善华中科技大学出版社2006.12二、三 级 偏 硬 考 试 教 程 江正战东南大学出版社2004.62-27 描述符与描述符表GDTLDT描述符0描述符1描述符0描述符1GDTRLDTR+0+1+2+3+4+5+6+7段边界70位段边界158位段基址70位段基址158位段基址2316位属性段边界4位段基址3124位属性描述符格式2.3.2 Pentium内部寄存器2-28 段的的选择符 为了说明一个段的描述符在哪

22、个表中,表的序号是多少以及特权的高低,为每个段定义了一个16位的选择符,存于段选择器中,其格式为:描述符索引段描述符iLDTGDT0 1INDEX TI RPLb15 b3 b2 b1 b0表指示符描述符i(08911)段描述符0描述符000 特权级001 特权级110 特权级211 特权级3请求特权级2.3.2 Pentium内部寄存器2-29 将一个选择符装入一个段选择器时,处理器将自动从GDT或LDT中找到其对应的描述符装入相应描述符高速缓存器中。2.3.2 Pentium内部寄存器描述符64基址物理存储器LDTDS数据段0040H界限15 3 2描述符高速缓存器DS选择符63 0属性装

23、入DS段描述符TI=1指示LDT13位索引指向LDT的第64个段描述符1310 以后,每当访问存储器时,与所用段相关的段描述符高速缓冲器就自动参与该次存储器访问操作。转换关系: 线性地址 = 段描述符高速缓存器中段基址 + 偏移地址 图2.11和2.152-30 Pentium微处理器中包含一组系统级寄存器:即5个控制寄存器CR0CR4和4个系统地址寄存器。这些寄存器只能由在特权级 0上运行的程序(一般是操作系统)访问。 2.2.2 Pentium内部寄存器 控制寄存器 Pentium在80486控制寄存器CR0CR3的基础上新增了一个控制寄存器CR4,这些寄存器用来存放全局特性的机器状态和实

24、现对80X86/ Pentium微处理器的多种功能的控制与选择。 2.系统级寄存器2-31数字运算错页Fault线性地址保 留31 30 29 7 6 5 4 3 2 1 0页管理 使能Cache不使能不通写对准标志写保护保护允许监视FPU仿真FPU任务转换FPU类型PGCDNW保留AMWP保留NEETTSEMMPPEVMEPVITSDPCDMCE0PWTPSEDE0 0 0 0 页目录基址2.3.2 Pentium内部寄存器CR0CR4CR3CR2CR1 控制寄存器格式:2-32 系统地址寄存器2.3.2 Pentium的内部寄存器系统地址寄存器 其中GDTR和LDTR分别用来存放GDT和L

25、DT的32位线性基地址等内容;IDTR用来存放中断描述符表的基址和界限;TR用来存放任务状态段(TSS)的基址、界限和其他属性。 只在保护方式下使用,所以又叫保护方式寄存器。用于把在保护方式下常用的数据基地址、界限和其他属性保存起来,以确保其快速性。32位基地址16位界限GDTRIDTR16位选择符32位基地址16位界限16位其他属性LDTRTR2-33 Pentium处理器中提供了一组调试寄存器和一组模型专用寄存器,用于排除故障和用于执行跟踪、性能监测、测试及机器检查错误。 2.3.2 Pentium的内部寄存器31 0 线性断点地址0线性断点地址1线性断点地址2线性断点地址3DR6的别名D

26、R6的别名断点状态断点控制调试寄存器DR0DR1DR2DR3DR4DR5DR6DR7 (1) 调试寄存器 调试寄存器如图所示,这是一组32位的寄存器,是程序员可访问的,提供片上支持调试。3.调试和模型专用寄存器2-34 Pentium处理器取消了80386/80486中的测试寄存器TR,其功能由一组“模型专用寄存器” MSR(Model Special Register)来实现,这一组MSR用于执行跟踪、性能监测、测试和机器检查错误。 Pentium处理器采用两条指令RDMSR(读MSR)和WRMSR(写MSR)来访问这些寄存器,ECX中的值(8位值)确定将访问该组寄存器中哪一个MSR。 2.

27、3.2 Pentium的内部寄存器(2) 模型专用寄存器2-352.3.3 Pentium的四种工作方式CPU复位RSM复位或RSMVM=0VM=1复位复位或PE=0使CR0的PE=1系统管理方式保护方式虚拟8086方式RSMSMI实地址方式SMISMI实地址方式实地址方式:工作原理与8086基本相同,主要区别是借助操作数长度前缀能处理32位数据,运行速度也更高,且可使用4个数据段。保护方式保护方式:CPU可访问的物理存储空间为232= 4GB;程序可用的虚拟地址空间为246=64TB。段长度在启动页功能时是4GB,不启动页功能时是1MB。可支持多用户和单用户的多任务操作,并对各任务提供了多方

28、面的保护机制。虚拟8086方式虚拟8086方式:既有保护功能又能执行8086代码的工作方式,是保护方式的一种子方式。CPU的工作原理与保护虚地址方式下相同,但程序指定的逻辑地址解释与8086相同。系统管理方式系统管理方式:使设计者实现高级管理功能,如对电源的管理以及为操作系统和正在运行的程序提供安全性。2-362.4 Pentium微处理器指令系统2.4.1 基本数据类型2.4.2 操作数寻址方式2.4.3 Pentium指令系统概貌2.4.4 数据传送类指令2.4.5 算术运算类指令2.4.6 逻辑运算和移位指令2.4.7 串操作类指令2.4.8 控制转移类指令2-37 Pentium在其内

29、部定点处理单元CPU和浮点处理单元FPU的支持下,共可处理7类数据:1. 无符号二进制数2. 带符号的二进制定点整数3. 浮点数4. BCD码数5. 串数据6. ASCII码数据7. 指针数据2.4.1 基本数据类型2-382.4.1 基本数据类型 这类数不带任何符号信息,只含有量值域,仅CPU支持。分为三类: 字节: 字: 双字: 任何逻辑地址上的8位相邻位串。任何字节地址开始的2个相邻字节。低字节地址为该字地址。任何字节地址开始的2个相邻字,即4个相邻字节。最小字节地址为双字的地址。1.无符号二进制数(序数)2-39 这类数均以补码表示,有8位数(字节)、16位数(字)、32位数(双字)、

30、64位数(4字)四种。CPU支持前3种,FPU支持后3种。2.4.1 基本数据类型2.带符号的二进制定点整数(整数)2-402.4.1 基本数据类型 这类数由FPU支持,有单精度、双精度和扩展精度三种形式: 单精度数31 30 23 22 0符号位阶 码有 效 数1. 双精度数符号位阶 码有 效 数1.63 62 52 51 0 扩展精度数符号位阶 码1.有 效 数79 78 64 63 03.浮点数(实数)2-41 BCD码数有压缩BCD码数和非压缩BCD码数两种。 CPU两种数都支持;FPU只支持压缩BCD码数,且最大长度为80位,最多可处理20位BCD码数。2.4.1 基本数据类型5.串

31、数据 这类数据仅CPU支持。包括: 位串: 字节/字/双字串:是从任何字节的任何位开始的相邻位的序列,最长可达232-1位。是字节/字/双字的相邻序列,最长可达232-1字节。4.BCD码数2-422.4.1 基本数据类型包括ASCII码字符串和ASCII码数(0F)两种。7.指针数据包括近指针和远指针两种: 近指针即32位指针,是一个32位的段内偏移量,段内寻址用。 远指针即48位指针,由16位选择符和32位偏移量组成,用于跨段访问。6.ASCII码数据2-43关于数据类型的两点说明: (1)在上述各类型数据中,基本的数据类型仍是字节、字和双字。一般应尽可能将字操作对准于偶地址,将双字操作对

32、准于4的整数倍地址。但也允许不对准操作,以便在数据结构的处理上和存储器的有效利用上给系统设计人员和用户提供最大的灵活性。不过,对准和不对准获得的数据传递速度不一样:对准的字和双字可一次传递完,而未对准的字和双字需几次才能传递完。 (2)对于字和双字数据,80X86是采用低端低地址方式来存储的。即字数据被存储在两个相邻的字节单元之中,低位字节在低地址单元,高位字节在高地址单元;双字数据存储在四个连续字节单元中,最低位字节在最低地址单元,最高字节在最高地址单元。而字或双字数据的地址是指最低位字节所在的单元地址。2.4.1 基本数据类型2-442.4.2 操作数寻址方式1. 寻址方式和有效地址概念2

33、. 11种寻址方式3. 存储器寻址时的段约定4. 应用举例2-452.4.2 寻址方式 寻址方式就是寻找指令中操作数地址的方式。操作数所在地址有三种可能: 直接包含在指令中,即指令的操作数部分就是操作 数本身。这种操作数叫立即数,对应的指令寻址方 式称为立即数寻址。包含在CPU 的某个内部寄存器中。这时指令中的操 作数部分是CPU的一个寄存器,这种指令寻址方式称 为寄存器寻址。在内存储器中。这时指令的操作数部分包含着该操 作数所在的内存地址。这种指令寻址方式称为存储 器寻址。1.寻址方式和有效地址概念 寻址方式2-46 在Pentium系列MPU中,内存实际地址(PA)由段基地址和段内偏移地址

34、两部分组成。 为了适应处理各种数据结构的需要,段内偏移地址可由以下几部分组合而成: 基址寄存器内容 变址寄存器内容 比例因子 位移量 这四个基本部分称为偏移地址四元素,一般又将由这四种元素组合形成的偏移地址称为有效地址EA。EA=基址+(变址比例因子)+位移量 有效地址EA2.4.2 寻址方式2-47有效地址元素16位寻址32位寻址基址寄存器 BX,BP 任何32位通用寄存器变址寄存器 SI,DI 除ESP外的任何32位通用寄存器比例因子 无(或1) 1,2,4,8位移量 0,8,16位 0,8,32位2.4.2 寻址方式16位和32位寻址时的四元素定义2-48 保护方式下的寻址过程(地址转换

35、过程)2.4.2 寻址方式有效地址计算变址位移基址比例因子+32位有效地址31 0BE7BE0A31A332 位32 位13位描述符变址段寄存器选择符TIRPL15 3 2 1 0分段部件线性地址物理存储器分页部件(可选)物理地址逻辑地址(虚拟)(CS,DS,ES,SS, FS,GS)不分页2-492.4.2 寻址方式 偏移地址四元素可优化组合出9种存储器寻址方式,加上立即数寻址和寄存器寻址,Pentium共有11种寻址方式:(1) 立即数寻址(2) 寄存器寻址(3) 直接寻址(4) 寄存器间接寻址(5) 基址寻址(6) 变址寻址(7) 比例变址寻址(8) 基址加变址寻址(9) 基址加比例变址

36、寻址(10)带位移的基址加变址寻址(11)带位移的基址加比例变址寻址2. 11种寻址方式2-502.4.2 寻址方式 在这种寻址方式下,操作数作为立即数直接存在指令中,可为8位、16位或32位。例:MOV AX,4567HMOV BL,78HMOV ECX,12345678H 以第3条指令为例,给出了立即数寻址方式的执行过程的动画演示。(1)立即数寻址2-512.4.2 寻址方式 在这种方式下,操作数包含在指令规定的8位、16位或32位寄存器中。例:MOV EAX,EDXINC CLMOV DS,AX 这种寻址方式指令编码短,无需从存储器取操作数,故执行速度快。(2)寄存器寻址(寄存器直接寻址

37、)2-522.4.2 寻址方式 在这种方式下,指令中的操作数部分直接给出操作数有效地址EA,它和操作码一起放在存储器代码段中,可以是16位或32位整数。但操作数一般在数据段DS中。例: MOV AX,DS:3000H 将DS段中3000H和3OO1H单元的内容送到AX中。假设DS=5000H,则此指令是将物理地址为53000H单元的内容送到AL寄存器,将53001H单元的内容送到AH寄存器,详情请看直接寻址方式的执行过程的动画演示。(3)直接寻址(存储器直接寻址)2-532.4.2 寻址方式 实际中对于直接寻址,如操作数在DS段中,则可直接写成:MOV AX,3000H 如操作数在DS之外的其

38、他段(CS,SS,ES,FS,GS)中,指令中则必须用段寄存器名前缀(称为段超越前缀)予以指明。例如:MOV AX,FS:3000H 直接寻址主要用于单个操作数的相对寻址场合(如简单的标量操作数寻址和静态分配数组的起始地址寻址等)。2-542.4.2 寻址方式 在这种方式下,操作数放在存储器中,但其有效地址EA放在寄存器中,即: EA=寄存器 寄存器的使用规定在16位寻址和32位寻址时不一样。(4)寄存器间接寻址2-552.4.2 寻址方式 16位寻址时,偏移地址放在SI、DI、BP或BX中。这时又有两种段默认情况:若以SI、DI、BX间接寻址,则默认操作数在DS段中。 例如: MOV AX,

39、SI ;默认DS为段基址若以BP间接寻址,则默认操作数在SS段中。 例如: MOV AX,BP ;默认SS为段基址 动画演示 如果操作数不在上述规定的默认段,而是在其他段,则必须在指令中相应的操作数前加上段超越前缀。例如:MOV AX,ES:SIMOV AX,DS:BP2-562.4.2 寻址方式 32位寻址时,8个32位通用寄存器均可作寄存器间接寻址。 例如:MOV EBX,EAX ;默认DS为段基址,传送双字给EBXMOV DX,EBX ;默认DS为段基址,传送字给DXMOV CH,EAX ;默认DS为段基址,传送字节给CH 除ESP、EBP默认段寄存器为SS外,其余6个通用寄存器均默认段

40、寄存器为DS。如操作数在默认段之外,指令中必须加段超越前缀。 寄存器间接寻址的应用场合与直接寻址的应用场合相似,当更灵活。2-572.4.2 寻址方式 在这种方式下, EA=基址寄存器+位移量。 其中位移量一定要为常数,且跟随在操作码之后,与操作码一起存放在代码段中。16位寻址情况下,BX和BP作为基址寄存器。在缺省段超越前缀时,BX以DS作为默认段寄存器,BP以SS作为默认段寄存器。位移量可为8位或16位;32位寻址情况下,8个32位通用寄存器均可作基址寄存器,其中ESP、EBP以SS为默认段寄存器,其余6个通用寄存器均以DS为默认段寄存器。位移量为8位或32位。例如: 动画演示MOV EA

41、X,BX+24 ;也可写成MOV EAX,24BXMOV ECX,EBP+50 ;也可写成MOV ECX,50EBPMOV DX,EAX+1500H;也可写成MOV DX,1500HEAX(5)基址寻址2-582.4.2 寻址方式 在这种方式下, EA=变址寄存器+位移量 指令书写格式和寻址执行过程与基址寻址相同,区别仅在于将基址寄存器改成变址寄存器。(6)变址寻址2-592.4.2 寻址方式 16位寻址时,仅SI、DI可作变址寄存器,且默认DS作为段基址寄存器。如:MOV AX,COUNTSI 32位寻址时,除ESP外的任何通用寄存器均可作变址寄存器,且默认EBP以SS作段基址寄存器,其余均

42、以DS作段基址寄存器。 如:MOV EAX,5EBPMOV ECX,DATAEAX 基址、变址寻址适于对一维数组的数组元素进行检索操作。位移量表示数组起始地址偏移量;基址/变址表示数组元素的下标,可变。2-602.4.2 寻址方式在这种方式下:EA=变址寄存器比例因子+位移量这种寻址方式只适于32位寻址一种情况。例如:MOV EAX,TABLEESI*4 ;TABLE是位移量,4是比例因子 比例变址寻址和基址/变址寻址的作用相似,也适用于对一维数组元素的检索。但当数组元素大小为2/4/8字节时,用它更方便、更高效。比例变址寻址方式的执行过程的动画演示。(7)比例变址寻址2-612.4.2 寻址

43、方式在这种寻址方式下,EA=基址寄存器+变址寄存器例如:MOV AX,BX+SI ;或写成MOV AX,BXSI 动画演示 它有16位寻址和32位寻址两种情况,每种情况下基址、变址寄存器的使用规定和段寄存器的默认规定与前面所述相同,但一种寻址方式中既有基址寄存器又有变址寄存器,而两个寄存器默认的段寄存器又不相同时,一般规定由基址寄存器来决定默认哪一个段寄存器作段基址指针。 基址加变址寻址主要用于二维数组元素的检索和二重循环等。(8)基址加变址寻址2-622.4.2 寻址方式在这种方式下,EA=变址寄存器比例因子+基址寄存器它只有32位寻址一种情况。格式举例:MOV ECX,EDX*8EAX ;

44、或MOV ECX,EDX*8+EAXMOV AX,EBX*4ESI ;或MOV AX,EBX*4+ESI 这种方式主要用于数组元素大小为2/4/8字节时的二维数组检索操作等场合。(9)基址加比例变址寻址2-632.4.2 寻址方式在这种方式下:EA=变址寄存器+基址寄存器+位移量 这种方式也分16位寻址和32位寻址两种情况。变址、基址寄存器的使用约定和对段寄存器的默认约定与前面所述相同。格式举例:MOV AX,BX+DI+MASK 或 MOVAX,MASKBXDIADD EDX,ESIEBP+0FFFF000H 或ADD EDX,0FFFF000HESIEBP 以第1条指令为例,给出了带位移的

45、基址加变址寻址方式的执行过程的动画演示。 这种寻址方式也是主要用于二维数组操作,位移量即为数组起始地址。(10)带位移的基址加变址寻址2-642.4.2 寻址方式这种方式将偏移地址四元素都用上了,即:EA=变址寄存器比例因子+基址寄存器+位移量 它只有32位寻址一种情况。各种约定和默认情况同前所述。格式举例:INC EDI*8ECX+40 ;或INC EDI*8+ECX+40 当二维数组的数组元素大小为2/4/8字节,且数组起始地址不为0时,适于用这种寻址方式进行数组检索操作。(11)带位移的基址加比例变址寻址2-652.4.2 寻址方式3.存储器寻址时的段约定访存操作类型 默认段寄存器 允许

46、超越的段寄存器 偏移地址寄存器堆栈操作 SS 无 (E)SP取指令代码 CS 无 (E)IP源串数据访问 DS CS、SS、ES、FS、GS (E)SI目的串数据访问 ES 无 (E)DI通用数据访问 DS CS、SS、ES、FS、GS 偏移地址SSCS、DS、ES、FS、GS偏移地址以(E)BP、(E)SP间接寻址的指令2-664.应用举例 CPUBX 0100HSI 0002HDS 3000H30100H 12H30101H 34H30102H 56H30103H 78H31200H 2AH31201H 4CH31202H B7H31203H 65HM 例2.1 已知80486工作在实地址

47、方式下,其中一些寄存器的内容和一些存储单元的内容如图所示,试指出下列各条指令执行后,AX中的内容。 MOV AX,2010H MOV AX,BX MOV AX,1200H MOV AX,BX MOV AX,1100HBX MOV AX,BXSI MOV AX,1100HBX+SI LEA AX,SI2.4.2 寻址方式2-672.4.2 寻址方式 例2.2 假定80486工作在实模式下,已知:(DS)=1000H,(SS)=2000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,变量TABLE的偏移地址为0100H。请指出下列指令的源操作数字段是什么寻址方式?它的有效地址

48、(EA)和物理地址(PA)分别是多少? MOV AX,1234H MOV AX,TABLE MOV AX,BX+100H MOV AX,TABLEBPSI2-68 Pentium的指令系统是在80X86系列指令系统的基础上逐步发展而形成的,在代码级具有向上兼容性。它增加了指令的种类,增强了一些指令的功能,提供了32位寻址方式和32位操作方式,并且包含全部浮点运算指令。 Pentium指令的操作数可以是03个,根据寻址方式不同,可直接包含在指令中,也可存于寄存器或存储器中。每条指令的长度因指令而异,平均指令长度为3.2字节。指令的操作数宽度可以是8位、16位、32位,寻址宽度可以是16位或32位

49、。 Pentium指令系统的突出特点是:功能强、灵活性高,给编译程序和汇编语言程序的设计人提供了很宽的选择余地。2.4.3 Pentium指令系统概貌 2-691. 指令格式2.4.3 Pentium指令系统概貌字段1字段2字段3mod r/m字段4s-i-b字段5displ字段6data1字节1字节寄存器/存储器寻址方式说明符字段 主寻址字节,规定操作数的寻址方式,包括操作数的存放位置和存储器中操作数EA的计算方法等比例- 变址- 基址字节,为第二寻址字节位移量字段,属存储器地址的一部分。位移量足够小时,通常采用带符号的8位整数,CPU自动将它扩展到16位或32位立即数字段8位立即数与16/

50、32位操作数一起使用时,CPU自动将其扩展至符号相同的16/32位数。同理也可将16位立即数扩展至32位14字节12字节前缀Prefix操作码OP code0,1,2,4字节0,1,2,4字节规定指令的操作性质,包括操作数类型、操作数传送方向、寄存器编码或符号扩展等用于修改指令操作的某些属性,有5类前缀:段超越前缀操作数宽度 前缀地址宽度前 缀重复前缀总线锁定前 缀2-70Pentium指令系统分为:整数指令-最常用部分浮点数指令操作系统型指令2. 指令分类2.4.3 Pentium指令系统概貌2-71数据传送是计算机中最基本、最常用、最重要的一类操作。如:这类指令寻址方式最丰富,除POPF外

51、,均不影响标志寄存器的标志位。在实际程序中,它的使用频率最高。 各种初始化操作 取操作数 保存结果2.4.4 数据传送类指令2-72通用数据传送指令。如数据传送指令(MOV)、装入有效地址指令(LEA)、段装入指令、交换类指令(XCHG和BSWAP)、查表转换指令(XLAT)等。堆栈指令。如PUSH类/POP类指令等。数据类型变换指令。如数据宽度变换指令,带符号数符号位扩展/无符号数位扩展指令等。I/O指令。如IN类/OUT类指令等。标志寄存器传送指令2.4.4 数据传送类指令 数据传送指令主要包括:2-731. 传送指令MOV指令操作:(源操作数)目的操作数 指令格式:MOV 目的操作数,源

52、操作数寻址规定: REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMMIMM8/16/32位立即数REG8/16/32位通用寄存器MEM8/16/32位存储器SREG段寄存器2.4.4 数据传送类指令 2-74立即数通用寄存器(EAX、EBX、ECX、EDX、 EBP、ESP、ESI、EDI)CS存储器段寄存器(SS、DS、ES、FS、GS)MOV指令允许的传送关系2.3.4 数据传送类指令 2-75 MOV指令使用说明:源操作数和目的操作数的类型必须一致。目的操作数不能为立即数。CS和(E)IP均不能用作指令的目的寄存器。段寄存器

53、间不能直接传送,也不能直接将立即数送给段寄存器。源操作数为立即数,而目的操作数类型不确定时,要给目的操作数加类型说明。源操作数和目的操作数不能同为存储器操作数。2.4.4 数据传送类指令 目的操作数, 源操作数 REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM2-76 MOV DS,100 MOV 1000H,23H错。源、目的操作数不能同为存储器寻址。 MOV 1000H,2000H错。立即数不能直接赋给段寄存器。错。目的操作数长度不确定。 MOV DATA,1133H MOV CS,AX 依赖于DATA的定义错。不能用传送指

54、令改变代码段寄存器。 MOV AX,0100H+BX+BP错。地址寄存器不能同为基址寄存器。 例2.3 识别下列指令的正确性,对错误的指令,说明错误的原因。MOV AX,100MOV DS,AXMOV WORD PTR 1000H,23HMOV AX,2000HMOV 1000H,AX2.3.4 数据传送类指令 2-772. 交换指令操作: (目的操作数) (源操作数)格式:XCHG 目的操作数,源操作数REG/MEM, REG REG, MEM说明: 基本用法同MOV指令; 当源或目的操作数为MEM操作数时,会自动 激活LOCK信号,该特性常用于多机、多任务 或多用户系统中的临界段(共享资源

55、)访问。2.4.4 数据传送类指令 2-78 例2.4 临界段访问(测试与置位操作)TEST_SET:MOV AL,0FFH XCHG AL,SEMAPHORE ;读信号灯并置位 AND AL,AL ;产生条件码 JNZ TEST_SET ;忙时等待 (临界段程序) MOV AL,0 MOV SEMAPHORE,AL ;清信号灯2.4.4 数据传送类指令 2-79说明: XLAT是一条隐含寻址的指令。隐含两个操作数:DS:(E)BX存放表基址,AL存放查表参数。使用前要给隐含操作数赋初值。3. 查表指令 格式: XLAT 操作: (EBX)+(AL)AL (BX)+(AL)AL2.4.4 数据

56、传送类指令 2-80 例2.5 内存中自TABLE开始的16个单元连续存放着自然数0到15的平方值(构成一个平方表),任给一整数M在XX单元中(该数为0M15),查表求M的平方值,并将结果存入YY单元中。解:LEA BX,TABLEMOV AL,XX XLAT MOV YY,ALTABLE 0+1 1+2 4+3 9+15 225XX 52.4.4 数据传送类指令 2-814. 堆栈指令PUSH/POP格式:PUSH 源操作数REG16/MEM16/IMM16REG32/MEM32/IMM32操作: (E)SP)-2/4(E)SP (源操作数)(SS:(E)SP)(1) 压栈指令2.4.4 数

57、据传送类指令 2-82格式:POP 目的操作数 MEM16/MEM32/REG16/REG32操作:(SS:(E)SP)目的操作数 (E)SP)+ 2/4(E)SP(2) 弹栈指令2.4.4 数据传送类指令 2-83堆栈指令的操作数只能为字或双字。PUSH和POP要成对出现,以保持堆栈平衡堆栈指令也隐含了一个目的/源操作数堆栈。压栈顺序是先压高字节后压低字节,弹栈则是先弹低字节后弹高字节。(3)堆栈指令使用说明:2.4.4 数据传送类指令 2-84 例2.6 用堆栈操作指令将BX和CX中的两个16位数(其中BX是高16位)组成32位数传送到EAX寄存器中。 PUSH BX ;先压高16位PUS

58、H CX ;后压低16位 POP EAX解:2.4.4 数据传送类指令 2-85说明:I/O端口有两种寻址方式 直接寻址,寻址范围为0255; 间接寻址,寻址范围为0216-1。(1) 输入指令 格式:IN 累加器, 端口 AL/AX/EAX,IMM8 AL/AX/EAX,DX 操作: AL/AX/EAX(I/O端口)直接寻址: 指令给出的立即数是I/O端口地址间接寻址:DX寄存器给出的是I/O端口地址5. I/O指令2.4.4 数据传送类指令 2-86(2) 输出指令格式:OUT 端口, 累加器 IMM8, AL/AX/EAX DX , AL/AX/EAX操作:(AL/AX/EAX)I/O端

59、口2.4.4 数据传送类指令 2-87 T+1 O+2 M+3 .+4 .+5 20+6 R+7 O+8 S+9 E+10 30+11 K+12 A+13 T+14 E+15 .+16 25NAMESDS 例2.7 设程序在数据段中定义的数组如下: NAMES DB TOM. DB 20 DB ROSE DB 30 DB KATE. DB 25 请指出下列指令是否正确,如正确,A累加器中的结果是多少?6. 传送指令应用举例2.4.4 数据传送类指令 2-881. MOV BX, OFFSET NAMES MOV AL,BX+5(AL)=NAMES+5=202. MOV AX, NAMES 错,

60、源与目的操作数类型不一致3. MOV AX, WORD PTR NAMES+1 (AX)=NAMES+1=MO=4D4FH4. MOV BX,6 MOV SI,5 MOV AX,NAMESBXSI前两条指令正确,第三条错,源与目的操作数类型不一致 T+1 O+2 M+3 .+4 .+5 20+6 R+7 O+8 S+9 E+10 30+11 K+12 A+13 T+14 E+15 .+16 25NAMESDS2.4.4 数据传送类指令 2-895. MOV BX, 6*2 MOV SI,5 MOV AX,OFFSET NAMESBXSI INC AX6. MOV BX, 6 MOV SI,5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论