微处理器及指令系统_第1页
微处理器及指令系统_第2页
微处理器及指令系统_第3页
微处理器及指令系统_第4页
微处理器及指令系统_第5页
已阅读5页,还剩137页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章第二章 微处理器和指令系统微处理器和指令系统参考书目:参考书目:1、计算机组成技术计算机组成技术 李东,黄李东,黄庆成等主编庆成等主编 电子工业出版社电子工业出版社2、计算机组成原理计算机组成原理唐朔飞唐朔飞 主主编编 高等教育出版社高等教育出版社12第二章第二章 微处理器和指令系统微处理器和指令系统2.1 2.1 8086微处理器的内部结构微处理器的内部结构2.22.2 寻址方式寻址方式2.3 2.3 处理器的指令系统处理器的指令系统2.42.4 流水线技术流水线技术2.2.5 5 RISCRISC3微处理器概述:微处理器概述: 从外观上看处理器:矩形或正方形的块状从外观上看处理器:矩

2、形或正方形的块状物,通过众多引脚(也称管脚)与主板相连。物,通过众多引脚(也称管脚)与主板相连。 片内总线:片内总线:处理器内部,分为片内控制总线处理器内部,分为片内控制总线和片内数据总线。和片内数据总线。 片外总线:片外总线:处理器与主存储器和输入处理器与主存储器和输入/输出设输出设备之间信号传输的线路,简称总线。备之间信号传输的线路,简称总线。 2.1 8086微处理器的内部结构微处理器的内部结构4 8086 8086 是是全全1616位位微处理器微处理器(内外数据总线都为(内外数据总线都为1616位)位) 8088 8088 是是准准1616位位微处理器微处理器( (内数据总线为内数据总

3、线为1616位,外位,外数据总线为数据总线为8 8位位) )q8086/80888086/8088除了外数据总线位数及与此相关的部分逻辑除了外数据总线位数及与此相关的部分逻辑稍有差别外稍有差别外, ,内部结构和基本性能相同内部结构和基本性能相同, ,指令系统完全兼容。指令系统完全兼容。 58086的引脚图的引脚图1 402 393 384 375 366 357 348 339 3210 3111 3012 2913 2814 2715 2616 2517 2418 2319 2220 21地AD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0N

4、MIINTRCLK地Vcc (5V)AD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD (RQ/GT0 ) HLDA ( RQ/GT1 )WR ( LOCK )M/IO ( S2 )DT/R ( S1 )DEN ( S0 )ALE ( QS0 )INTA ( QS1 )TESTREADYRESETADi表示地表示地址总线与址总线与数据总线数据总线复用同一复用同一个引脚个引脚Ai/Si表示地表示地址总线与控址总线与控制总线复用制总线复用同一个引脚。同一个引脚。这叫做这叫做总线总线分时复用分时复用。68088的引脚图的引脚图1 402 393 384 375

5、 366 357 348 339 3210 3111 3012 2913 2814 2715 2616 2517 2418 2319 2220 21地A14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLK地Vcc (5V)A15A16/S3A17/S4A18/S5A19/S6SS ( HIGH )MN/MXRDHOLD (RQ/GT0 ) HLDA ( RQ/GT1 )WR ( LOCK )M/IO ( S2 )DT/R ( S1 )DEN ( S0 )ALE ( QS0 )INTA ( QS1 )TESTREADYRESET8位的数据总线位

6、的数据总线NMI非屏蔽中断非屏蔽中断请求信号输入请求信号输入INTR可屏蔽中可屏蔽中断请求信号输入断请求信号输入INTA中断响中断响应信号输出应信号输出地址锁存信地址锁存信号输出号输出7 电源引脚(电源引脚(Vcc),接地引脚(),接地引脚(GND) 按照传输信号类别的不同,这些引脚可以按照传输信号类别的不同,这些引脚可以分为分为数据总线引脚数据总线引脚、地址总线引脚地址总线引脚和和控制控制总线引脚总线引脚 数据总线引脚:数据总线引脚: 若数据总线的宽度是若数据总线的宽度是8位,则数据总线引脚将被命名位,则数据总线引脚将被命名为为D0,D1,D7; 若数据总线的宽度是若数据总线的宽度是16位,

7、则数据总线引脚将被命名位,则数据总线引脚将被命名为为D0,D1,D15。8 地址总线引脚:地址总线引脚: 若处理器的访存地址宽度是若处理器的访存地址宽度是10位,则地址总线位,则地址总线引脚将被命名为引脚将被命名为A0,A1,A9; 若处理器的访存地址宽度是若处理器的访存地址宽度是20位,则地址总线位,则地址总线引脚将被命名为引脚将被命名为A0,A1,A19 控制总线引脚控制总线引脚:时钟:时钟CLK、复位、复位RESET、总线请求总线请求HRQ、总线允许、总线允许HLDA、中断请求、中断请求INTR、中断响应、中断响应INTA、读、读RD、写、写WR等。等。 9q在在8086/8088808

8、6/8088的设计中,引入了两的设计中,引入了两个重要的结构概念:个重要的结构概念:1 1、指令流水线、指令流水线2 2、存储器分段管理、存储器分段管理 这两个概念在以后升级的这两个概念在以后升级的IntelIntel系列微处理器中一直被系列微处理器中一直被沿用和发展。正是这两个概念的引入,使沿用和发展。正是这两个概念的引入,使8086/80888086/8088比原来比原来的的8 8位位MPUMPU在运行速度、处理能力和对存储空间的访问等性能在运行速度、处理能力和对存储空间的访问等性能方面有很大提高。方面有很大提高。10 8086/8088 在结构上分为:在结构上分为: 总线接口部件总线接口

9、部件(Bus Interface Unit, BIU) 执行部件执行部件 (Executing Unit, EU) 总线接口部件负责总线接口部件负责取指令取指令,执行部件负责,执行部件负责执执行指令行指令,从而构成了一个,从而构成了一个“两段的流水线两段的流水线”。 取指令取指令1 执行指令执行指令1时间时间TEUBIU 取指令取指令2 执行指令执行指令2 取指令取指令3 执行指令执行指令31、指令流水线结构11654321通通用用寄寄存存器器组组AXBXCXDX外外部部总总线线内部暂存器内部暂存器IPESSSDSCS运算寄存器运算寄存器ALU标标 志志输入输出输入输出控制电路控制电路执行部分

10、执行部分控制电路控制电路执行部件执行部件(EUEU)总线接口部件总线接口部件(BIUBIU)内内部部总总线线地址加地址加法器法器16位位16位位20位位16位位(1)执行部件)执行部件EU 执行部件的执行部件的功能功能就是负责从指令队列取指令并执行。就是负责从指令队列取指令并执行。从结构图可见,执行部件由下列几个部分组成:从结构图可见,执行部件由下列几个部分组成: (1 1)算术逻辑单元)算术逻辑单元ALU ALU (2 2)标志寄存器)标志寄存器FLAGFLAG; (3 3)数据暂存寄存器;数据暂存寄存器; (4 4)通用寄存器组:)通用寄存器组: 包括包括4个个16位位位数据寄存器 AXA

11、X、BXBX、CXCX、DXDX; 4个个16位地址指针与变址寄存器位地址指针与变址寄存器SP, BP, SI, DI。 (5)EU控制电路控制电路 (2)总线接口部件)总线接口部件 (BIU) 总线接口部件总线接口部件根据执行部件的请求,根据执行部件的请求,负责与存储器、负责与存储器、I/OI/O端口传送数据端口传送数据。由下列各部分组成:。由下列各部分组成: (1 1)4 4个段地址寄存器;个段地址寄存器; CSCS1616位的代码段寄存器;位的代码段寄存器; DSDS1616位的数据段寄存器;位的数据段寄存器; ESES1616位的扩展段寄存器;位的扩展段寄存器; SSSS1616位的堆

12、栈段寄存器;位的堆栈段寄存器; (2 2)1616位的指令指针寄存器位的指令指针寄存器IPIP; (3 3)2020位的地址加法器;位的地址加法器; (4 4)6 6字节的指令队列缓冲器。字节的指令队列缓冲器。(3)“流水线流水线”结构结构 l每当8086的指令队列中有1个或2个空字节,BIU就会自动把指令取到指令队列中。而同时EU从指令队列取出一条指令,并用几个时钟周期去分析、执行指令。l当指令队列已满,而且EU对BIU又无总线访问请求时,BIU便进入空闲状态。l在执行转移、调用和返回指令时,指令队列中的原有内容被自动清除,并要求BIU从新的地址重新开始取指令,新取的第一条指令将直接经指令队

13、列送到EU去执行,随后取来的指令将填入指令队列缓冲器。 寄存器寄存器用来暂时存放参加运算的操作数和用来暂时存放参加运算的操作数和运算过程中的中间结果,使得在程序执行运算过程中的中间结果,使得在程序执行的过程中不必每时每刻都要到存储器中存的过程中不必每时每刻都要到存储器中存取数据。取数据。 8086 CPU中可供编程使用的有中可供编程使用的有14个个16位位寄存器寄存器,按其用途可分为,按其用途可分为3类:类:通用寄存器、通用寄存器、段寄存器、指针和标志寄存器段寄存器、指针和标志寄存器。l 8086/8088 的寄存器组结构的寄存器组结构16DISIBPSPDL DHCLCHBLBHALAHFR

14、IPESSSDSCS数据寄存器数据寄存器指针指针寄存器寄存器和和变址寄存器变址寄存器段寄存器段寄存器指令指针指令指针标志寄存器标志寄存器AXBXCXDX作为作为累加器累加器用,在加法运算中参用,在加法运算中参与运算,结果存于累加器中;与运算,结果存于累加器中;所有的所有的I/O指令都隐含地使用指令都隐含地使用AX与外部设备传送信息。与外部设备传送信息。作为通用寄存器使用作为通用寄存器使用在采用基址寻址方式时,用作在采用基址寻址方式时,用作基址寄存器基址寄存器作为通用寄存器使用;作为通用寄存器使用;常用来保存计数值,如在移位指常用来保存计数值,如在移位指令、循环指令和串处理指令中用令、循环指令和

15、串处理指令中用作隐含的作隐含的计数器计数器。作为通用寄存器使用;作为通用寄存器使用;在一些指令中,通常用它来存放在一些指令中,通常用它来存放数据,所以又称为数据,所以又称为数据寄存器数据寄存器;在做双字长运算时,将在做双字长运算时,将DX和和AX组合在一起存放双字长数,用组合在一起存放双字长数,用DX存放高位字。存放高位字。当前代码段的段地址,指令就是从这段取出当前代码段的段地址,指令就是从这段取出当前代码段的偏移地址。当前代码段的偏移地址。又称为又称为程序计数器程序计数器,控制程序中指令执行的顺序控制程序中指令执行的顺序基址基址指针寄存器,指示一组数据的起始地址指针寄存器,指示一组数据的起始

16、地址源变址寄存器源变址寄存器目的变址寄存器目的变址寄存器用于确定数据段中某一用于确定数据段中某一存储单元的地址存储单元的地址指向数据段,程序变量存于此段指向数据段,程序变量存于此段指向附加段,这个段用来存放经过处理的中间数据指向附加段,这个段用来存放经过处理的中间数据堆栈堆栈指针寄存器,指示堆栈栈顶的偏移地址指针寄存器,指示堆栈栈顶的偏移地址指向堆栈段,堆栈操作使用这段存储空间指向堆栈段,堆栈操作使用这段存储空间17 8086/8088的标志寄存器(的标志寄存器(FR):): (1)状态标志:状态标志:状态标志表示前面操作执行后,算术逻辑单元所处状态标志表示前面操作执行后,算术逻辑单元所处的状

17、态,这些状态常作为后继指令执行的条件。的状态,这些状态常作为后继指令执行的条件。 状态标志有状态标志有6个:个:符号标志(符号标志(SF)、零标志)、零标志(ZF)、奇偶标志、奇偶标志(PF)、进位标志、进位标志(CF)、辅助进位标志、辅助进位标志(AF)和溢出标志和溢出标志(OF)。 (2)控制标志:控制标志:是人为设置的,每一个控制标志负责控制某一是人为设置的,每一个控制标志负责控制某一 种特殊的功能。种特殊的功能。控制标志有控制标志有3个:个:方向标志方向标志(DF)、中断标志、中断标志(IF)和陷阱标志和陷阱标志(TF)18 状态标志状态标志(1)符号标志符号标志SF。与计算结果的最高

18、位相同,表示计。与计算结果的最高位相同,表示计算结果的正算结果的正/负。负。0表示正,表示正,1表示负。表示负。(2)零标志零标志ZF。若计算结果为零,则。若计算结果为零,则ZF=1,否则,否则=0。(3)奇偶标志奇偶标志PF。若计算结果的低。若计算结果的低8位中位中1的个数为偶的个数为偶数,则数,则PF=1,否则,否则=0。(4)进位标志进位标志CF。若执行的加法运算在最高位产生进。若执行的加法运算在最高位产生进位,或者执行的减法运算引起最高位产生借位,则位,或者执行的减法运算引起最高位产生借位,则CF=1,否则,否则=0。此外,带进位的循环移位也可能会。此外,带进位的循环移位也可能会改变改

19、变CF。可以用指令。可以用指令STC将将CF置置1,用指令,用指令CLC将将CF清清0,用指令,用指令CMC将将CF取反。取反。19 状态标志状态标志(5)辅助进位标志辅助进位标志AF。若执行加法运算时第。若执行加法运算时第3位向第位向第4位进位(即低半字节向高半字节),或者执行减法运位进位(即低半字节向高半字节),或者执行减法运算时第算时第3位从第位从第4位借位,则位借位,则AF=1,否则,否则=0。(6)溢出标志溢出标志OF。若计算过程产生溢出,则。若计算过程产生溢出,则OF=1,否,否则则=0。溢出是指字节运算的结果超出了。溢出是指字节运算的结果超出了128+127的的范围,或者字运算的

20、结果超出了范围,或者字运算的结果超出了32768+32767的范的范围。在进行加法运算时,每当次高位向最高位有进位围。在进行加法运算时,每当次高位向最高位有进位而最高位没有向前进位,或者最高位向前进位而次高而最高位没有向前进位,或者最高位向前进位而次高位没有向最高位进位,则位没有向最高位进位,则ALU置置OF为为1。20控制标志控制标志(1)方向标志方向标志DF。这是控制串操作指令的标志。若。这是控制串操作指令的标志。若DF=0,则串操作过程中地址将不断增值,否则不断减值。可用则串操作过程中地址将不断增值,否则不断减值。可用指令指令STD将将DF置置1,用指令,用指令CLD将将DF清清0。(2

21、)中断标志中断标志IF。这是控制可屏蔽中断的标志。如果。这是控制可屏蔽中断的标志。如果IF=0,则则8086/8088对可屏蔽中断请求不能做出响应,否则可以对可屏蔽中断请求不能做出响应,否则可以响应可屏蔽中断请求。可用指令响应可屏蔽中断请求。可用指令STI将将IF置置1,用指令,用指令CLI将将IF清清0。 “将将IF置置1”称为称为“开中断开中断”,“将将IF清清0”称为称为“关中关中断断”。21 控制标志控制标志(3)陷阱标志陷阱标志TF。这是控制。这是控制8086/8088是否进入单步执是否进入单步执行状态的标志。若行状态的标志。若TF=1,则,则8086/8088进入单步执行进入单步执

22、行状态或跟踪方式执行指令状态,即每条指令执行完后,状态或跟踪方式执行指令状态,即每条指令执行完后,微处理器暂停(进入陷阱),显示处理器内部各寄存微处理器暂停(进入陷阱),显示处理器内部各寄存器的值。进入单步执行状态便于程序的调试。如果器的值。进入单步执行状态便于程序的调试。如果TF=0,则连续执行指令。,则连续执行指令。 22 2、存储器分段管理结构存储器分段管理结构 存储器为什么要分段呢存储器为什么要分段呢? 16位微处理器,常规上管理位微处理器,常规上管理216 = 64KB的存的存储空间储空间 这样的存储空间满足不了应用的要求。这样的存储空间满足不了应用的要求。 用什么方法来扩大呢?用什

23、么方法来扩大呢? 将正常管理的将正常管理的64KB存储空间定义为一个存储空间定义为一个段段 让微处理器能够管理多个这样的段让微处理器能够管理多个这样的段 通过通过分段存储分段存储结构,结构,8086/8088能够管理能够管理1MB的存储空间的存储空间23 存储器分段后如何来管理呢?存储器分段后如何来管理呢? 每个段的起始地址称为:每个段的起始地址称为:段基址段基址或或段地址段地址 每个段内的地址称为:每个段内的地址称为:段内偏移地址段内偏移地址 一个物理存储单元就可以通过一个物理存储单元就可以通过“段地址:段地址:偏移地址偏移地址”来唯一确定了来唯一确定了 如何管理如何管理“段地址段地址”和和

24、“偏移地址偏移地址”呢?呢? 设置多个设置多个 段基址寄存器段基址寄存器 设置多个设置多个 偏移地址寄存器偏移地址寄存器 都有哪些都有哪些“段基址寄存器段基址寄存器”和和“偏移地址寄偏移地址寄存器存器”呢?呢?24 依照用途的不同,可分为如下段依照用途的不同,可分为如下段代码段代码段(Code Segment, CS)数据段数据段(Data Segment, DS)堆栈段堆栈段(Stack Segment, SS)附加数据段附加数据段(Extended Data Segment, ES)存储程序(指令)代码存储程序(指令)代码。其段基址存放于。其段基址存放于CS寄寄存器,段内偏移地址存存器,段

25、内偏移地址存放于放于IP寄存器寄存器存储程序定义的变量。存储程序定义的变量。段基址存放于段基址存放于DS寄存器寄存器,段内偏移地址存放于,段内偏移地址存放于SI、DI或或BX寄存器寄存器管理系统堆栈。段基管理系统堆栈。段基址存放于址存放于SS寄存器,寄存器,段内偏移地址存放于段内偏移地址存放于SP或或BP寄存器寄存器存储经过处理的中间存储经过处理的中间变量。段基址存放于变量。段基址存放于ES寄存器,段内偏移寄存器,段内偏移地址存放于地址存放于SI、DI或或BX寄存器寄存器存储器分段管理结构存储器分段管理结构25 逻辑地址逻辑地址: :由段基址和相对于该段由段基址和相对于该段的偏移地址共同描述的

26、地址的偏移地址共同描述的地址00000H - FFFFFH例如:例如: 52000H例如:例如: 5000H:2000H段基址段基址偏移地址偏移地址段基址寄存器管理段基址寄存器管理程序设计中使用的,方便程序设计程序设计中使用的,方便程序设计 物理地址物理地址:20根地址线所表示的地址根地址线所表示的地址 260 0 0 0段段 地地 址址 如何根据如何根据16位位的段地址和的段地址和16位位的段内偏移地的段内偏移地址来计算址来计算20位位的的物理地址物理地址呢?呢? 19 4 3 0段地址左移四位段地址左移四位偏偏 移移 地地 址址15 14 13 2 1 020 位位 的的 物物 理理 地地

27、 址址27 物理地址的计算方法物理地址的计算方法 段地址左移四位,再加上偏移地址,就得段地址左移四位,再加上偏移地址,就得到到20位的物理地址。位的物理地址。5000H:2000H逻辑地址逻辑地址52000H物理地址物理地址计算计算寻址寻址内存内存.00000HFFFFFH282.2 寻址方式寻址方式 所谓所谓寻址方式寻址方式(Addressing)指的)指的是指令按照何种方式寻找或访问到所需是指令按照何种方式寻找或访问到所需的操作数或信息。的操作数或信息。 寻址方式分为寻址方式分为指令寻址指令寻址和和数据寻址数据寻址。 指令寻址是为了找到下一条指令;指令寻址是为了找到下一条指令; 数据寻址是

28、为了找到本条指令所需的操作数。数据寻址是为了找到本条指令所需的操作数。 29顺序顺序( PC ) + 1 PC跳跃跳跃由转移指令指出由转移指令指出LDA 1000ADD 1001DEC 1200JMP 7LDA 2000SUB 2001INCSTA 2500LDA 1100.0123456789PC+1指令地址寻址方式指令地址寻址方式指令地址指令地址指令指令顺序寻址顺序寻址1顺序寻址顺序寻址2顺序寻址顺序寻址3跳跃寻址跳跃寻址7顺序寻址顺序寻址82.2 寻址方式寻址方式 1. 指令寻址指令寻址 302.2 寻址方式寻址方式 (1)立即数寻址)立即数寻址(2)直接寻址)直接寻址(3)间接寻址)间

29、接寻址(4)寄存器寻址)寄存器寻址 1. 指令寻址指令寻址 2. 数据寻址数据寻址 (5)寄存器间接寻址)寄存器间接寻址 (6)基址寻址)基址寻址 (7)变址寻址)变址寻址(8)堆栈寻址)堆栈寻址 31形式地址形式地址 指令字中的地址指令字中的地址 有效地址有效地址 操作数的真实地址操作数的真实地址 约定约定 指令字长指令字长 = 存储字长存储字长 = 机器字长机器字长1. 立即寻址立即寻址 指令执行阶段不访存指令执行阶段不访存 A 的位数限制了立即数的范围的位数限制了立即数的范围形式地址形式地址 A操作码操作码寻址特征寻址特征OP # A立即寻址特征立即寻址特征立即数立即数 可正可负可正可负

30、 补码补码形式地址形式地址 A 就是操作数就是操作数 立即数寻址立即数寻址 MOV AX,4567H ;将立即数;将立即数4567H送到送到AX MOV BL,78H ;将立即数;将立即数78H送到送到BL32332. 直接寻址直接寻址EA = A操作数操作数主存主存寻址特征寻址特征LDAAAACC 执行阶段访问一次存储器执行阶段访问一次存储器 A 的位数决定了该指令操作数的寻址范围的位数决定了该指令操作数的寻址范围 操作数的地址不易修改(必须修改操作数的地址不易修改(必须修改A)有效地址由形式地址直接给出有效地址由形式地址直接给出 直接寻址直接寻址 MOV AX,DS:3000H34353.

31、 间接寻址间接寻址EA =(A) 有效地址由形式地址间接提供有效地址由形式地址间接提供OPA寻址特征寻址特征AEA主存主存EAA1EA A1主存主存 EA10 执行指令阶段执行指令阶段 2 次访存次访存 可扩大寻址范围可扩大寻址范围 便于编制程序便于编制程序OPA寻址特征寻址特征A一次间址一次间址多次间址多次间址操作数操作数操作数操作数多次访存多次访存364. 寄存器寻址寄存器寻址EA = Ri 执行阶段不访存,只访问寄存器,执行速度快执行阶段不访存,只访问寄存器,执行速度快OPRi寻址特征寻址特征 寄存器个数有限,可缩短指令字长寄存器个数有限,可缩短指令字长操作数操作数R0RiRn寄存器寄存

32、器有效地址即为寄存器编号有效地址即为寄存器编号MOV EAX,EDXINC CLMOV EAX,EDXINC CL37EA = ( Ri )5. 寄存器间接寻址寄存器间接寻址 有效地址在寄存器中,有效地址在寄存器中, 操作数在存储器中,执行阶段访存操作数在存储器中,执行阶段访存操作数操作数主存主存OPRi寻址特征寻址特征 便于编制循环程序便于编制循环程序地址地址R0RiRn寄存器寄存器有效地址在寄存器中有效地址在寄存器中 寄存器间接寻址 MOV AX,BP38396. 基址寻址基址寻址(1) 采用专用寄存器作基址寄存器采用专用寄存器作基址寄存器EA = ( BR ) + ABR 为基址寄存器为

33、基址寄存器OPA操作数操作数主存主存寻址特征寻址特征ALUBR 可扩大寻址范围可扩大寻址范围 便于程序搬家便于程序搬家 BR 内容由操作系统或管理程序确定内容由操作系统或管理程序确定 在程序的执行过程中在程序的执行过程中 BR 内容不变,形式地址内容不变,形式地址 A 可变可变40(2) 采用通用寄存器作基址寄存器采用通用寄存器作基址寄存器操作数操作数主存主存寻址特征寻址特征ALUOPR0AR0 作基址寄存器作基址寄存器 由用户指定哪个通用寄存器作为基址寄存器由用户指定哪个通用寄存器作为基址寄存器通用寄存器通用寄存器R0Rn-1R1 基址寄存器的内容由操作系统确定基址寄存器的内容由操作系统确定

34、 在程序的执行过程中在程序的执行过程中 R0 内容不变,形式地址内容不变,形式地址 A 可变可变41MOV DX,AX+15427. 变址寻址变址寻址EA = ( IX ) +AOPA操作数操作数主存主存寻址特征寻址特征ALUIX 可扩大寻址范围可扩大寻址范围 便于处理数组问题便于处理数组问题 IX 的内容由用户给定的内容由用户给定 IX 为变址寄存器(专用)为变址寄存器(专用) 在程序的执行过程中在程序的执行过程中 IX 内容可变,形式地址内容可变,形式地址 A 不变不变通用寄存器也可以作为变址寄存器通用寄存器也可以作为变址寄存器43MOV AX,DI+MASK448. 堆栈寻址堆栈寻址(1

35、) 堆栈的特点堆栈的特点堆栈堆栈硬堆栈硬堆栈软堆栈软堆栈多个寄存器多个寄存器指定的存储空间指定的存储空间先进后出先进后出(一个入出口)(一个入出口) 栈顶地址栈顶地址 由由 SP 指出指出 11FFFH +12000 H进栈进栈 (SP) 1 SP出栈出栈 (SP)+ 1 SP栈顶栈顶栈底栈底2000 HSP2000 H1FFF HSP1FFFH栈顶栈顶栈底栈底进栈进栈出栈出栈 1FFF H栈顶栈顶 2000 H栈顶栈顶45(2) 堆栈寻址举例堆栈寻址举例15200HACCSPX栈顶栈顶200H栈底栈底主存主存151FFHACCSP15栈顶栈顶200H栈底栈底主存主存X1FFHPUSH A 前

36、前PUSH A 后后POP A 前前POP A 后后Y1FFHACCSPX栈顶栈顶200H栈底栈底主存主存151FFH15200HACCSP栈顶栈顶200H栈底栈底主存主存X1546 例例: :假定假定80868086工作在实模式下,工作在实模式下,( (DS)=1000HDS)=1000H,(SS)=2000H(SS)=2000H,(SI)=007FH(SI)=007FH,(BX)=0040H(BX)=0040H,(BP)=0016H(BP)=0016H,变量变量TABLETABLE的偏移地址为的偏移地址为01000100H H。请指出下列指令的源操作数字段是什么寻址方请指出下列指令的源操作

37、数字段是什么寻址方式式? ?它的有效地址它的有效地址( (EA)EA)和物理地址和物理地址( (PA)PA)分别是多分别是多少少? ? MOV AXMOV AX,1234H1234H MOV AX MOV AX,TABLETABLE MOV AX MOV AX,BX+100H BX+100H MOV AX MOV AX,TABLEBPSITABLEBPSI2.3.1 指令的操作码与操作数指令的操作码与操作数 指令操作码指令操作码(Operation Code)指令操作数指令操作数(Operand)冯冯诺依曼型计算机机器指令的逻辑格式诺依曼型计算机机器指令的逻辑格式 规定了指令所具有的功能。课程

38、中规定了指令所具有的功能。课程中主要用汇编语言助记符表示。主要用汇编语言助记符表示。 指令所要处理的数据。常以数据所指令所要处理的数据。常以数据所在存储单元的地址形式给出。也称在存储单元的地址形式给出。也称 “指令地址码指令地址码”。2. 3 处理器的指令系统处理器的指令系统 2.3.1 指令的操作码与操作数指令的操作码与操作数 一条指令中,操作数可能有一个、两个一条指令中,操作数可能有一个、两个或三个,甚至更多。或三个,甚至更多。 当然,操作数的个数也可以是零,即指当然,操作数的个数也可以是零,即指令没有操作数,如停机指令。令没有操作数,如停机指令。 在这些操作数中,作为处理单元输入的在这些

39、操作数中,作为处理单元输入的叫叫源操作数源操作数(Source Operand),用于存放处理,用于存放处理结果的叫结果的叫目的操作数目的操作数(Destination Operand)。2. 3 处理器的指令系统处理器的指令系统 2.3.1 指令的操作码与操作数指令的操作码与操作数 “数据表示数据表示”:指令中所能表示的操作数:指令中所能表示的操作数数据类型,即能够被计算机硬件直接辨识的数据类型,即能够被计算机硬件直接辨识的操作数数据类型。操作数数据类型。 常用的常用的“数据表示数据表示”有有定点数定点数(含有符号(含有符号数和无符号数)、数和无符号数)、浮点数浮点数(含单精度浮点数(含单精

40、度浮点数和双精度浮点数)、和双精度浮点数)、字符字符、逻辑数逻辑数(又称布(又称布尔型数据),可以由硬件直接提供。尔型数据),可以由硬件直接提供。2. 3 处理器的指令系统处理器的指令系统 2. 3. 1 指令的操作码与操作数指令的操作码与操作数 “数据结构数据结构”:程序员在程序中所能够使用的数程序员在程序中所能够使用的数据类型及其之间的结构关系。据类型及其之间的结构关系。 比如:数组、字符串、结构体、队列、链表、树、图、比如:数组、字符串、结构体、队列、链表、树、图、堆栈等。堆栈等。 在硬件的基础上由软件实现在硬件的基础上由软件实现 “数据表示数据表示”是数据结构的组成元素,是数据结是数据

41、结构的组成元素,是数据结构的子集。构的子集。 2. 3 处理器的指令系统处理器的指令系统 512. 3 处理器的指令系统处理器的指令系统 通用计算机系统的指令集可分为通用计算机系统的指令集可分为5类基本指令:类基本指令:(1)算术)算术/逻辑逻辑/移位指令(简称算逻指令)移位指令(简称算逻指令)(2)数据传送指令(简称数传指令)数据传送指令(简称数传指令) (3)控制转移指令)控制转移指令(4)输入)输入/输出指令输出指令(5)处理器控制及调试指令)处理器控制及调试指令2.3.2 指令的基本功能指令的基本功能 52(1)算逻指令)算逻指令 定点加法指令定点加法指令ADD 定点减法指令定点减法指

42、令SUB 定点乘法指令定点乘法指令MUL 定点除法指令定点除法指令DIV 加加1指令指令INC 减减1指令指令DEC 比较指令比较指令CMP 浮点加法指令浮点加法指令ADDF 浮点减法指令浮点减法指令SUBF 浮点乘法指令浮点乘法指令MULF 浮点除法指令浮点除法指令DIVF 十进制数算术运算指令十进制数算术运算指令使用这些指令时,要注意它们对使用这些指令时,要注意它们对处理器中状态标志位的影响处理器中状态标志位的影响 算术指令算术指令2.3.2 指令的基本功能指令的基本功能 53(1)算逻指令)算逻指令 “与与”运算指令运算指令AND “或或”运算指令运算指令OR “非非”运算指令运算指令N

43、OT “异或异或”运算指令运算指令XOR 位测试位测试 位清除位清除 位求反位求反 算术左移指令算术左移指令 算术右移指令算术右移指令 逻辑左移指令逻辑左移指令 逻辑右移指令逻辑右移指令 带进位循环左移指令带进位循环左移指令 不带进位循环左移指令不带进位循环左移指令 带进位循环右移指令带进位循环右移指令 不带进位循环右移指令不带进位循环右移指令逻辑指令逻辑指令移位指令移位指令2.3.2 指令的基本功能指令的基本功能 54(2)数传指令)数传指令根据数据的流向分:根据数据的流向分: 寄存器与寄存器之间的数据传送寄存器与寄存器之间的数据传送 寄存器与主存储器单元之间的数据传送寄存器与主存储器单元之

44、间的数据传送 寄存器与堆栈之间的数据传送寄存器与堆栈之间的数据传送 堆栈与主存储器单元之间的数据传送堆栈与主存储器单元之间的数据传送 内存单元与内存单元之间的数据传送内存单元与内存单元之间的数据传送2.3.2 指令的基本功能指令的基本功能 55(2)数传指令)数传指令根据传输的功能分:根据传输的功能分: 一般传送指令一般传送指令 实现数据复制功能,即把源操作数的内容写入实现数据复制功能,即把源操作数的内容写入目的操作数。其汇编语言助记符通常为目的操作数。其汇编语言助记符通常为MOV。 在有些计算机上,将主存储器单元的内容写在有些计算机上,将主存储器单元的内容写入寄存器的数据传送指令,其汇编语言

45、助记符为入寄存器的数据传送指令,其汇编语言助记符为LOAD;将寄存器内容写入主存储器单元的数据传;将寄存器内容写入主存储器单元的数据传送指令,其汇编语言助记符为送指令,其汇编语言助记符为STORE。2.3.2 指令的基本功能指令的基本功能 56(2)数传指令)数传指令根据传输的功能分:根据传输的功能分: 堆栈操作指令堆栈操作指令 压入栈顶压入栈顶PUSH 弹出栈顶弹出栈顶POP PUSH的源操作数和的源操作数和POP指令的目的操指令的目的操作数,一般是寄存器号,但也可能是主存作数,一般是寄存器号,但也可能是主存储器单元地址储器单元地址2.3.2 指令的基本功能指令的基本功能 57(2)数传指令

46、)数传指令 上述两类数据指令的数据流动是单方向的。上述两类数据指令的数据流动是单方向的。要实现两个数据的交换,需要编写三条指令并额要实现两个数据的交换,需要编写三条指令并额外占用一个存储单元。因此大多数计算机都提供外占用一个存储单元。因此大多数计算机都提供“数据交换指令数据交换指令”来简化双向数据流动的实现,来简化双向数据流动的实现,如如Intel 80 x86中的中的XCHG指令。指令。 这类指令的源操作数和目的操作数一般都是这类指令的源操作数和目的操作数一般都是寄存器,至多允许源操作数是主存储器单元。寄存器,至多允许源操作数是主存储器单元。 数据交换指令的执行时间一般较长。数据交换指令的执

47、行时间一般较长。2.3.2 指令的基本功能指令的基本功能 58(3)控制转移指令)控制转移指令 跳转指令跳转指令JUMP 分支指令分支指令 子程序调用子程序调用CALL/返回指令返回指令RET 循环控制指令循环控制指令LOOP 中断系统指令中断系统指令 2.3.2 指令的基本功能指令的基本功能 将指令操作数的内容写入将指令操作数的内容写入PC之中,强制改变指令之中,强制改变指令执行的顺序。执行的顺序。也称也称无条件转移指令无条件转移指令59(3)控制转移指令)控制转移指令 跳转指令跳转指令JUMP 分支指令分支指令 根据特定条件(往往是上一条指令的执行结果),根据特定条件(往往是上一条指令的执

48、行结果),决定程序是顺序执行还是转移到一个新的位置执行,决定程序是顺序执行还是转移到一个新的位置执行,即有条件地改变指令执行的顺序。也称即有条件地改变指令执行的顺序。也称条件转移指令条件转移指令。 条件转移指令可能依据的条件有:条件转移指令可能依据的条件有: 为零、为正为零、为正/负数、发生进位负数、发生进位/借位、为奇数借位、为奇数/偶数、发偶数、发生溢出或以上条件的组合。生溢出或以上条件的组合。 2.3.2 指令的基本功能指令的基本功能 60(3)控制转移指令)控制转移指令 分支指令分支指令 条件转移指令又分为条件转移指令又分为“绝对转移绝对转移”和和“相对相对转移转移”两种。两种。 对于

49、对于“绝对转移绝对转移”,当条件满足时,计算机,当条件满足时,计算机将把该指令中将把该指令中所含操作数的内容直接写入所含操作数的内容直接写入PC中。中。 对于对于“相对转移相对转移”,当条件满足时,计算机,当条件满足时,计算机将把该指令中所含将把该指令中所含操作数的内容与操作数的内容与PC中的内容相中的内容相加后加后,把结果写入把结果写入PC中。中。 2.3.2 指令的基本功能指令的基本功能 61常见的条件转移指令有:常见的条件转移指令有: 等于零转移等于零转移BEQ 不等于零转移不等于零转移BNEQ 小于转移小于转移BLS 大于转移大于转移BGT 小于等于转移小于等于转移/不大于转移不大于转

50、移BLEQ 大于等于转移大于等于转移/不小于转移不小于转移BGEQ 不带符号小于转移不带符号小于转移BLSU 不带符号大于转移不带符号大于转移BGTU 不带符号小于等于转移不带符号小于等于转移/不带符号不大于转移不带符号不大于转移BLEQU 不带符号大于等于转移不带符号大于等于转移/不带符号不小于转移不带符号不小于转移BGEQU 没有进位转移没有进位转移BCC 有进位转移有进位转移BCS 没有溢出转移没有溢出转移BVC 有溢出转移有溢出转移BVS2.3.2 指令的基本功能指令的基本功能 62(3)控制转移指令)控制转移指令 子程序调用子程序调用CALL/返回指令返回指令RET 在程序中,有一些

51、具有特定功能的程序段会在程序中,有一些具有特定功能的程序段会被反复使用。为了提高程序的可读性、可重用性被反复使用。为了提高程序的可读性、可重用性和可维护性,人们将这样的程序段独立出来,将和可维护性,人们将这样的程序段独立出来,将其定义成一个其定义成一个子程序子程序。 这样,在需要执行特定功能时,主程序中不再这样,在需要执行特定功能时,主程序中不再需要编写一个程序段,而只需要编写一条调用子需要编写一个程序段,而只需要编写一条调用子程序的指令即可。程序的指令即可。 2.3.2 指令的基本功能指令的基本功能 63(3)控制转移指令)控制转移指令 子程序调用子程序调用CALL/返回指令返回指令RET

52、调用子程序的指令格式调用子程序的指令格式: CALL Subprogram_Name。 功能是,首先把当前功能是,首先把当前程序的断点程序的断点(也称主调程序的(也称主调程序的返回地址,即当前程序计数器返回地址,即当前程序计数器PC中的值)保存到系统堆中的值)保存到系统堆栈中,然后由子程序名栈中,然后由子程序名Subprogram_Name求得子程序的求得子程序的入口地址入口地址,最后把子程序的入口地址写入,最后把子程序的入口地址写入PC,从而将程,从而将程序控制转移至被调子程序。序控制转移至被调子程序。 返回指令:返回指令:RET指令的功能是把保存在堆栈中的程序断指令的功能是把保存在堆栈中的

53、程序断点弹回到点弹回到PC之中。之中。64子程序调用和返回子程序调用和返回CALL SUB1. .CALL SUB2.CALL SUB2RETURNRETURN.主程序主程序地址地址200021002101子程序子程序SUB1240025002501256025612700主存空间分配主存空间分配程序执行流程程序执行流程子程序子程序SUB265(1)算逻指令)算逻指令(2)数传指令)数传指令(3)控制转移指令)控制转移指令(4)输入)输入/输出指令输出指令 包括包括: 启动输入启动输入/输出设备、停止输入输出设备、停止输入/输出输出设备、测试输入设备、测试输入/输出设备及数据的输入或输出输出设

54、备及数据的输入或输出等指令。等指令。 例如,例如,Intel 80 x86中的输入指令为中的输入指令为IN指令指令,输出指令为输出指令为OUT指令指令。 2.3.2 指令的基本功能指令的基本功能 66(5)处理器控制及调试指令)处理器控制及调试指令 包括各种设置包括各种设置/清除标志位(如陷阱标志、中断清除标志位(如陷阱标志、中断允许标志、处理器工作状态标志位)指令、特允许标志、处理器工作状态标志位)指令、特权指令、进程同步指令、调试指令、停机指令权指令、进程同步指令、调试指令、停机指令(HALT)等。)等。 调试指令用于硬件或软件的调试调试指令用于硬件或软件的调试。硬件调试指。硬件调试指令包

55、括钥匙位置、开关状态的读取指令,重要令包括钥匙位置、开关状态的读取指令,重要寄存器和主存储器单元内容的显示等。软件调寄存器和主存储器单元内容的显示等。软件调试指令包括断点的设置及跟踪指令,自陷阱指试指令包括断点的设置及跟踪指令,自陷阱指令等。令等。2.3.2 指令的基本功能指令的基本功能 672.3.3 指令的格式指令的格式 涉及指令的涉及指令的操作码长度操作码长度、指指令令“地址制地址制”及采用的及采用的寻址方式寻址方式、指令长度指令长度等三方面的问题。等三方面的问题。 68 指令操作码的长度有指令操作码的长度有定长定长和和不定长不定长两种选择。两种选择。 定长的操作码:可以简化指令译码器的

56、设计与实现;定长的操作码:可以简化指令译码器的设计与实现; 不定长操作码(也称扩展操作码):可使常用指令拥不定长操作码(也称扩展操作码):可使常用指令拥有较短的操作码而不常用指令拥有较长的操作码,从有较短的操作码而不常用指令拥有较长的操作码,从而压缩程序所占的存储空间。而压缩程序所占的存储空间。 在一条指令中出现几个在一条指令中出现几个操作数地址操作数地址,这是指令的,这是指令的“地址地址制制”所要解决的问题。一般情况下,指令中地址的个数,所要解决的问题。一般情况下,指令中地址的个数,可以取可以取4,3,2,1,0个。个。2.3.3 指令的格式指令的格式 69扩展操作码技术扩展操作码技术操作码

57、的位数随地址数的减少而增加操作码的位数随地址数的减少而增加OP A1 A2 A3000000011110A1A1A1A2A2A2A3A3A3A2A2A2A3A3A3111111111111000000011110111111111111111111111111111111111111000000011111111111111111111111111111A3A3A30000000111104 位操作码位操作码8 位操作码位操作码12 位操作码位操作码16 位操作码位操作码15条三地址指令条三地址指令15条二地址指令条二地址指令15条一地址指令条一地址指令16条零地址指令条零地址指令70 地址制

58、地址制(1) 四地址四地址(2) 三地址三地址OP A1 A2 A3 A48 6 6 6 6A1 第一操作数地址第一操作数地址A2 第二操作数地址第二操作数地址A3 结果的地址结果的地址A4 下一条指令地址下一条指令地址若若 PC 代替代替 A4(A1) OP (A2) A38 8 8 8 OP A1 A2 A3(A1) OP (A2) A34 次访存次访存4 次访存次访存寻址范围寻址范围 26 = 64寻址范围寻址范围 28 = 256若若 A3 用用 A1 或或 A2 代替代替设指令字长为设指令字长为 32 位位操作码固定为操作码固定为 8 位位71(3) 二地址二地址OP A1 A28

59、12 12(A1) OP (A2) A1(A1) OP (A2) A2或或4 次访存次访存若若ACC 代替代替 A1(或或A2)若结果存于若结果存于 ACC (4) 一地址一地址(5) 零地址零地址OP A18 24无地址码无地址码(ACC) OP (A1) ACC2 次访存次访存寻址范围寻址范围 212 = 4 K寻址范围寻址范围 224 = 16 M 3次访存次访存72 “地址制地址制”设计或改进的目的是为了压缩指令长度,缩设计或改进的目的是为了压缩指令长度,缩短指令的执行时间短指令的执行时间。在相同的指令长度内,减少地址个。在相同的指令长度内,减少地址个数可以扩大所能表示指令的条数或操作

60、数的寻址范围。数可以扩大所能表示指令的条数或操作数的寻址范围。 同一条指令中不同操作数所采用的寻址方式可以相同或同一条指令中不同操作数所采用的寻址方式可以相同或不同不同。 一条指令中的操作数可以都存放在寄存器里,也可一条指令中的操作数可以都存放在寄存器里,也可以把一个操作数存放在寄存器里,而另一个操作数以把一个操作数存放在寄存器里,而另一个操作数存放在主存里,还可以把所有的操作数都存放在主存放在主存里,还可以把所有的操作数都存放在主存里。存放在主存里的操作数可以按基址寻址、变存里。存放在主存里的操作数可以按基址寻址、变址寻址或间接寻址。址寻址或间接寻址。2.3.3 指令的格式指令的格式 73指

温馨提示

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

评论

0/150

提交评论