书签 分享 收藏 举报 版权申诉 / 178
上传文档赚钱

类型《微型计算机原理》课件第4章.ppt

  • 上传人(卖家):momomo
  • 文档编号:7873425
  • 上传时间:2024-08-29
  • 格式:PPT
  • 页数:178
  • 大小:7.23MB
  • 【下载声明】
    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位数据字节

    26、存低字节地址单元(现时的(SP)所指的栈顶单元),高8位数据字节存高字节地址单元。执行弹出POP指令时,操作正好相反,先弹出一个字数据至目标地址,再修正堆栈指针,SP自动加2。若子程序开始有如下保护现场的指令:PUSH AX PUSH BX PUSH DS则子程序返回前,根据“后进先出”原则应按如下顺序恢复现场:POP DS POP BX POP AX 第4章 80 x86寻址方式与指令系统 表表4.6 堆堆 栈栈 指指 令令 表表 第4章 80 x86寻址方式与指令系统 3)交换指令交换指令表4.7 XCHG指令的形式 第4章 80 x86寻址方式与指令系统 2.累加器专用传送指令累加器专用

    27、传送指令 1)输入/输出指令 输入IN指令是将数据(字节/字数据)从一个输入端口传送到累加器(AL或AX)中。输出OUT指令是将数据(字节/字数据)从累加器(AL或AX)传送到一个输出端口中。输入/输出指令可以分为两大类:一类是直接端口寻址的输入/输出指令;另一类是通过DX寄存器间接寻址的输入/输出指令。在直接寻址的指令中只能寻址0255个端口,而间接寻址的指令中可寻址整个64 K个端口。第4章 80 x86寻址方式与指令系统 (1)输入指令。直接寻址的输入指令IN AC,port。此指令是将8/16位数据经输入端口port(地址号0255)送入AL/AX累加器中。指令码的编码格式如下:第4章

    28、 80 x86寻址方式与指令系统 间接寻址的输入指令IN AC,DX。此指令是从DX寄存器内容指定的端口中将8/16位数据送入AL/AX寄存器中。这种寻址方式端口地址由16位地址号表示,执行此指令前应将16位地址号存入DX寄存器中。指令码是单字节,格式如下:第4章 80 x86寻址方式与指令系统 (2)输出指令。直接寻址的输出指令OUT port,AC。此指令是从AL(8位)或AX(16位)累加器输出8/16位数据到指令第二字节直接指定的I/O端口中。此指令的编码格式如下:第4章 80 x86寻址方式与指令系统 间接寻址的输出指令OUT DX,AC。此指令是从AL(8位)或AX(16位)累加器

    29、中输出8/16位数据到由DX寄存器内容指定的I/O端口中。指令的编码格式如下:第4章 80 x86寻址方式与指令系统 在使用输入/输出指令时要注意以下几点:与I/O端口输入/输出信息只能通过累加器才能实现,不能用其它寄存器代替。同理,间接寻址时只能通过DX寄存器实现。当I/O端口与内存统一编址时,此时CPU与I/O端口间交换信息就可采用访问存储器的指令来访问I/O端口,不必用输入/输出指令。第4章 80 x86寻址方式与指令系统 8086/8088用低16位地址线来对8位I/O端口寻址,所以8086/8088的I/O地址空间是65 536个,即可访问65 536个8位I/O端口。而任何两个地址

    30、连续的8位I/O端口都可以当作一个16位I/O端口。8088 CPU对16位端口的输入/输出,总是访问两次。8086 CPU 按照像对存储器字的读/写规则一样,如要实现对奇地址的16位I/O端口输入/输出,必访问两次。需要指出的是:IBM-PC机只使用了A0A9这 10 条地址线作为I/O端口地址线,因IBM-PC系统中,既用了0255范围的I/O端口地址,又用了大于255的端口地址。表4.8列出了IBM PC/XT的输入/输出地址分配表。第4章 80 x86寻址方式与指令系统 表表 4.8 IBM PC/XT的端口地址的端口地址 第4章 80 x86寻址方式与指令系统 续表续表 第4章 80

    31、 x86寻址方式与指令系统 2)字节转换指令字节转换指令 表 4.9 BCD码与字形码的相互转换表 第4章 80 x86寻址方式与指令系统 设BCD码存放在内存的首地址以标号BCDT表示。字形代码存放在内存的首地址为WDT。现要求将BCD码某数(如7)转换成相应的字形代码存入AL中,借助于XLAT指令实现上述转换的步骤如下:将字形代码表的首地址置于BX中。将欲转换的BCD码某数(如7)与表首地址BCDT的偏移量(字节长度)求出,并置于AL中。本例中偏移量为07H。执行XLAT指令。本指令的功能是求出EA=(BX)+(AL)。在本例中EA=WDT+07H。然后再将(EA)AL中,现(EA)=78

    32、H,故执行结果是将7的BCD字形代码送入AL中。第4章 80 x86寻址方式与指令系统 图 4.11 XLAT指令执行示例 7000nnnnDSCS70407+)700000040000007EAmmmm+1ppppmnnnn00mmmmmmmm040007HIPBXAX407978数据存储器D7程序存储器WDT(70400)704017040270407ppppmppppm+1程序存储器地址计算求操作数存放的物理地址物理地址中内容AL中+)第4章 80 x86寻址方式与指令系统 3.地址传送指令地址传送指令 地址传送指令包括3条指令:取有效地址指令LEA;将地址指针装入DS(数据段寄存器)指

    33、令LDS;将地址指针装入ES(附加段寄存器)指令LES。1)取有效地址指令LEA REG,MEM 此指令的功能是将存放源操作数的16位偏移地址(可以是用变量或者标号或者地址表达式表示的有效地址)送到一个16位的通用寄存器中。这条指令常用来使一个寄存器作为地址指针。为说明问题,我们比较下面两条指令的执行结果:MOV AX,DI+10 LEA AX,DI+10 第4章 80 x86寻址方式与指令系统 假设(DI)=0500H,(DS)=0200H。若对应内存单元中的内容如图4.12所示,则上述MOV指令执行后,AX的内容(AX)=00FFH。它是将0200H段中偏移地址为050AH中的16位数送入

    34、AX中。第二条指令LEA执行后,AX的内容(AX)=050AH,即将存放源操作数的有效地址送入AX中。取有效地址指令可以有如下形式:LEA AX,2728H;将2728H单元的地址偏移量(有效地址)送AX。指 令执行后(AX)=2728H。LEA DI,DATA1;DATA1为已定义的变量名,将其中偏移地址部分送DI。第4章 80 x86寻址方式与指令系统 图 4.12 内存单元内容 第4章 80 x86寻址方式与指令系统 2)地址指针装入DS指令 LDS REG,MEM 此指令的功能是把源操作数有效地址所对应的双字长的内存单元中的高字内容(一般为16位段地址)送入DS,低字内容(一般为偏移地

    35、址)送入指令所指定的寄存器中。例如:LDS DI,2130H ;执行此指令后,将2130H和2131H中的内容(偏移量)送到DI中,而将2132H和2133H中的内容(段值)送到DS中。第4章 80 x86寻址方式与指令系统 图 4.13 LEA和LDS指示执行示意(a)LEA BX,BX+SI+jjkk;(b)LDS SI,jjkk g gBXg g gggg+hhhh +jjkkh hSIh hm mIPm mn nCSn n mmmm+4数据存储器程序存储器8D98kkjjppppmppppm+1ppppm+2ppppm+3ppppm+4(a)+)0 m m m mn nn n 0p p

    36、 p p m第4章 80 x86寻址方式与指令系统 图 4.13 LEA和LDS指示执行示意(a)LEA BX,BX+SI+jjkk;(b)LDS SI,jjkk x xSIy ym mIPm mn nn nh hCSh h0jjkkhhhh0rrrrkyyxxwwc536kkjjppppmppppm+1ppppm+2ppppm+3ppppm+4(b)vv +4DSrrrrkrrrrk+1rrrrk+2rrrrk+3+)0 m m m mn nn n 0p p p p mm mm m+)第4章 80 x86寻址方式与指令系统 3)地址指针装入ES指令 LES REG,MEM 此指令的功能是把源

    37、操作数有效地址所对应的双字长的内存单元中的高字内容(一般为16位段地址)送入ES,低字内容(一般为偏移地址)送入指令所指定的寄存器中。LES与LDS的指令格式及使用方法是相似的。例如:LES DI,2130H ;执行此指令后,将2130H和2131H中的内容(偏移量)送到DI中,而将2132H和2133H中的内容(段值)送到ES中。地址传送指令执行结果不影响标志位。第4章 80 x86寻址方式与指令系统 4.标志传送指令标志传送指令 1)标志装入标志装入AH指令指令LAHF 图 4.14 LAHF指令的功能 第4章 80 x86寻址方式与指令系统 2)设置标志指令SAHF 此指令的功能是将AH

    38、寄存器中相应位(D0、D2、D4、D6、D7)的状态传送至标志寄存器FLAG中对应的位,而Flag寄存器中其它位不受影响。此指令刚好与LAHF指令功能相反。LAHF和SAHF指令仅影响5个标志位SF、IF、AF、PF、CF,这是8080/8085 CPU指令系统中所具有的标志。现8086/8088有了此两条指令,就可以保持对8080/8085汇编语言级程序有完整兼容性。第4章 80 x86寻址方式与指令系统 3)标志压入堆栈(PUSHF)和标志弹出堆栈(POPF)指令 PUSHF指令是将标志寄存器的内容(16位)压入堆栈顶部,此时堆栈指针SP的值自动减2。指令的执行不影响原标志寄存器的值。PO

    39、PF指令的功能正好相反,指令的功能是从堆栈中弹出一个字送到标志寄存器中,堆栈指针SP的值自动加2。第4章 80 x86寻址方式与指令系统 PUSHF和POPF指令一般用在子程序和中断处理程序的首尾,用以保存主程序标志和恢复主程序标志。有时还被用于改变陷阱标志TF的状态。改变TF的过程是:将标志压入堆栈,改变TF位的状态,然后从堆栈中弹出到标志寄存器。例如,若要求将TF置位,可用以下程序段实现:PUSHF;将Flag各标志位压入堆栈。POP AX ;弹出标志至AX中。OR AH,01H ;TF位置“1”。PUSH AX ;修改后的标志,各位压入堆栈。POPF ;从堆栈中弹出一个字(此时为修改后的

    40、16 位标志),送入标志寄存器。第4章 80 x86寻址方式与指令系统 4.4.2 算术运算指令算术运算指令 表4.10 8086/8088可处理的数据类型 第4章 80 x86寻址方式与指令系统 表表4.11 算术运算指令算术运算指令 第4章 80 x86寻址方式与指令系统 续表续表 第4章 80 x86寻址方式与指令系统 续表续表 第4章 80 x86寻址方式与指令系统 1.加法指令加法指令 1)不带进位的加法指令不带进位的加法指令ADD ADD指令的功能是将两数相加之和放入目的操作数中,源操作数保持不变。ADD指令要影响标志位OF、SF、ZF、AF、CF、PF。例例 4.4 设AL=3A

    41、H,则执行ADD AL,7CH后,AL=B6H;对标志位的影响为:PF=0,ZF=0,AF=0,OF=1,SF=1,CF=0。在ADD指令中,当两数为无符号位数时,对进位标志CF影响有效,即CF=1有进位,CF=0无进位;当两数为带符号位数时,仅符号相同的两个数相加才有溢出问题,其判别方法是相加之和的符号与原数符号相反时为有溢出OF=1,否则无溢出OF=0。第4章 80 x86寻址方式与指令系统 ADD指令的常用形式还有:ADD CX,2000H ;立即数与寄存器内容相加。ADD BX,67H ;存储单元与立即数相加。ADD AX,BX+SI ;存储单元与寄存器内容相加。ADD AX,BX ;

    42、寄存器之间相加。ADD BX+6000H,AX ;寄存器与“基地址加位移量”之存储单元内容相加。第4章 80 x86寻址方式与指令系统 2)带进位加指令ADC ADC指令的功能是将目的数、源数和进位标志CF三者的内容相加,结果存入目的操作数,而源操作数内容保持不变。ADC对标志位的影响与ADD相同。带进位加指令ADC常用于多字节相加。3)加1指令INC INC指令的功能是将目的数的内容加1。INC指令除了不影响进行标志CF外,其余与ADD和ADC指令相同。第4章 80 x86寻址方式与指令系统 2.减法指令减法指令SUB 1)不带借位的减法指令 SUB指令的功能是将目的数减去源操作数,并将结果

    43、(差)送回目的数。第4章 80 x86寻址方式与指令系统 例例 4.5 SUBSI+14H,0136H;指令功能为求出目的数有效地址EA=SI+14H,将(EA)-0136HEA。设DS=3000H,SI=0040H,则EA=0054H,目的数的物理地址为30054H,其内容设为4336H,则此指令的结果及对标志位的影响如下所示。第4章 80 x86寻址方式与指令系统 2)带借位减法指令SBB SBB指令功能是将目的数减去源数和CF借位位的现行值,并将结果(差)送回目的数。SBB指令和ADC指令类似,主要用于多字节减法运算中。例 4.6 SBBBP+SI+0102H,A034H;指令功能是求出

    44、有效地址EA=BP+SI+0102H,(EA)-A034HEA。设 BP=0F6A,SI=0018H,SS=2F00H,则目的数存储单元的物理地址为30084H。设其目的数为FA42H,则执行上述指令后,其结果为5469H,对标志位的影响为:PF=1,ZF=0,AF=0,OF=0,SF=0,CF=0。第4章 80 x86寻址方式与指令系统 3)求补NEG及比较CMP指令 NEG及CMP指令都是属于二进制减法运算指令。NEG指令所完成的操作是0减去目的数,结果送回目的数。NEG指令影响所有的标志位。若目的数不是零,则执行结果总是使CF置1,否则置0。CMP比较指令是用目的数减去源操作数,结果仅影

    45、响标志位,仍保留原有两个操作数不变。通常,CMP指令主要用于根据其结果对标志位的影响,以决定程序的走向。在工业控制中是常用的一种控制程序走向的指令。第4章 80 x86寻址方式与指令系统 3.乘法指令乘法指令 1)无符号数的乘法指令MUL 图 4.15 乘法运算的操作数及其运算结果间关系 第4章 80 x86寻址方式与指令系统 例例 4.7 MOV AL,0A7H ;被乘数送AL累加器。MOV BL,85H;乘数送BL寄存器。MUL BL;乘积为56C3H存入AX中。由于乘积的高半部分(字节乘指AH,字乘指DX)不为零,则标志位CF和OF均置1。表示AH及DX中有乘积的有效数字,否则CF、OF

    46、均置0,其它的标志内容不定,因而没有意义。第4章 80 x86寻址方式与指令系统 2)带符号数的乘法指令IMUL IMUL指令运算时先将数变为原码,并去掉符号位,然后再将两数(绝对值)相乘,其结果的符号按两数符号位异或运算规定确定。结果(积)的符号位若为1(负数)应再取其补码。第4章 80 x86寻址方式与指令系统 例例 4.8 IMUL WORD DTR BX 设指令执行前AX=04E8H,BX=0088H,DS=2000H,存储单元20088H中的字内容为4E20H,则指令执行后 DX=017FH,AX=4D00H,CF=1,OF=1。第4章 80 x86寻址方式与指令系统 4.除法指令除

    47、法指令 8086除法指令也有无符号数和带符号数除法指令两种。1)无符号数除法指令DIV 源操作数 图 4.16 除法运算操作数与运算结束存放关系 第4章 80 x86寻址方式与指令系统 2)带符号数的除法指令IDIV 源操作数 当带符号数相除时,只能用此指令。其功能及形式上和DIV指令类似。应注意,若被除数和除数一样具有相同的位数(字节/字)时,这时就需将被除数扩展成字或双字。此时数的大小值不变,仅将数的符号位扩展。如用CBW指令使字节扩展到字,用CWD指令使字扩展成双字。第4章 80 x86寻址方式与指令系统 5.十进制数十进制数(BCD码码)运算指令运算指令 1)BCD码十进制加法调整指令

    48、DAA 若用一字节表示二位BCD码,这种形式称为组合BCD码。当两个组合BCD码数相加时,应分二步进行:(1)先用二进制数的ADD加法指令对两数进行二进制数加法运算,得到中间结果,并影响标志位。特别注意保留AF及CF标志位此时的状态。第4章 80 x86寻址方式与指令系统 (2)紧接着使用十进制加法调整指令DAA。DAA指令的功能是:当AL中低4位大于9或辅助进位位AF=1时,则应对AL中低4位(A3A0)进行加6修正;当AL中高4位(A7A4)9或进位位CF=1时,应对AL中高4位进行加6修正。所以DAA指令会根据累加器AL中的中间结果和AF、CF标志位的状态决定对累加器AL的中间结果进行修

    49、正,有4种修正情况,即加00(不修正)、06、60、66(修正)。第4章 80 x86寻址方式与指令系统 从BCD码加法的步骤来看,可以认为由ADD和DAA两条指令一起才能构成十进制数的加法运算指令。可看成由它们一起构成复合的十进制数加法指令,即 ADD AL,REG/MEM或立即数ADCAL,REG/MEM或立即数DAA 第4章 80 x86寻址方式与指令系统 例例4.9 试求以下两个2位BCD码之和:24H+53H;28H+53H;91H+85H;45H+57H。解解 第4章 80 x86寻址方式与指令系统 2)ASCII码十进制数的加法调整指令AAA 当两个以ASCII码表示的BCD数相

    50、加时,也应分两步操作:先用ADD指令按二进制规则进行加法运算;再用AAA指令对AL中内容进行修正。若AL中低4位(A3A0)9或AF=1则应对累加器AL进行加6修正,同时使AH寄存器加1,并使AF及CF的标志置1,使AL寄存器中高4位清零。第4章 80 x86寻址方式与指令系统 例例4.10 设有两个以ASCII码表示的十进制数代码7=37H,5=35H。求出其有效数相加后的分离式BCD码,存入AX中。解解:第4章 80 x86寻址方式与指令系统 3)BCD码的减法十进制调整指令码的减法十进制调整指令 DAS DAS调整指令用于两个组合的BCD相减后,对所得中间结果进行调整,以产生一个正确的组

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《微型计算机原理》课件第4章.ppt
    链接地址:https://www.163wenku.com/p-7873425.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库