《微型计算机原理》课件第4章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《微型计算机原理》课件第4章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机原理 微型计算机 原理 课件
- 资源描述:
-
1、第4章 80 x86寻址方式与指令系统 第4章 80 x86寻址方式与指令系统 4.1 计算机指令格式计算机指令格式 4.2 指令长度与字长的关系指令长度与字长的关系 4.3 80 x86指令指令(编码编码)格式及寻址方式格式及寻址方式 4.4 8086/8088指令系统指令系统 4.5 虚地址寻址方式及虚地址寻址方式及386/486新增指令新增指令 第4章 80 x86寻址方式与指令系统 4.1 计算机指令格式计算机指令格式 1.零地址指令零地址指令 格式:OP为指令操作码(OPCODE)。指令格式中只有操作码部分,而没有操作数的指令,通常称为无操作数指令。在零地址指令格式中没有任何显地址,
2、所有地址均隐含约定。一般有如下两种情况:(1)无需任何操作数。如空操作指令,CPU控制指令等。(2)所需的操作数是隐含约定的。如对隐含约定的寄存器内容进行操作;所需的操作数默认在堆栈中,由堆栈指针SP隐含指出,操作结果仍然放回堆栈中;字符串处理指令,源、目的操作数约定的存放地址等。op第4章 80 x86寻址方式与指令系统 2.一地址指令一地址指令1)只有目的操作数的单操作数指令格式:目的操作数地址功能:OP(D1)D1 上述功能描述中,D1表示地址本身,(D1)表示存放于该地址中的内容。描述的指令功能为:从地址D1取出操作数,按操作码OP规定的操作进行运算,如加1、减1、取反、求补等,再将运
3、算结果存入原单元(即由D1指定)中。这种指令只对一个操作数进行运算处理,所以指令中只给出一个显地址。Op D1第4章 80 x86寻址方式与指令系统 2)隐含约定目的地的双操作数指令 格式:功能:(D1)OP(A)A 此类指令描述的操作是:按地址D1取出源操作数,从约定的累加器A中取出目的操作数,两数按操作码OP指定的操作进行运算,结果存入累加器A中。在目前的微型计算机中,算术/逻辑运算类指令大多采用这种格式,第一源操作数隐含在累加器A中;第二源操作数由地址码D1给出,操作结果替代累加器中原先的内容。Op D1第4章 80 x86寻址方式与指令系统 3.二地址指令 格式:这是最常见的指令格式,
4、两个地址指出两个操作数地址。在许多情况下,两个操作数运算后有一个不需要保留。例如,两数相乘时,部分积累加和代替原来的累加后,后者不需要保留;两数相除,被除数或原来的余数也总是被新余数所代替,没有保留的必要。因此,可以将运算结果放在不需要保留的那个操作数的地址内。二地址指令的功能如下:功能:(D1)OP(D2)D1 两个地址D1、D2分别指出了两个操作数,对这两个操作数进行OP所指定的操作数后产生的结果替代D1操作数,存入D1所指定的地址中。OP D1 D2目的操作 源操作数数地址 地址 第4章 80 x86寻址方式与指令系统 4.三地址指令三地址指令 格式:指令功能:(D1)OP(D2)D3
5、其操作是把D1、D2分别指定的操作数进行OP所指定的操作,结果存放在D3所指定的地址中。这种三地址指令的优点是,操作结束后,D1、D2中的内容均未被破坏;其缺点是增加一个地址后,使得指令码加长,增加存储空间,取指时间变长。因此这种指令格式只在字长较长的大、中型机上采用,而小型机、微型机上一般不采用。OP D1 D2 D3第4章 80 x86寻址方式与指令系统 4.2 指令长度与字长的关系指令长度与字长的关系 指令的长度主要取决于指令操作码的长度、操作数地址的长度和操作数地址的个数。通常指令字长位数越多,所能表示的操作信息和地址信息也就越多,指令功能就越丰富。但位数多则指令所占的存储空间就多,读
6、取指令的时间就增加。现代计算机广泛采用变字长指令格式,能短则短,需长则长。对于操作简单的指令,可采用小于或等于CPU的机器字长,称为短格式指令,其所占存储空间少,执行速度快。对于操作复杂的指令,所需给出的信息量大,则可采用大于机器字长的长格式指令。在同一台计算机指令系统中可能既有短格式指令又有长格式指令。通常把最常用的指令(如数据传送指令、算术逻辑运算类指令)设计成短格式指令,以便节省存储空间和提高指令的执行速度。第4章 80 x86寻址方式与指令系统 源程序指令都是存放在主存储器中,执行时从主存中取出,送入CPU的指令寄存器中或指令队列中,为了便于处理字符数据和尽可能地充分利用存储空间,指令
7、字长与主存的编址单位及CPU的机器字长有一定的关联。例如,主存是按字节编址的,即每个编址单元8位(1个字节)。一般CPU的机器字长、系统总线、数据通路宽度都是字节长度(8位)的1、2、4或8倍,也就是8、16、32或64位。如80年代微型机字长多为8位、16位和32位,大中型机的字长多为32位和64位。因此,指令字长也是字节的简单倍数,如单字节指令、二字节指令、三字节指令。第4章 80 x86寻址方式与指令系统 图 4.1 8086/8088 CPU指令系统格式举例 第4章 80 x86寻址方式与指令系统 4.3 80 x86指令指令(编码编码)格式与寻址方式格式与寻址方式 4.3.1 808
8、6/8088/80286指令编码格式指令编码格式 图 4.2 8086/8088/80286 CPU指令编码的一般形式 第4章 80 x86寻址方式与指令系统 图 4.3 8086/8088不同字长的指令格式类型 第4章 80 x86寻址方式与指令系统 图 4.4 操作码和寻址方式字节格式 第4章 80 x86寻址方式与指令系统 在操作码字节中第D1、D0位分别用于表示指令中数据传送的方向和操作数类型。由于8086 CPU不允许一般的存储器到存储器的传送,所以至少有一个操作数必须是寄存器。如果D=0,则寻址方式字节中的reg域指定的寄存器用作源操作数;若D=1,则由reg域指定的寄存器为目的操
9、作数,而源操作数可来自r/m域中的存储器或另一个寄存器。W(宽度)用于表示操作数是8位数还是16位数。若W=0,指令中两个操作数均是8位数,指令按字节进行操作;若W=1,则为16位数,指令按字进行操作。第4章 80 x86寻址方式与指令系统 第二字节为寻址方式字节,指出两个操作数的存放地址,以及寻求存储器中操作数有效地址EA(Effective Address)的方法。字节中三个域的意义如下:reg域:规定一个寄存器操作数,它在指令中作为源操作数还是目的操作数由操作码(第一)字节中的D位规定。由reg域选择的寄存器的具体规定如表4.1所示。mod域:用来区分另一个操作数是在寄存器中(寄存器寻址
10、),还是在存储器中(存储器寻址)。在存储器寻址的情况下,还用来指出该字节后有多少位移量字节。mod域的编码及其说明如表4.2所示。第4章 80 x86寻址方式与指令系统 表表4.1 reg域及其说明域及其说明 第4章 80 x86寻址方式与指令系统 表表4.2 mod(方式方式)域及说明域及说明 第4章 80 x86寻址方式与指令系统 表表4.3 mod与与r/m域所组合的寻址方式域所组合的寻址方式 第4章 80 x86寻址方式与指令系统 例例4.1 写出指令MOVBX+DI-6,CL的机器语言编码(假设在80386/80486上是16位操作)。这条指令可用符号写成MOV mem,reg的形式
11、,源操作数是寄存器寻址,目的数是存储器寻址方式,故此指令的编码形式为:由于目的数是存储器寻址,D=0和reg域指定了源寄存器。CL寄存器的reg编码是001B,它与W=0一起表示一个8位操作数。至此编码又可进一步写成如下形式:第4章 80 x86寻址方式与指令系统 取r/m的值为001B,是对BX+DI+disp的寻址计算。位移量disp8的范围是在-128到+127之间,-6为FAH。当mod=01B时,为选取8位位移量,则指令MOVBX+DI-6,CL的完整编码如下:第4章 80 x86寻址方式与指令系统 例例 4.2 写出MOV AH,BX+DI+50H的机器语言编码。第4章 80 x8
12、6寻址方式与指令系统 例例 4.3 写出ADD AX,BX+DI+0826H的机器语言编码。此指令的存储器有效地址EA=BX+DI+0826H,其指令功能是(EA)+(AX)AX中。第4章 80 x86寻址方式与指令系统 在微机中操作数存放的位置有下列3种:(1)操作数包含在指令字节中。即指令格式中操作数部分就是操作数本身。这种寻址方式称为立即寻址,这种操作数就称为立即数。(2)操作数存放在CPU的某个内部寄存器中。此时指令格式中操作数部分是CPU内部寄存器的一个编码,这种寻址方式称为寄存器寻址。4.3.2 8086/8088的寻址方式的寻址方式 第4章 80 x86寻址方式与指令系统 (3)
13、操作数在内存的数据区中。处理器可根据指令字节中给出的地址信息求出存放操作数的内存地址称为有效地址EA(Effective Address),然后对存放在有效地址中的操作数进行存取操作。指令中关于如何求出存放操作数有效地址的方法称为操作数的寻址方式。计算机按照指令给出的寻址方式求出操作数有效地址(实质上就是这个段的偏移量)和存取操作数的过程,称为指令的寻址操作。指令系统中还有一种程序转移类指令。这类指令所指出的地址是将程序转移到指令规定的转移地址,然后再顺序执行程序。这种提供转移地址的方法称为程序转移指令地址的寻址方式。第4章 80 x86寻址方式与指令系统 1.操作数的寻址方式操作数的寻址方式
14、 1)立即数寻址方式(Immediate addressing)在8086/8088指令系统中有一部分指令,其指令字节中就给出了一个8位或16位的操作数,它是指令码中的组成部分,此操作数称为立即数。立即数总是紧跟在指令操作码之后的指令字节中。这种寻址方式称为立即数寻址方式。例如:MOV AL,80H;将8位立即数80H送入AL寄存器中。MOV AX,1234H;将16位立即数1234H送入AX寄存器中,其中(AH)=12H,(AL)=34H。ADD AX,3064H;将立即数3064H与AX内容相加,结果存入AX中,即(AX)+3064H(AX)。第4章 80 x86寻址方式与指令系统 图 4
15、.5 立即数寻址方式举例(a)MOV AL,80H;(b)MOV AX,1234H 程序存储器操作码字节程序存储器80AL(a)操作码字节3412AXAHAL指令码(b)指令码第4章 80 x86寻址方式与指令系统 2)寄存器寻址方式 操作数存放在指令规定的CPU内部寄存器中,这称为寄存器寻址方式。对16位操作数来说使用的寄存器可以是AX、BX、CX、DX、SI、DI、SP或BP。而对8位操作数来说,寄存器可为AH、AL、BH、BL、CH、CL、DH、DL。例如:INC CX;将CX的内容加1,即(CX)+1(CX)。MOV AX,CX;将CX的内容传送到AX寄存器中,即CX)(AX)。第4章
16、 80 x86寻址方式与指令系统 图 4.6 MOV AX,CX指令的寻址及执行示意图 AXCX89C1指令码(包含操作数)第4章 80 x86寻址方式与指令系统 3)直接寻址方式 操作数在存储单元中,其有效地址EA由指令直接给出。这种直接寻址方式,操作数总是存放在存储单元中,此存储单元的实际物理地址是由段寄存器内容和指令码中直接给出的有效地址之和形成的。如果指令前面没有用前缀指令指明操作数在哪一段,则通常默认的段寄存器是数据段寄存器DS。例如 MOV AL,1064H ;将有效地址EA=1064H单元中的内容传送到AL寄存器中。第4章 80 x86寻址方式与指令系统 图 4.7 直接寻址示意
17、图 h hh hn nn nm mm mAXIPCSDS+)hhhh001064gggg4YY数据存储器操作码6410ppppmppppm+1ppppm+2ppppm+3gggg4EA寻址操作求出操作数实际物理地址0 m m m mn n n n np p p p m+)第4章 80 x86寻址方式与指令系统 4)寄存器间接寻址 操作数在存储单元中,其有效地址EA存放在CPU中的基址寄存器或变址寄存器中。即寄存器中的内容是操作数的有效地址,而不是操作数本身,故称寄存器间接寻址,8086/8088可以间接寻址的是BX、DI、SI寄存器。间接寻址的有效地址)()()(SIDIBXEA 和直接寻址一
18、样,寄存器间接寻址的操作数一定存放在存储单元中。寻址默认的段寄存器为DS。例如:MOV AX,BX ;将BX中的内容作为有效地址,对有效地址进行字的 读操作,并传送到AX中。第4章 80 x86寻址方式与指令系统 图 4.8 MOV AX,BX指令寄存器间接寻址操作示意图 h hh hn nn nm mm m BXIPCSDS+)操作数数据存储器操作码ppppmppppm+1ppppm+2gggg程序存储器 0 m m m mn n n n 0p p p p m0 h hh h 0g g g g 第4章 80 x86寻址方式与指令系统 5)寄存器相对寻址 操作数在存储单元中,其有效地址是一个由
19、指令码中指定的基址寄存器或变址寄存器的内容和一个带符号位的8位或16位的位移量disp(displacement)相加之和。即 dispdispDISIBPBXEA位位168)()()()(上述位移量也可以看成是一个基于基址/变址的一个相对值,故称此寻址方式为寄存器相对寻址。第4章 80 x86寻址方式与指令系统 图 4.9 寄存器相对寻址操作过程示意图 h hh h BXDS操作码数据存储器操作数程序存储器ggggkdisp-Ldisp-H程序存储区数据存储区0 0 HHLLh hhh0g gggk+)第4章 80 x86寻址方式与指令系统 6)基址加变址寻址方式 操作数在存储单元中,其有效
20、地址是一个基址寄存器和一个变址寄存器的内容之和。其中基址寄存器和变址寄存器均由指令码中指明。有效地址可表示为)()()()(DISIBPBXEA第4章 80 x86寻址方式与指令系统 7)相对的基址和变址寻址方式 操作数在存储单元中,其有效地址是由指令码中指定的一个带符号位的8位或16位的位移量disp、一个基址寄存器内容和一个变址寄存器内容的三部分之和。即 dispdispDISIBPBXEA位位168)()()()(同样当基址寄存器为BP时,段寄存器应为SS。例如:MOV AH,BX+DI+1234H第4章 80 x86寻址方式与指令系统 若DS=4000H,BX=0200H,DI=001
21、0H,则此指令计算出的有效地址EA=1444H,操作数的物理地址为41444H,执行本指令后将41444H单元中的内容传送至AH寄存器中。表4.4 各种类型访问存储器时段地址和偏移地址 第4章 80 x86寻址方式与指令系统 对I/O端口的寻址有以下两种方式:(1)直接端口寻址方式。对这种寻址方式,端口地址用8位地址码表示,它是指令码的一部分。如输入指令IN AL,21H。此指令表示从I/O地址号为21H的端口中读取数据送到AL中。(2)间接端口寻址方式。此时I/O端口的地址由16位表示,并规定存放在DX寄存器中。例如输出指令OUT DX,AL,表示将AL中的内容输出到地址由DX寄存器内容所指
22、定的端口中。第4章 80 x86寻址方式与指令系统 2.程序转移地址的寻址方式程序转移地址的寻址方式 图 4.10 程序转移地址的寻址方式(a)段内直接(相对)寻址;(b)段内间接寻址;(c)段间直接寻址;(d)段间间接寻址 位移量指令IPEA有效转移地址(a)寻址方式指令根据寻址方式计算EA有效转移地址有效转移地址寄存器存储器或(b)偏移量段地址指令CSIP(c)寻址方式指令根据寻址方式计算EA转移地址偏移量段地址内存中两个连续的字(d)第4章 80 x86寻址方式与指令系统 4.4 8086/8088指令系统指令系统 4.4.1 数据传送类指令数据传送类指令 1.通用数据传送指令通用数据传
23、送指令 通用数据传送指令中包括最基本的传送指令MOV、堆栈指令PUSH和POP、数据交换指令XCHG。1)最基本的传送指令MOV MOV指令是执行字节或字的传送操作,将一个源操作数(字节或字)传送到目的操作数中。MOV指令中可能出现的操作如表4.5所示。第4章 80 x86寻址方式与指令系统 表表4.5 基本传送指令基本传送指令MOV 第4章 80 x86寻址方式与指令系统 在此表中操作数字段指明了哪些是可以作为源操作数,哪些可作为目的操作数。另外,在应用本类指令时,应注意以下几点:CS和IP两个寄存器不能作为目的操作数,也就是说这两个寄存器的值是不能用MOV指令来修改的。当采用BX、DI、S
24、I来间接寻址时,默认的段寄存器为DS,当用BP来间接寻址时默认的段寄存器为SS。第4章 80 x86寻址方式与指令系统 8086系统规定,凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令被执行之后,才又恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。故应用时应注意在修改SS和SP指令之间不要插入其它指令。所有通用传送指令都不影响标志。不能用上述传送指令来实现存储器单元之间、立即数至段寄存器及段寄存器之间的传送。第4章 80 x86寻址方式与指令系统 2)堆栈操作指令
25、堆栈操作指令主要用于中断处理与过程(子程序)的调用,此时分别要将断点地址和返回地址保存入堆栈区。在进入中断处理和过程后,还需要保留通用寄存器的值(称保留现场);当中断返回和子程序返回时,则要恢复通用寄存器的值(称恢复现场),再分别将断点地址或返回地址恢复到指令指针寄存器中。这些功能都需要用堆栈指令来完成。压入堆栈指令PUSH是将16位的源操作数压入堆栈;弹出堆栈指令POP是从栈顶弹出16位的源操作数到目标地址。8086/8088的堆栈操作是按字操作的。每执行一条PUSH指令,先将堆栈指针SP自动减2,然后将16位(字)操作数压下栈顶单元。第4章 80 x86寻址方式与指令系统 其低8位数据字节
展开阅读全文