微机原理第2章微处理器与指令系统.ppt

上传人:sccc 文档编号:5384476 上传时间:2023-07-02 格式:PPT 页数:173 大小:2.83MB
返回 下载 相关 举报
微机原理第2章微处理器与指令系统.ppt_第1页
第1页 / 共173页
微机原理第2章微处理器与指令系统.ppt_第2页
第2页 / 共173页
微机原理第2章微处理器与指令系统.ppt_第3页
第3页 / 共173页
微机原理第2章微处理器与指令系统.ppt_第4页
第4页 / 共173页
微机原理第2章微处理器与指令系统.ppt_第5页
第5页 / 共173页
点击查看更多>>
资源描述

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

1、2-1,第二章 微处理器和指令系统,重点:1.Intel系列微处理器的演变历史;2.Pentium的内部基本寄存器功能及应用;3.操作数寻址方式;4.通用整数指令,2-2,第二章 微处理器和指令系统,2.1 Intel系列微处理器概述2.2 8086/8088微处理器2.3 Pentium微处理器2.4 Pentium微处理器指令系统,2-3,2.1.1 8086/8088 微处理器2.1.2 80486 微处理器2.1.3 Pentium 微处理器(80586)2.1.4 Pentium Pro 微处理器2.1.5 Pentium 微处理器2.1.6 Pentium 微处理器2.1.7 Pe

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

3、-5,2.1.2 80486微处理器,1.内部寄存器的容量都扩充到了32位或以上,具有全32 位数据处理能力,并可进行64位的数据运算。2.片内存储管理部件可实现段页式存储管理,比80286可 提供更大的虚拟存储空间和物理存储空间。3.新增了一种保护模式下的工作方式,即虚拟8086方式。4.指令流水线增加到了6级。5.提供了32位外部总线接口,最大数据传输速率显著提 高。,80486是继80386之后推出的第二代32位高性能微处理器,它以提高性能和面向多处理器系统为主要目标。80486继承了80386的各种优点,表现在以下几方面:,2-6,2.1.2 80486微处理器,1.片内集成了一个浮点

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

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

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

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

8、理器相比,主要结构特点如下:,2-13,2.2 8086/8088微处理器,内部结构指令流水线存储器分段,8086是全16位微处理器,8088是准16位微处理器。二者除了外数据总线位数及与此相关的部分逻辑稍有差别外,内部结构和基本性能相同,指令系统完全兼容。,2-14,1.内部结构,2.2 8086/8088微处理器,2-15,EU(Execution Unit),2-16,(2)功能,BIU(Bus Interface Unit),完成所有外部总线的操作,提供总线控制信号。具体地完成:取指、指令排队、读写操作数、地址转换(将两个16位地址相加 20位物理地址),总线控制。,2-17,(3)指

9、令队列,BIU使用指令队列实现流水线操作。当指令队列中有2个或2个(1个)以上的字节空间,且EU未申请读写存储器,则BIU顺序预取后续指令代码 Queue。,2-18,EU的工作过程,2-19,2.指令流水线,指令队列的存在使EU和BIU并行工作,取指令和分析、执行指令操作可重叠进行,形成了两级指令流水线结构,减少了CPU等待时间,提高了CPU的利用率,加快了整机运行速度,降低了对存储器存取速度的要求。,2.2 8086/8088微处理器,2-20,2-21,将1MB的物理存储空间分成若干个逻辑段,每段大小为64KB。,段的起始单元地址叫段基址,存放在段寄存器中。通过4个段寄存器,CPU每次可

10、同时对4个段进行寻址。,3.存储器分段,2.2 8086/8088微处理器,2-22,分段方式不唯一,各段之间可以连续、分离、部分重叠或完全重叠,这主要取决于对各个段寄存器的预置内容。,2.2 8086/8088微处理器,存储器分段结构示例,2-23,物理地址是1MB存储空间中的某一单元地址,用20位地址码表示,CPU访问存储器时,地址总线上送出的就是物理地址。逻辑地址在编程时采用,由段基址和偏移地址组成,两者均为16位。,物理地址和逻辑地址,2.2 8086/8088微处理器,2-24,逻辑地址与20位物理地址的变换关系:物理地址=段基址16+偏移地址,逻辑地址与物理地址的变换,2.2 80

11、86/8088微处理器,2-25,例:已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H,DS段有一操作数,其偏移地址=0204H,1)画出各段在内存中的分布 2)指出各段首地址 3)该操作数的物理地址=?,解:各段在内存中的分布右图所示。操作数的物理地址为:250AH10H+0204H=252A4H,2-26,2.3 Pentium微处理器,2.3.1 内部结构与外部引脚2.3.2 内部寄存器2.3.3 Pentium的四种工作方式,2-27,Pentium在结构上由如下功能部件组成:整数执行单元 浮点单元 指令Cache和数据Cache 指令预取单元 指令译码单元

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

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

14、期,2-33,基本寄存器系统级寄存器调试和模型专用寄存器浮点寄存器,Pentium的内部寄存器,按功能可分为4类:,2.3.2 Pentium内部寄存器,2-34,2.3.2 Pentium内部寄存器,1.基本寄存器,EIP用于保存下一条待预取指令相对于代码基址的偏移量。它的低16位也可单独访问,称之为IP。,2-35,标志寄存器位定义,2.3.2 Pentium内部寄存器,2-36,在调试程序时,DEBUG提供了测试标志位的手段,用符号表示标志位的值,每种标志位的符号如右表,2-37,标志:运算结果最高位为0SF=0 运算结果0 ZF=0 低8位中1的个数为奇数个 PF=0 最高位有进位 C

15、F=1 第三位向第四位无进位 AF=0 次高位向最高位没有进位,最高位向前进位,OF=1,例:执行两个数的加法,分析对标志位的影响。,2-38,段寄存器,Pentium有6个段寄存器:,2.3.2 Pentium内部寄存器,编程者可直接访问的,编程者不能访问的,2-39,实地址方式和虚拟8086方式下相同,段的长度固定为64KB,段选择器就是段寄存器,它保存的是逻辑段基址的高16位,将它的内容左移4位即可得到实际段基址,而不必使用描述符高速缓存器。,在保护虚地址方式下,段的长度可以在1字节到4G字节之间变化;为了描述每个段的基址、属性和边界,为每个段定义了一个描述符。操作系统使用的各任务公用的

16、段描述符放在一起构成全局描述符表GDT;某个任务专用的段描述符放在一起构成局部描述符表LDT。,Pentium段的定义与8086有所不同:,2.3.2 Pentium内部寄存器,2-40,描述符与描述符表,2.3.2 Pentium内部寄存器,2-41,段的的选择符,为了说明一个段的描述符在哪个表中,表的序号是多少以及特权的高低,为每个段定义了一个16位的选择符,存于段选择器中,其格式为:,2.3.2 Pentium内部寄存器,2-42,将一个选择符装入一个段选择器时,处理器将自动从GDT或LDT中找到其对应的描述符装入相应描述符高速缓存器中。,2.3.2 Pentium内部寄存器,以后,每当

17、访问存储器时,与所用段相关的段描述符高速缓冲器就自动参与该次存储器访问操作。转换关系:线性地址=段描述符高速缓存器中段基址+偏移地址,2-43,例题有一个描述符表存放在全局描述符表的第63个表项中,访问该描述符的请求特权级为2,请写出该描述符的选择符。已知段描述符中有基址=56780000H,界限=10,G=1。求该描述符定义的存储段的线性地址范围。,2-44,例:假设虚拟地址为0100:00000200H,禁止分页。如果描述符中读出的段基址为00030000H,那么操作数的物理地址是什么?,解:将此虚拟地址转换成物理地址为,基地址+偏移量,=00030000H+00002000H,=0003

18、2000H,2-45,Pentium微处理器中包含一组系统级寄存器:即5个控制寄存器CR0CR4和4个系统地址寄存器。这些寄存器只能由在特权级 0上运行的程序(一般是操作系统)访问。,2.2.2 Pentium内部寄存器,控制寄存器,Pentium在80486控制寄存器CR0CR3的基础上新增了一个控制寄存器CR4,这些寄存器用来存放全局特性的机器状态和实现对80X86/Pentium微处理器的多种功能的控制与选择。,2.系统级寄存器,2-46,2.3.2 Pentium内部寄存器,CR0,CR4,CR3,CR2,CR1,控制寄存器格式:,2-47,系统地址寄存器,2.3.2 Pentium的

19、内部寄存器,系统地址寄存器,其中GDTR和LDTR分别用来存放GDT和LDT的32位线性基地址等内容;IDTR用来存放中断描述符表的基址和界限;TR用来存放任务状态段(TSS)的基址、界限和其他属性。,只在保护方式下使用,所以又叫保护方式寄存器。用于把在保护方式下常用的数据基地址、界限和其他属性保存起来,以确保其快速性。,2-48,图2.14 GDTR与它定义的全局描述符表,2-49,例:(GDTR)=001000000FFFH,求GDT在物理存储器中的起始地址,结束地址,表的大小,表中可以存放多少个描述符?,解:GDT的起始地址为:00100000H结束地址为:00100000H+0FFFH

20、=00100FFFH表的大小为:0FFFH+1=4096字节表中可以存放4096/8=512个描述符,2-50,2-51,图2.15 LDTR和它定义的局部描述符表,2-52,例:设LDT的基址为00120000H,GDT的基址为 00100000H,(CS)=1007H,那么:请求的特权级是多少?段描述符位于GDT还是LDT中?段描述符的地址是什么?,2-53,解:(CS)=1007H=0001 0000 0000 0111B,RPL=3,申请的特权级为3,TI=1,描述符位于LDT中,描述符相对于LDT基址的偏移量,段描述符的地址为0,0001000000000B8=512 8=4096=

21、1000H,00120000H+1000H=00121000H,2-54,2-55,图2.16 任务寄存器和任务切换机制,2-56,Pentium处理器中提供了一组调试寄存器和一组模型专用寄存器,用于排除故障和用于执行跟踪、性能监测、测试及机器检查错误。,2.3.2 Pentium的内部寄存器,3.调试和模型专用寄存器,2-57,Pentium处理器取消了80386/80486中的测试寄存器TR,其功能由一组“模型专用寄存器”MSR(Model Special Register)来实现,这一组MSR用于执行跟踪、性能监测、测试和机器检查错误。Pentium处理器采用两条指令RDMSR(读MSR

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

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

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

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

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

27、本身。这种操作数叫立即数,对应的指令寻址方 式称为立即数寻址。,包含在CPU 的某个内部寄存器中。这时指令中的操 作数部分是CPU的一个寄存器,这种指令寻址方式称 为寄存器寻址。,在内存储器中。这时指令的操作数部分包含着该操 作数所在的内存地址。这种指令寻址方式称为存储 器寻址。,1.寻址方式和有效地址概念,寻址方式,2-69,在Pentium系列MPU中,内存实际地址(PA)由段基地址和段内偏移地址两部分组成。段内偏移地址可由以下几部分组合而成:,基址寄存器内容 变址寄存器内容 比例因子 位移量,这四个基本部分称为偏移地址四元素,一般又将由这四种元素组合形成的偏移地址称为有效地址EA。,EA

28、=基址+(变址比例因子)+位移量,有效地址EA,2.4.2 寻址方式,2-70,2.4.2 寻址方式,16位和32位寻址时的四元素定义,2-71,保护方式下的寻址过程(地址转换过程),2.4.2 寻址方式,2-72,2.4.2 寻址方式,偏移地址四元素可优化组合出9种存储器寻址方式,加上立即数寻址和寄存器寻址,Pentium共有11种寻址方式:,(1)立即数寻址(2)寄存器寻址(3)直接寻址(4)寄存器间接寻址(5)基址寻址,(6)变址寻址(7)比例变址寻址(8)基址加变址寻址(9)基址加比例变址寻址(10)带位移的基址加变址寻址(11)带位移的基址加比例变址寻址,2.11种寻址方式,2-73

29、,2.4.2 寻址方式,在这种寻址方式下,操作数作为立即数直接存在指令中,可为8位、16位或32位。,MOV AX,4567HMOV BL,78HMOV ECX,12345678H,(1)立即数寻址,动画演示,2-74,2.4.2 寻址方式,在这种方式下,操作数包含在指令规定的8位、16位或32位寄存器中。,这种寻址方式指令编码短,无需从存储器取操作数,故执行速度快。,(2)寄存器寻址(寄存器直接寻址),2-75,2.4.2 寻址方式,在这种方式下,指令中的操作数部分直接给出操作数有效地址EA,它和操作码一起放在存储器代码段中,可以是16位或32位整数。但操作数一般在数据段DS中。,例:MOV

30、 AX,DS:3000H,将DS段中3000H和3OO1H单元的内容送到AX中。假设DS=5000H,则此指令是将物理地址为53000H单元的内容送到AL寄存器,将53001H单元的内容送到AH寄存器,直接寻址方式的执行过程动画演示。,(3)直接寻址(存储器直接寻址),2-76,2.4.2 寻址方式,实际中对于直接寻址,如操作数在DS段中,则可直接写成:,MOV AX,3000H,如操作数在DS之外的其他段(CS,SS,ES,FS,GS)中,指令中则必须用段寄存器名前缀(称为段超越前缀)予以指明。,MOV AX,FS:3000H,直接寻址主要用于单个操作数的相对寻址场合(如简单的标量操作数寻址

31、和静态分配数组的起始地址寻址等)。,2-77,2.4.2 寻址方式,在这种方式下,操作数放在存储器中,但其有效地址EA放在寄存器中,即:EA=寄存器 寄存器的使用规定在16位寻址和32位寻址时不一样。,(4)寄存器间接寻址,2-78,2.4.2 寻址方式,若以SI、DI、BX间接寻址,则默认操作数在DS段中。MOV AX,SI;默认DS为段基址若以BP间接寻址,则默认操作数在SS段中。MOV AX,BP;默认SS为段基址 动画演示,如果操作数不在上述规定的默认段,而是在其他段,则必须在指令中相应的操作数前加上段超越前缀。,MOV AX,ES:SIMOV AX,DS:BP,16位寻址时,偏移地址

32、放在SI、DI、BP或BX中。两种段默认情况:,2-79,2.4.2 寻址方式,MOV EBX,EAX;默认DS为段基址,传送双字给EBXMOV DX,EBX;默认DS为段基址,传送字给DXMOV CH,EAX;默认DS为段基址,传送字节给CH,除ESP、EBP默认段寄存器为SS外,其余6个通用寄存器均默认段寄存器为DS。如操作数在默认段之外,指令中必须加段超越前缀。,寄存器间接寻址的应用场合与直接寻址的应用场合相似,但更灵活。,32位寻址时,8个32位通用寄存器均可作寄存器间接寻址。,2-80,2.4.2 寻址方式,EA=基址寄存器+位移量。其中位移量一定要为常数,且跟随在操作码之后,与操作

33、码一起存放在代码段中。,16位寻址情况下,BX和BP作为基址寄存器。在缺省段超越前缀时,BX以DS作为默认段寄存器,BP以SS作为默认段寄存器。位移量可为8位或16位;32位寻址情况下,8个32位通用寄存器均可作基址寄存器,其中ESP、EBP以SS为默认段寄存器,其余6个通用寄存器均以DS为默认段寄存器。位移量为8位或32位。,MOV EAX,BX+24;也可写成MOV EAX,24BXMOV ECX,EBP+50;也可写成MOV ECX,50EBPMOV DX,EAX+1500H;也可写成MOV DX,1500HEAX,(5)基址寻址,2-81,2.4.2 寻址方式,EA=变址寄存器+位移量

34、 指令书写格式和寻址执行过程与基址寻址相同,区别仅在于将基址寄存器改成变址寄存器。,(6)变址寻址,2-82,2.4.2 寻址方式,MOV AX,COUNTSI,MOV EAX,5EBPMOV ECX,DATAEAX,基址、变址寻址适于对一维数组的数组元素进行检索操作。位移量表示数组起始地址偏移量;基址/变址表示数组元素的下标,可变。,16位寻址时,仅SI、DI可作变址寄存器,且默认DS作为段基址寄存器。,32位寻址时,除ESP外的任何通用寄存器均可作变址寄存器,且默认EBP以SS作段基址寄存器,其余均以DS作段基址寄存器。,2-83,2.4.2 寻址方式,EA=变址寄存器比例因子+位移量,这

35、种寻址方式只适于32位寻址一种情况。,MOV EAX,TABLEESI*4;TABLE是位移量,4是比例因子,比例变址寻址和基址/变址寻址的作用相似,也适用于对一维数组元素的检索。但当数组元素大小为2/4/8字节时,用它更方便、更高效。,(7)比例变址寻址,2-84,2.4.2 寻址方式,EA=基址寄存器+变址寄存器,MOV AX,BX+SI;或写成MOV AX,BXSI 动画演示,它有16位寻址和32位寻址两种情况,每种情况下基址、变址寄存器的使用规定和段寄存器的默认规定与前面所述相同,但一种寻址方式中既有基址寄存器又有变址寄存器,而两个寄存器默认的段寄存器又不相同时,一般规定由基址寄存器来

36、决定默认哪一个段寄存器作段基址指针。,基址加变址寻址主要用于二维数组元素的检索和二重循环等。,(8)基址加变址寻址,2-85,2.4.2 寻址方式,EA=变址寄存器比例因子+基址寄存器,它只有32位寻址一种情况。,MOV ECX,EDX*8EAX;或MOV ECX,EDX*8+EAXMOV AX,EBX*4ESI;或MOV AX,EBX*4+ESI,这种方式主要用于数组元素大小为2/4/8字节时的二维数组检索操作等场合。,(9)基址加比例变址寻址,2-86,2.4.2 寻址方式,在这种方式下:,EA=变址寄存器+基址寄存器+位移量,这种方式也分16位寻址和32位寻址两种情况。变址、基址寄存器的

37、使用约定和对段寄存器的默认约定与前面所述相同。,MOV AX,BX+DI+MASK 或 MOVAX,MASKBXDIADD EDX,ESIEBP+0FFFF000H 或ADD EDX,0FFFF000HESIEBP,这种寻址方式也是主要用于二维数组操作,位移量即为数组起始地址。,(10)带位移的基址加变址寻址,动画演示,2-87,2.4.2 寻址方式,EA=变址寄存器比例因子+基址寄存器+位移量,它只有32位寻址一种情况。各种约定和默认情况同前所述。,INC EDI*8ECX+40;或INC EDI*8+ECX+40,当二维数组的数组元素大小为2/4/8字节,且数组起始地址不为0时,适于用这种

38、寻址方式进行数组检索操作。,(11)带位移的基址加比例变址寻址,2-88,2.4.2 寻址方式,3.存储器寻址时的段约定,2-89,4.应用举例,例2.1 已知Pentium工作在实地址方式下,其中一些寄存器的内容和一些存储单元的内容如图所示,试指出下列各条指令执行后,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-90,2.4.2 寻址方式,例2.2 假定Pentium工作在实地址方式下,已知:(D

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

40、以是03个,根据寻址方式不同,可直接包含在指令中,也可存于寄存器或存储器中。每条指令的长度因指令而异,平均指令长度为3.2字节。指令的操作数宽度可以是8位、16位、32位,寻址宽度可以是16位或32位。Pentium指令系统的突出特点是:功能强、灵活性高,给编译程序和汇编语言程序的设计人提供了很宽的选择余地。,2.4.3 Pentium指令系统概貌,2-92,1.指令格式,2.4.3 Pentium指令系统概貌,2-93,Pentium指令系统分为:,整数指令-最常用部分浮点数指令操作系统型指令,2.指令分类,2.4.3 Pentium指令系统概貌,2-94,数据传送是计算机中最基本、最常用、

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

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

43、令,目的操作数,源操作数 REG/MEM/SREG,REG REG/MEM,SREG REG/SREG,MEM REG/MEM,IMM,2-99,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,100M

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

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

46、并将结果存入YY单元中。,解:LEA BX,TABLEMOV AL,XX XLAT MOV YY,AL,2.4.4 数据传送类指令,2-104,4.堆栈指令PUSH/POP,格式:PUSH源操作数REG16/MEM16/IMM16/SREGREG32/MEM32/IMM32/SREG操作:(E)SP)-2/4(E)SP(源操作数)(SS:(E)SP),(1)压栈指令,2.4.4 数据传送类指令,2-105,格式:POP 目的操作数 MEM16/MEM32/REG16/REG32/SREG操作:(SS:(E)SP)目的操作数(E)SP)+2/4(E)SP,(2)弹栈指令,2.4.4 数据传送类指

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

48、令 格式: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-109,(2)输出指令,格式:OUT 端口,累加器 IMM8,AL/AX/EAX DX,AL/AX/EAX操作:(AL/AX/EAX)I/O端口,2.4.4 数据传送类指令,2-110,例2.7 设程序在数据段中定义的数组如下:NAMES DB TOM.DB 20 DB ROSE DB 30 DB KATE.DB 25 请指出下列指令是

49、否正确,如正确,A累加器中的结果是多少?,6.传送指令应用举例,2.4.4 数据传送类指令,2-111,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-112,5.MOV BX,6*2 MOV SI,5 MOV AX,OFFSET N

50、AMESBXSI 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-113,例2.8 80486工作在实地址方式时,(DS)=091DH,(BX)=0024H,有关存储器的内容如图所示。求指令LES DI,32HBX执行后的结果。,LES DI,32HBX,2.4.4 数据传送类指令,2-114,这类指令支持

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号