2.0--第2章微处理器与指令系统.ppt

上传人:本田雅阁 文档编号:3405632 上传时间:2019-08-22 格式:PPT 页数:138 大小:1.47MB
返回 下载 相关 举报
2.0--第2章微处理器与指令系统.ppt_第1页
第1页 / 共138页
2.0--第2章微处理器与指令系统.ppt_第2页
第2页 / 共138页
2.0--第2章微处理器与指令系统.ppt_第3页
第3页 / 共138页
2.0--第2章微处理器与指令系统.ppt_第4页
第4页 / 共138页
2.0--第2章微处理器与指令系统.ppt_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《2.0--第2章微处理器与指令系统.ppt》由会员分享,可在线阅读,更多相关《2.0--第2章微处理器与指令系统.ppt(138页珍藏版)》请在三一文库上搜索。

1、2-1,第二章 微处理器和指令系统,2.1 Intel系列微处理器概述 2.2 8086/8088微处理器 2.3 Pentium微处理器 2.4 Pentium微处理器指令系统,2-2,2.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-3,2.1.1 Intel 8086/8088 微处理器

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

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

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

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

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

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

8、构特点如下:,2-12,2.2 Intel8086/8088微处理器,内部结构 指令流水线 存储器分段,8086是全16位微处理器,8088是准16位微处理器。二者除了外数据总线位数及与此相关的部分逻辑稍有差别外,内部结构和基本性能相同,指令系统完全兼容。,2-13,1.内部结构,2.2 Intel 8086/8088微处理器,段寄存器,2-14,这种流水线操作并没有减少每条指令的执行步骤与时间,但由于各指令的不同步骤之间并行执行,从而极大地提高了指令流(程序)的执行速度。,流水线操作的优点:指令队列的存在使EU和BIU并行工作,取指令和分析、执行指令操作可重叠进行,形成了两级指令流水线结构,

9、减少了CPU等待时间,提高了CPU的利用率,加快了整机运行速度,降低了对存储器存取速度的要求。,2.指令流水线,2.2 Intel 8086/8088微处理器,2-15,将1MB的物理存储空间分成若干个逻辑段,每段大小为64KB。,段的起始单元地址叫段基址,存放在段寄存器中。通过4个段寄存器,CPU每次可同时对4个段进行寻址。,3.存储器分段,2.2 Intel 8086/8088微处理器,2-16,分段方式不唯一,各段之间可以连续、分离、部分重叠或完全重叠,这主要取决于对各个段寄存器的预置内容。,2.2 Intel 8086/8088微处理器, 存储器分段结构示例,2-17,物理地址是1MB

10、存储空间中的某一单元地址,用20位地址码表示,CPU访问存储器时,地址总线上送出的就是物理地址。 逻辑地址在编程时采用,由段基址和偏移地址组成,两者均为16位。, 物理地址和逻辑地址,2.2 Intel 8086/8088微处理器,2-18,逻辑地址与20位物理地址的变换关系: 物理地址=段基址16+偏移地址, 逻辑地址与物理地址的变换,2.2 Intel 8086/8088微处理器,2-19,2.3 Pentium微处理器,2.3.1 内部结构与外部引脚 2.3.2 内部寄存器 2.3.3 Pentium的四种工作方式,2-20,Pentium在结构上由如下功能部件组成: 整数执行单元 浮点

11、单元 指令Cache和数据Cache 指令预取单元 指令译码单元 地址转换与管理单元 总线接口单元 控制单元 这些功能部件除地址转换与管理单元与80386/80486保持兼容外,其他都进行了重新设计。,2.3.1 内部结构和外部引脚,2-21,1. 内部结构,2.2.1 内部结构和外部引脚,1)总线接口单元 主要用于管理访问外部存储器和 I/O端口必须的地址、数据和控制总线,完成预取指令、读/写数据等总线操作。,3)预取缓冲单元 预取缓冲单元在总线接口单元空闲时,负责提前去内存或指令Cache预取指令。其指令预取缓冲器在前一条指令执行结束之前可以预取多达94个字节的指令代码。,4)指令译码单元

12、 将预取的指令译成Pentium可以执行的控制信号并送控制单元。对绝大多数指令来说,Pentium微处理器可以做到每个时钟周期以并行方式完成两条指令的译码操作。,5)控制单元 负责解释来自指令译码单元的指令字和控制ROM的微代码。控制部件的输出直接控制两条指令流水线和浮点单元。,6)地址转换与存储管理单元 Pentium的地址转换与存储管理单元与80386/80486保持完全兼容,由分段和分页部件组成。Pentium除继续支持4KB大小的页面外,还允许使用高达4MB的页面,从而减少了页面切换的频率,并加快了某些应用程序的执行。,8) 浮点运算单元,2-22,2. Pentium的外部引脚,2-

13、23,基本寄存器 系统级寄存器 调试和模型专用寄存器 浮点寄存器,Pentium的内部寄存器,按功能可分为4类:,2.3.2 Pentium内部寄存器,2-24,2.3.2 Pentium内部寄存器,1. 基本寄存器,EIP用于保存下一条待预取指令相对于代码基址的偏移量。它的低16位也可单独访问,称之为IP。,2-25, 标志寄存器位定义,2.3.2 Pentium内部寄存器,2-26, 段寄存器,Pentium有6个段寄存器:,2.3.2 Pentium内部寄存器,编程者可直接访问的,编程者不能访问的,程序中(或系统)装入段选择器的也不再是直接的段基址,而是一个指向某个段描述符的16位的段选

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

15、DT)段和任务状态段(TSS). 门:调用门、中断门、陷进门和任务门 门是保护模式新增加的。门并不是段,但是,由它可以通向一个程序的入口或一个任务的入口,而程序在存储器中表现为代码段,因此,门与代码段有关,也把它划归到系统段这一类。,一、 32位微型计算机接口技术及应用 刘乐善 华中科技大学出版社 2006.12 二、三 级 偏 硬 考 试 教 程 江正战 东南大学出版社 2004.6,2-28, 描述符与描述符表,2.3.2 Pentium内部寄存器,2-29, 段的的选择符,为了说明一个段的描述符在哪个表中,表的序号是多少以及特权的高低,为每个段定义了一个16位的选择符,存于段选择器中,其

16、格式为:,2.3.2 Pentium内部寄存器,2-30,将一个选择符装入一个段选择器时,处理器将自动从GDT或LDT中找到其对应的描述符装入相应描述符高速缓存器中。,2.3.2 Pentium内部寄存器,以后,每当访问存储器时,与所用段相关的段描述符高速缓冲器就自动参与该次存储器访问操作。转换关系: 线性地址 = 段描述符高速缓存器中段基址 + 偏移地址,图2.11和2.15,2-31,Pentium微处理器中包含一组系统级寄存器:即5个控制寄存器CR0CR4和4个系统地址寄存器。这些寄存器只能由在特权级 0上运行的程序(一般是操作系统)访问。,2.2.2 Pentium内部寄存器, 控制寄

17、存器,Pentium在80486控制寄存器CR0CR3的基础上新增了一个控制寄存器CR4,这些寄存器用来存放全局特性的机器状态和实现对80X86/ Pentium微处理器的多种功能的控制与选择。,2.系统级寄存器,2-32,2.3.2 Pentium内部寄存器,CR0,CR4,CR3,CR2,CR1, 控制寄存器格式:,2-33, 系统地址寄存器,2.3.2 Pentium的内部寄存器,系统地址寄存器,其中GDTR和LDTR分别用来存放GDT和LDT的32位线性基地址等内容;IDTR用来存放中断描述符表的基址和界限;TR用来存放任务状态段(TSS)的基址、界限和其他属性。,只在保护方式下使用,

18、所以又叫保护方式寄存器。用于把在保护方式下常用的数据基地址、界限和其他属性保存起来,以确保其快速性。,2-34,Pentium处理器中提供了一组调试寄存器和一组模型专用寄存器,用于排除故障和用于执行跟踪、性能监测、测试及机器检查错误。,2.3.2 Pentium的内部寄存器,3.调试和模型专用寄存器,2-35,Pentium处理器取消了80386/80486中的测试寄存器TR,其功能由一组“模型专用寄存器” MSR(Model Special Register)来实现,这一组MSR用于执行跟踪、性能监测、测试和机器检查错误。 Pentium处理器采用两条指令RDMSR(读MSR)和WRMSR(

19、写MSR)来访问这些寄存器,ECX中的值(8位值)确定将访问该组寄存器中哪一个MSR。,2.3.2 Pentium的内部寄存器,(2) 模型专用寄存器,2-36,2.3.3 Pentium的四种工作方式,2-37,2.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-38,Pentium在其内部定点处理单元CPU和浮点处理单元FPU的支持下,共可处理7类数据:,1. 无符

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

21、持后3种。,2.4.1 基本数据类型,2.带符号的二进制定点整数(整数),2-41,2.4.1 基本数据类型,这类数由FPU支持,有单精度、双精度和扩展精度三种形式:, 单精度数, 双精度数, 扩展精度数,3.浮点数(实数),2-42,BCD码数有压缩BCD码数和非压缩BCD码数两种。 CPU两种数都支持;FPU只支持压缩BCD码数,且最大长度为80位,最多可处理20位BCD码数。,2.4.1 基本数据类型,5.串数据,这类数据仅CPU支持。包括: 位串: 字节/字/双字串:,是从任何字节的任何位开始的相邻位的序列,最长可达232-1位。,是字节/字/双字的相邻序列,最长可达232-1字节。,

22、4.BCD码数,2-43,2.4.1 基本数据类型,包括ASCII码字符串和ASCII码数(0F)两种。,7.指针数据,包括近指针和远指针两种:,近指针即32位指针,是一个32位的段内偏移量,段内寻址用。 远指针即48位指针,由16位选择符和32位偏移量组成,用于跨段访问。,6.ASCII码数据,2-44,关于数据类型的两点说明:,(1)在上述各类型数据中,基本的数据类型仍是字节、字和双字。一般应尽可能将字操作对准于偶地址,将双字操作对准于4的整数倍地址。但也允许不对准操作,以便在数据结构的处理上和存储器的有效利用上给系统设计人员和用户提供最大的灵活性。不过,对准和不对准获得的数据传递速度不一

23、样:对准的字和双字可一次传递完,而未对准的字和双字需几次才能传递完。 (2)对于字和双字数据,80X86是采用低端低地址方式来存储的。即字数据被存储在两个相邻的字节单元之中,低位字节在低地址单元,高位字节在高地址单元;双字数据存储在四个连续字节单元中,最低位字节在最低地址单元,最高字节在最高地址单元。而字或双字数据的地址是指最低位字节所在的单元地址。,2.4.1 基本数据类型,2-45,2.4.2 操作数寻址方式,1. 寻址方式和有效地址概念 2. 11种寻址方式 3. 存储器寻址时的段约定 4. 应用举例,2-46,2.4.2 寻址方式,寻址方式就是寻找指令中操作数地址的方式。操作数所在地址

24、有三种可能:,直接包含在指令中,即指令的操作数部分就是操作 数本身。这种操作数叫立即数,对应的指令寻址方 式称为立即数寻址。,包含在CPU 的某个内部寄存器中。这时指令中的操 作数部分是CPU的一个寄存器,这种指令寻址方式称 为寄存器寻址。,在内存储器中。这时指令的操作数部分包含着该操 作数所在的内存地址。这种指令寻址方式称为存储 器寻址。,1.寻址方式和有效地址概念, 寻址方式,2-47,在Pentium系列MPU中,内存实际地址(PA)由段基地址和段内偏移地址两部分组成。 为了适应处理各种数据结构的需要,段内偏移地址可由以下几部分组合而成:,基址寄存器内容 变址寄存器内容 比例因子 位移量

25、,这四个基本部分称为偏移地址四元素,一般又将由这四种元素组合形成的偏移地址称为有效地址EA。,EA=基址+(变址比例因子)+位移量, 有效地址EA,2.4.2 寻址方式,2-48,2.4.2 寻址方式,16位和32位寻址时的四元素定义,2-49, 保护方式下的寻址过程(地址转换过程),2.4.2 寻址方式,2-50,2.4.2 寻址方式,偏移地址四元素可优化组合出9种存储器寻址方式,加上立即数寻址和寄存器寻址,Pentium共有11种寻址方式:,(1) 立即数寻址 (2) 寄存器寻址 (3) 直接寻址 (4) 寄存器间接寻址 (5) 基址寻址,(6) 变址寻址 (7) 比例变址寻址 (8) 基

26、址加变址寻址 (9) 基址加比例变址寻址 (10)带位移的基址加变址寻址 (11)带位移的基址加比例变址寻址,2. 11种寻址方式,2-51,2.4.2 寻址方式,在这种寻址方式下,操作数作为立即数直接存在指令中,可为8位、16位或32位。,以第3条指令为例,给出了立即数寻址方式的执行过程的动画演示。,(1)立即数寻址,2-52,2.4.2 寻址方式,在这种方式下,操作数包含在指令规定的8位、16位或32位寄存器中。,这种寻址方式指令编码短,无需从存储器取操作数,故执行速度快。,(2)寄存器寻址(寄存器直接寻址),2-53,2.4.2 寻址方式,在这种方式下,指令中的操作数部分直接给出操作数有

27、效地址EA,它和操作码一起放在存储器代码段中,可以是16位或32位整数。但操作数一般在数据段DS中。,例: MOV AX,DS:3000H,将DS段中3000H和3OO1H单元的内容送到AX中。假设DS=5000H,则此指令是将物理地址为53000H单元的内容送到AL寄存器,将53001H单元的内容送到AH寄存器,详情请看直接寻址方式的执行过程的动画演示。,(3)直接寻址(存储器直接寻址),2-54,2.4.2 寻址方式,实际中对于直接寻址,如操作数在DS段中,则可直接写成:,MOV AX,3000H,如操作数在DS之外的其他段(CS,SS,ES,FS,GS)中,指令中则必须用段寄存器名前缀(

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

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

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

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

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

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

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

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

36、6,2.4.2 寻址方式,3.存储器寻址时的段约定,2-67,4.应用举例,例2.1 已知80486工作在实地址方式下,其中一些寄存器的内容和一些存储单元的内容如图所示,试指出下列各条指令执行后,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,SI,2.4.2 寻址方式,2-68,2.4.2 寻址方式,例2.2 假定80486工作在实模式下,已知:(DS)=1000H,(SS)=2000H,(SI)=007FH,(B

37、X)=0040H,(BP)=0016H,变量TABLE的偏移地址为0100H。请指出下列指令的源操作数字段是什么寻址方式?它的有效地址(EA)和物理地址(PA)分别是多少?, MOV AX,1234H MOV AX,TABLE MOV AX,BX+100H MOV AX,TABLEBPSI,2-69,Pentium的指令系统是在80X86系列指令系统的基础上逐步发展而形成的,在代码级具有向上兼容性。它增加了指令的种类,增强了一些指令的功能,提供了32位寻址方式和32位操作方式,并且包含全部浮点运算指令。 Pentium指令的操作数可以是03个,根据寻址方式不同,可直接包含在指令中,也可存于寄存

38、器或存储器中。每条指令的长度因指令而异,平均指令长度为3.2字节。指令的操作数宽度可以是8位、16位、32位,寻址宽度可以是16位或32位。 Pentium指令系统的突出特点是:功能强、灵活性高,给编译程序和汇编语言程序的设计人提供了很宽的选择余地。,2.4.3 Pentium指令系统概貌,2-70,1. 指令格式,2.4.3 Pentium指令系统概貌,2-71,Pentium指令系统分为:,整数指令-最常用部分 浮点数指令 操作系统型指令,2. 指令分类,2.4.3 Pentium指令系统概貌,2-72,数据传送是计算机中最基本、最常用、最重要的一类操作。如:,这类指令寻址方式最丰富,除P

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

40、,指令格式:MOV 目的操作数,源操作数,寻址规定: REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM,2.4.4 数据传送类指令,2-75,2.3.4 数据传送类指令,2-76,MOV指令使用说明:,源操作数和目的操作数的类型必须一致。 目的操作数不能为立即数。 CS和(E)IP均不能用作指令的目的寄存器。 段寄存器间不能直接传送,也不能直接将立即数送给段寄存器。 源操作数为立即数,而目的操作数类型不确定时,要给目的操作数加类型说明。,源操作数和目的操作数不能同为存储器操作数。,2.4.4 数据传送类指令,目的操作数, 源操作

41、数 REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM,2-77, MOV DS,100, MOV 1000H,23H,错。源、目的操作数不能同为存储器寻址。, MOV 1000H,2000H,错。立即数不能直接赋给段寄存器。,错。目的操作数长度不确定。, MOV DATA,1133H, MOV CS,AX,依赖于DATA的定义,错。不能用传送指令改变代码段寄存器。, MOV AX,0100H+BX+BP,错。地址寄存器不能同为基址寄存器。,例2.3 识别下列指令的正确性,对错误的指令,说明错误的原因。,MOV AX,100 MO

42、V DS,AX,MOV WORD PTR 1000H,23H,MOV AX,2000H MOV 1000H,AX,2.3.4 数据传送类指令,2-78,2. 交换指令,操作: (目的操作数) (源操作数),格式:XCHG 目的操作数,源操作数 REG/MEM, REG REG, MEM,说明: 基本用法同MOV指令; 当源或目的操作数为MEM操作数时,会自动 激活LOCK信号,该特性常用于多机、多任务 或多用户系统中的临界段(共享资源)访问。,2.4.4 数据传送类指令,2-79,例2.4 临界段访问(测试与置位操作),TEST_SET:MOV AL,0FFH XCHG AL,SEMAPHOR

43、E ;读信号灯并置位 AND AL,AL ;产生条件码 JNZ TEST_SET ;忙时等待 (临界段程序) MOV AL,0 MOV SEMAPHORE,AL ;清信号灯,2.4.4 数据传送类指令,2-80,说明: XLAT是一条隐含寻址的指令。隐含两个操作数:DS:(E)BX存放表基址,AL存放查表参数。使用前要给隐含操作数赋初值。,3. 查表指令,格式: XLAT 操作: (EBX)+(AL)AL (BX)+(AL)AL,2.4.4 数据传送类指令,2-81,例2.5 内存中自TABLE开始的16个单元连续存放着自然数0到15的平方值(构成一个平方表),任给一整数M在XX单元中(该数为

44、0M15),查表求M的平方值,并将结果存入YY单元中。,解: LEA BX,TABLE MOV AL,XX XLAT MOV YY,AL,2.4.4 数据传送类指令,2-82,4. 堆栈指令PUSH/POP,格式:PUSH 源操作数 REG16/MEM16/IMM16 REG32/MEM32/IMM32 操作: (E)SP)-2/4(E)SP (源操作数)(SS:(E)SP),(1) 压栈指令,2.4.4 数据传送类指令,2-83,格式:POP 目的操作数 MEM16/MEM32/REG16/REG32 操作:(SS:(E)SP)目的操作数 (E)SP)+ 2/4(E)SP,(2) 弹栈指令,

45、2.4.4 数据传送类指令,2-84,堆栈指令的操作数只能为字或双字。 PUSH和POP要成对出现,以保持堆栈平衡 堆栈指令也隐含了一个目的/源操作数堆栈。 压栈顺序是先压高字节后压低字节,弹栈则是先弹低字节后弹高字节。,(3)堆栈指令使用说明:,2.4.4 数据传送类指令,2-85,例2.6 用堆栈操作指令将BX和CX中的两个16位数(其中BX是高16位)组成32位数传送到EAX寄存器中。,PUSH BX ;先压高16位 PUSH CX ;后压低16位 POP EAX,解:,2.4.4 数据传送类指令,2-86,说明:I/O端口有两种寻址方式 直接寻址,寻址范围为0255; 间接寻址,寻址范

46、围为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-87,(2) 输出指令,格式:OUT 端口, 累加器 IMM8, AL/AX/EAX DX , AL/AX/EAX 操作:(AL/AX/EAX)I/O端口,2.4.4 数据传送类指令,2-88,例2.7 设程序在数据段中定义的数组如下: NAMES DB TOM DB 20 DB ROSE D

47、B 30 DB KATE. DB 25 请指出下列指令是否正确,如正确,A累加器中的结果是多少?,6. 传送指令应用举例,2.4.4 数据传送类指令,2-89,1. MOV BX, OFFSET NAMES MOV AL,BX+5,(AL)=NAMES+5=20,2. MOV AX, NAMES,错,源与目的操作数类型不一致,3. MOV AX, WORD PTR NAMES+1,(AX)=NAMES+1=MO=4D4FH,4. MOV BX,6 MOV SI,5 MOV AX,NAMESBXSI,前两条指令正确,第三条错,源与目的操作数类型不一致,2.4.4 数据传送类指令,2-90,5.

48、MOV BX, 6*2 MOV SI,5 MOV AX,OFFSET NAMESBXSI INC AX,6. MOV BX, 6 MOV SI,5 LEA DI,NAMESBXSI MOV AL,DI,(DI)=NAMES偏移地址+(BX)+(SI) =NAMES偏移地址+11 (AL)=NAMES+11=K=4BH,前两条指令正确,第三条错,OFFSET只能取直接变量的偏移地址;第四条错,非法寻址。,2.4.4 数据传送类指令,2-91,例2.8 80486工作在实地址方式时,(DS)=091DH,(BX)=0024H,有关存储器的内容如图所示。求指令LES DI,32HBX执行后的结果。,LES DI,32HBX,2.4.4 数据传送类指令,2-92,这类指令支持加、减、乘、除四种基本算术运算,其操作对象可以是字节、字、双字的无符号和有符号的二进制整数;也可以是无符号的压缩/非压缩BCD码数;还支持符号扩展指令和十进制调整指令。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1