X86Pentium指令系统.ppt

上传人:wuy****n92 文档编号:70791148 上传时间:2023-01-28 格式:PPT 页数:131 大小:1.93MB
返回 下载 相关 举报
X86Pentium指令系统.ppt_第1页
第1页 / 共131页
X86Pentium指令系统.ppt_第2页
第2页 / 共131页
点击查看更多>>
资源描述

《X86Pentium指令系统.ppt》由会员分享,可在线阅读,更多相关《X86Pentium指令系统.ppt(131页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第2章 80X86/Pentium指令系统2.1 80X86/Pentium 2.1 80X86/Pentium 2.1 80X86/Pentium 2.1 80X86/Pentium 指令格式和寻址方式指令格式和寻址方式指令格式和寻址方式指令格式和寻址方式2.2 8086/8088 2.2 8086/8088 指令系统指令系统2.3 80X86/Pentium 2.3 80X86/Pentium 指令系统指令系统本章重点及难点本章重点及难点n指令格式;指令格式;指令格式;指令格式;n寻址方式;寻址方式;寻址方式;寻址方式;nX86X86的基本指令集;的基本指令集;的基本指令集;的基本指令集;

2、第二章第二章 80X86/Pentium80X86/Pentium指令系统指令系统指令系统:指令系统:微机处理器所能执行的各种指令的集合,不同的微 处理器有不同的指令系统。对对80X86/Pentium80X86/Pentium:8086、8088指令系统为基本指令系统286、386、486、Pentium在此基础上进行了扩充:8086/8088基本指令的增强及一些专用指令构成X86/Pentium系列的实模式指令集实模式指令集。系统控制指令对保护模式保护模式的多任务、存贮器管理、保护机制提供了控制能力。2.1.1 2.1.1 指令格式指令格式第第2 2章章 80X86/Pentium 80X

3、86/Pentium指令系统指令系统2.1 80X86/Pentium2.1 80X86/Pentium指令格式和寻址方式指令格式和寻址方式1.1.汇编指令汇编指令汇编指令汇编指令:助记符形式的指令。如:助记符形式的指令。如:助记符形式的指令。如:助记符形式的指令。如:MOV AXMOV AX,BXBX操作码助记符:操作码助记符:与动作一一对应与动作一一对应例:MOV AX,BX目目(左左)/源(右)操作源(右)操作数:可能有多种组合数:可能有多种组合汇编语言指令的特点汇编语言指令的特点操作数OP Code动作:动作:动作:动作:做什么做什么做什么做什么?对象:对象:对象:对象:针对什么做动作

4、针对什么做动作针对什么做动作针对什么做动作?立即操作数立即操作数立即操作数立即操作数 MOV AL MOV AL,50H50H RegReg操作数操作数操作数操作数 INC INC ALAL存贮器操作数存贮器操作数存贮器操作数存贮器操作数 MOV AL MOV AL,2000H2000H I/OI/O操作数:操作数:操作数:操作数:IN AL IN AL,28H28H端口28H输入8位数到AL中中机器语言指令的特点机器语言指令的特点2.2.机器指令机器指令机器指令机器指令:指令的二进制代码形式。如:指令的二进制代码形式。如:指令的二进制代码形式。如:指令的二进制代码形式。如:89D8H89D8

5、H(1)构)构 成成(2)各部分具体说明)各部分具体说明操作码操作码:由CPU设计人员定义,每一种操作唯一对应一个操作码。例:加法加法操作助记符ADD;数据传送数据传送操作助记符MOV;比较比较操作助记符CMP;操作数操作数:可由编程人员采用不同方式给出。对对X86X86,由,由1 11616个字节构成。个字节构成。datadispS-i-bMod r/m操作码前缀14 1 2 1 1 0.1.2.4 0.1.2.4第第3 3章章 80X86/Pentium 80X86/Pentium指令系统指令系统8086/80888086/8088指令格式:指令格式:1 16 6字节字节DATA(高)DA

6、TA(低)Disp/DATA(高)Disp/DATA(低)Mod r/mOP Code(3 3)指令格式)指令格式)指令格式)指令格式:指令中对操作码、操作数的编码方式。:指令中对操作码、操作数的编码方式。:指令中对操作码、操作数的编码方式。:指令中对操作码、操作数的编码方式。有效地址有效地址EAEA:从段的首地址到操作数所在地址的距离,用字节数表示,是一个无符号16位整数,它指向段首地址开始的64KB空间。以8086/8088指令格式为例:1 16 6字节字节DATA(高)DATA(低)Disp/DATA(高)Disp/DATA(低)Mod r/mOP Code操作码 寻址方式 依据指令的不

7、同而取舍操作码与寻址方式字节(操作码与寻址方式字节(op code及及Mod r/m部分)构成部分)构成第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统规定指规定指令的操令的操作类型作类型两个操作数两个操作数存放地址及存放地址及EA计算方法计算方法指出指出存贮器操作数地址的位移量存贮器操作数地址的位移量或或立即数立即数在指令中的操作数第一字节:第一字节:操作码操作类型 DReg.操作数传送方向=(Reg.寻址标志位)寻址标志位)W 操作数类型=(字操作标志位)(字操作标志位)0 字节1 字0 Reg.操作数为源操作数1 Reg.操作数为目的操作数第二字节:

8、第二字节:Reg.编码(23=8)表示一个具体的Reg.操作数,字节或 字已由W决定,目的或源由D决定。mod编码表示另一个操作数是在Reg.中还是在存贮器中。11为Reg.,其他为存贮器。r/m 当mod11时,r/m指出第二个Reg.操作数的编码。mod11时,r/m指出存贮器操作数存放地址的计算方法。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统01234567WD OP Code mod Reg r/mREGReg Reg 的确定的确定的确定的确定r/mr/m的确定的确定的确定的确定源源目的目的机器码存放在内存中机器码存放在内存中11001111

9、00000010 例例1.1.ADDCL,BH(两个(两个Reg相加)相加)机器语言:000000 1 0|11001111OP CodeD目的操作数是寄存器W 字节运算Mod第二个操作数在寄存器中Reg.目的寄存器为CLr/m源寄存器为BH第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统DISP第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统00100011010001011001000100000001低DISP(8)高DISP(8)指令代码:例例2.2.ADD DISPBXDI,DX 机器语言:000000 01

10、 10 010 001OP CodeReg.为源操作 数字操作第二个是存贮器操作数Reg.DXEA=BX+DI+D1616位偏移量位偏移量存贮器操作数存放地址的计算方法设设DISP=2345H,则有,则有001000110100010123H45H1.OP Code规定指令的操作类型,同时还指出:操作数类型 Reg.操作数传送方向 Reg.编码 符号扩展2.mod r/m 和和 s-i-b 寻址字段:寻址字段:规定Reg./MEM操作数的寻址方式.其中,其中,mod r/m是主寻址字节:是主寻址字节:规定操作数存放的位置 r/m及存贮器操作数有效地 址EA的计算方法。s-i-b是比例是比例-变

11、址变址-基址寻址字节基址寻址字节:此字节可有可无,按主寻址字节编码而定.3.disp 位移量字段:位移量字段:存贮器操作数段内偏移地址的一部分,为:0、1、2、4个字节。4.data 立即数字段:立即数字段:指明立即数的大小。当8位与16/32位操作数一起使用时,CPU自动将它扩展为符号相同的16/32位数。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统现在回顾一下现在回顾一下X86/PentiumX86/Pentium指令格式:指令格式:第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统5.前缀字段前缀字段用于修改指

12、令操作的某些属性用于修改指令操作的某些属性 段超越前缀:将前缀中指明的段Reg.取代指令中默认的段Reg.重复前缀:串操作时置于指令前面,提高CPU处理串数据的速度 总线锁定前缀Lock:用于产生Lock信号,防止其他总线主控 设备中断CPU在总线上的传输操作。操作数宽度前缀:改变当前操作数宽度的默认值(由汇编程序 自动设定)地址宽度前缀:改变当前地址宽度的默认值(由汇编程序自动 设定)所有字段只有操作码字段是必需的,其他字段均可有可无。所有字段只有操作码字段是必需的,其他字段均可有可无。前缀的编码为一个字节,在一条指令前可同时使用多个指令前前缀的编码为一个字节,在一条指令前可同时使用多个指令

13、前缀,不同前缀的前后顺序无关紧要。缀,不同前缀的前后顺序无关紧要。2.1.2 2.1.2 寻址方式寻址方式操作数位置:操作数位置:1.操作数在指令中,与代码存放在一起,称为立即操作数。立即寻址立即寻址 2.操作数在Reg.中,指令中操作数部分是对应Reg.的编码。Reg.Reg.寻址寻址 3.操作数在MEM中,指令中操作数部分是操作数所在的内存地址。存贮器寻址存贮器寻址 第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统一、寻址方式与有效地址的概念一、寻址方式与有效地址的概念 寻址方式寻址方式寻找操作数寻找操作数(操作数地址)的方式。的方式。依据寻址方式,可

14、方便地访问到各类操作数依据寻址方式,可方便地访问到各类操作数。存贮器寻址时,指令的操作数部分给出的地址是段内偏移地址。存贮器寻址时,指令的操作数部分给出的地址是段内偏移地址。为了处理各种数据结构的需要,这个段内偏移量可以由几个基本部分组成,故称其为有效地址有效地址EAEA。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统经管理部件换算成32位PA对保护方式ES通过段管理部件形成32位段基地址 线性地址段基地址TABLEn 80X86/Pentium中,任何内存单元的实际地址都是由两部分组成:段基地址段基地址&段内偏移地址段内偏移地址(段内偏移量)(段内偏移

15、量)而存贮器寻址时,指令中给出的是段内偏移地址。如:ES:TABLE 对实地址方式ES是段基地址,TABLE 为偏移量。PAES16TABLEn 有效地址有效地址EAEA由由四个分量组成四个分量组成:EAEA 基址基址RegReg(变址变址RegReg比例因子)比例因子)位移量位移量 四个分量的取值规定,对于16位寻址和32位寻址有所不同。0,8,32 0,8,16位移量 1,2,4,8 1比例因子 除ESP外任何32位通用寄存器 SI,DI变址寄存器 任何32位通用寄存器 BX,BP基址寄存器 32位寻址 16位寻址有效地址分量表表3-1 16位和位和32位寻址时的四分量定义位寻址时的四分量

16、定义第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统1.1.立即寻址立即寻址 操作数包含在指令中,紧跟着操作码并与操作码一起存放在代码段中;与代码一起被取入CPU的指令队列,在指令执行时不需要再访问存贮器。立即操作数可以是8、16、32位,若是16或32位的,则存放时必须满足低对低,高对高低对低,高对高的原则。指令中的立即数只能是源源,不能是目的目的。常用于给Reg.赋初值。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统二、各种寻址方式二、各种寻址方式(对对8086/8088(168086/8088(16位寻址)只有

17、位寻址)只有8 8种,种,对对80386、486、Pentium(32位寻址)有位寻址)有11种种)例:例:MOV AL,80H MOV AX,1234H MOV EDX,12345678H 1234立即寻址方式示意图立即寻址方式示意图 例:例:INCSIMOVAX,BXMOVECX,EAX3.3.存储器寻址存储器寻址操作数在存贮区中,操作数的有效地址EA在指令中。操作数的物理地址PAPADSDS1616EAEA (或(或(或(或SSSSSSSS、ESESESES)第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统 Reg是任何CPU中的通用RegAX,BX

18、,CXBPAH,AL 等 操作数在Reg中,无需访问存贮器,执行速度快。若选用AX,执行指令时间更短。2.2.寄存器寻址寄存器寻址 操作数存放在指令规定的8、16或32位Reg中,Reg名字出现在指令中。指令执行后,源操作数不变,目的操作数为源的内容。(1 1)直接寻址)直接寻址(EA立即数)有效地址EA直接在指令中给出,它存放在代码段操作码之后。操作数一般在数据段DS中,这是一种默认方式。将ES段中2000H、2001H单元内容分别送AL,AH(低对低,高对高)不管数据在那个段内存放,不管数据在那个段内存放,只要不是只要不是DS,一定要加段超越,一定要加段超越前缀。前缀。允许段超越 例:MO

19、V AX,ES:2000H (或 ES:MOV AX,2000H)第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统例:例:MOV AL,2000H;将DS段中2000H单元的内容送AL 若DS4000H,则物理地址为:4000H16+2000H42000H。见右图见右图.AXES:2000H2001H40000H42000H 直接寻址中EA可以以变量名的形式给出。例:VALUE DB 12H MOV AL,VALUE;VALUE又称为符号地址Reg使用规定如下:16位寻址时,EA在DIDI、SISI、BPBP、BXBX中,这时:若以若以DIDI、SISI、

20、BXBX间接寻址,则默认操作数在数据段中。间接寻址,则默认操作数在数据段中。操作数物理地址操作数物理地址DSDSDSDS1616BXBX(或(或SISI、DIDI)若以若以BPBP间接寻址,则默认操作数在堆栈段内。间接寻址,则默认操作数在堆栈段内。操作数物理地址操作数物理地址SSSSSSSS1616BPBP 若操作数不在以上规定段内,则必须在指令中加上段超越前缀。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统(2)Reg间接寻址间接寻址操作数的有效地址EA在指令的Reg中,即:EA(Reg)例:例:MOV AX,SI ;将DS段SISI1的内容送AL,A

21、H MOV BH,BP ;将SS段BP的内容送BH MOV CX,ES:BX ;将ES段BXBX1内容送CL,CH寄存器间接寻址示意图寄存器间接寻址示意图寄存器间接寻址示意图寄存器间接寻址示意图 32位寻址时,8个32位通用Reg均可作Reg间接寻址。例:例:MOV CH,EAXMOV DX,EBXMOV CH,EBPMOV DX,ESP 第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统除EBP、ESP默认SS为段Reg外,其余Reg默认DS,这种默认也可以允许段超越。例:MOV AX,BX 设DS4000H,BX=0100H 寄存器间接寻址示意 图如左。

22、(3)基址寻址)基址寻址 EA(基址(基址RegReg)位移量)位移量 位移量在指令中给出并与代码一起存放在代码段中。Reg使用规定如下:16位寻址时 BPBP、BXBX作基址作基址RegReg,其中,其中BPBP默认在默认在SSSS段,段,BXBX默认在默认在DSDS段段,位移量是8或16位,且跟在操作码之后存放在代码段中。EA 位移量BXBP8位16位物理地址DS16BX8位或16位位移量SS16BP8位或16位位移量例:例:MOV AX,BX+05或MOV AX,05BXMOV AX,COUNTBP8位或16为位移量第第2 2章章 80X86/Pentium 80X86/Pentium指

23、令系统指令系统第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统 3 2位寻址时 8个32位通用Reg均可作为 基址Reg。例:例:MOV DX,EAXTABLE MOV ECX,EBP50 除EBP、ESP以SS为默认段Reg外,其余6个Reg均以DS为默认段Reg。这时位移量是8、32位的。基址寻址示意图基址寻址示意图(MOV AL,BX+05)(4)变址寻址)变址寻址EA(变址寄存器)位移量(变址寄存器)位移量书写格式、寻址过程皆同基址寻址 16位寻址时SIDIEA 8位或16位位移量第第2 2章章 80X86/Pentium 80X86/Pentiu

24、m指令系统指令系统 32位寻址时,除ESP外,其余7个32位通用Reg均可作变址Reg,且EBP以SS为默认段Reg,其余以DS为默认段Reg。例:例:MOV EAX,5EBPMOV ECX,DATAEAX(5)比例变址寻址)比例变址寻址EA(变址Reg)比例因子位移量 例:例:MOV EAX,TABLEESI4CPU硬件完成(只适用于(只适用于32位寻址情况)位寻址情况)(6)基址加变址寻址)基址加变址寻址 EA(基址(基址Reg)(变址)(变址RegReg)16位寻址时 BX SI BP DIEA 32位寻址时 Reg的使用规定同前述(5)(4)(3)中。第第2 2章章 80X86/Pen

25、tium 80X86/Pentium指令系统指令系统注:注:当一种寻址方式中,当一种寻址方式中,基址、变址基址、变址Reg的默认的默认段段Reg不同时不同时,一般由,一般由基址基址Reg来决定默认段来决定默认段Reg,并允许段超越。,并允许段超越。例:例:MOV AX,BXSI (或MOVAX,BXSI)默认DS为段Reg。MOV EAX,EDXEBP 默认SS为段Reg。基址加变址寻址示意图基址加变址寻址示意图基址加变址寻址示意图基址加变址寻址示意图(8)带位移量的基址加变址寻址(又称为)带位移量的基址加变址寻址(又称为相对基址变址寻址相对基址变址寻址)EA(基址(基址Reg)(变址)(变址

26、Reg)位移量)位移量 有16位及32位寻址两种,基址Reg与变址Reg的规定同前,对段Reg的默认同前。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统例:例:MOV AH,MASKBXDI PADS16 BXSIMASK 示意图见右方示意图见右方(7)基址加比例变址寻址)基址加比例变址寻址 EA(基址(基址Reg)(变址)(变址Reg)比例因子比例因子 例:例:MOV ECX,EDX 4EAXMOV AX,EBX 8ESI(只适用于(只适用于32位寻址)位寻址)(9)带位移量的基址加比例变址寻址)带位移量的基址加比例变址寻址 EA(基址Reg)(变址R

27、eg)比例因子位移量 各种规定与默认同前。三、存贮器寻址时的段约定三、存贮器寻址时的段约定存贮器寻址时,一般并不在指令中给出段Reg,而是遵寻一 种约定(默认)方式。存储器操作类型默认段寄存器允许超过的段寄存器偏移地址寄存器取指令代码 CS (E)IP堆栈操作 SS (E)SP源串数据访问 DSCS,ES,SS,FS,GS (E)SI目的串数据访问 ES (E)DI通用数据访问 DSCS,ES,SS,FS,GS偏移地址EA以(E)BP,(E)SP间接寻址的指令 SSCS,ES,SS,FS,GS偏移地址EA第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统(只

28、适用于(只适用于32位寻址情况)位寻址情况)例:例:MOV AX,EDI8ECX40 或 MOV AX,EDI8ECX402.2 8086/80882.2 8086/8088指令系统指令系统第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统 8086/8088指令系统是80X86的基本指令集。指令的操作数宽度是8位或16位,偏移地址宽度是16位。数据传送类、算术运算类、逻辑运算与移位类、串操作类、控制转移类、处理器控制类。共分为6类指令的助记符 操作数的正确书写格式指令执行后对标志位的影响。要求掌握3.2.1 3.2.1 数据传送类指令数据传送类指令(最基本

29、、最重要、最常用的一类操作)1.存储器与寄存器2.寄存器与寄存器3.累加器与I/O端口4.立即数到Reg或存储器之间的数据传送。之间的数据传送。可实现可实现指令操作数符号说明规定如下页表所示:指令操作数符号说明规定如下页表所示:16位立即数 imm168位立即数 imm8立即数,长度可以是8位或16位。imm16位存储器 mem168位存储器 mem8存储器,长度可以是8位或16位。mem16位通用寄存器 reg168位通用寄存器 reg8段寄存器 Sreg通用寄存器,长度可以是8位或16位。reg在多操作数指令中,OPRD1为目标操作数,OPRD2源操作数OPRD1,OPRD2操作数 OPR

30、D 意义 符号 指令操作数符号说明指令操作数符号说明第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统 共有14条指令,分为4组,见表3-4。指令类型指令类型 指令功能指令功能 指令书写格式指令书写格式 通用数据传送 字节或字传送字压入堆栈字弹出堆栈字节或字交换字节翻译 表检索MOV 目标,源PUSH 源POP 目标XCHG 目标,源XLAT 地址传送 装入有效地址装入DS寄存器装入ES寄存器 LEA 目标,源LDS 目标,源LES 目标,源 标志位传送 将FR低字节装入AH寄存器将AH内容装入FR低字节将FR内容压入堆栈从堆栈弹出FR内容 LAHFSAHF

31、PUSHFPOPF I/O数据传送 输入字节或字输出字节或字 IN 累加器,端口OUT 端口,累加器 第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统除了SAHF和POPF指令外,其余指令执行后对标志位都没有没有影响。一、通用数据传送指令一、通用数据传送指令 共5条,它们(除XCHG外)是唯一允许以Sreg作为操作数的指令。1MOV指令 指令格式:MOV OPRD1,OPRD2;助记符汇编语言格式 OPRD2 OPRD1 两者可以是8/16位,但必须等长。MOV指令有如指令有如下一些形式:下一些形式:MOV reg/Sreg,regMOV reg,Sreg

32、MOV reg/Sreg,memMOV mem,reg/SregMOV reg,immMOV mem,imm 通用寄存器通用寄存器(AX,BX,CX,DX,BP SP,SI,DI)存存储储器器立立即即数数 段寄存器段寄存器 (CS,SS,DS,ES)传送关系示意图传送关系示意图第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统例:例:MOV AL,CH ;通用寄存器之间传送字节数据MOV DS,AX ;通用寄存器段寄存器(CS不能是目标)MOV AX,0FF3BH ;立即数通用寄存器MOV AL,BUFFER ;存储器通用寄存器MOV DATBP+DI,ES

33、 ;段寄存器存储器MOV 1000H,25H ;立即数存储器MOV CX,1000H ;存储器通用寄存器 使用使用使用使用MOVMOV指令传送数据时应该注意:指令传送数据时应该注意:指令传送数据时应该注意:指令传送数据时应该注意:立即数和段寄存器立即数和段寄存器CS不能作为目标操作数;不能作为目标操作数;立即数不能直接传送到段寄存器;(立即数不能直接传送到段寄存器;(MOVDS,1000H)两个存储单元之间不能直接传送数据(两个存储单元之间不能直接传送数据(可通过Reg做中介););两个段寄存器之间不能直接传送数据(两个段寄存器之间不能直接传送数据(MOV DS,ES)。(MOV AX,ES

34、MOV DS,AX)第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统2堆栈操作指令PUSH/POP 堆栈是按照LIFO原则组织的一段内存区域。内存区域。80X86规定堆栈设置在堆栈段(SS)内,用SP始终指向堆栈的始终指向堆栈的顶部。顶部。堆栈用于在子程序调用或处理中断时,保存当前的断点地址保存当前的断点地址(在(在8086/8088中为中为CS和和IP)和现场数据)和现场数据,以便子程序执行完毕后,正确返回到主程序。指令格式:PUSHOPRD2 POP OPRD1源操作数:通用Reg,Sreg,mem目标操作数:通用Reg,Sreg(CS除外),mem.

35、SSSP堆栈示意图第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统 断点地址的保存由子程序调用指令子程序调用指令或中断响应来完成(机器做);现场数据保存可通过堆栈操作指令通过堆栈操作指令来实现。堆栈操作时,一定是堆栈操作时,一定是堆栈操作时,一定是堆栈操作时,一定是1616位操作。位操作。位操作。位操作。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统具体的入具体的入/出栈指令如下出栈指令如下:PUSH reg16;POPreg16 PUSH Sreg ;POPSreg PUSH mem16;POPmem16指令格式:

36、PUSHOPRD2 ;SP SP-2 ;(SP1),(SP)OPRD2 POP OPRD1 ;OPRD1SP ;SP SP2指令指令PUSH AX的执行情况的执行情况注:注:1.程序中有一个PUSH,必有一个对应的POP。2.遵循后进先出原则。3.按字进行操作(PUSH AH ;POP BL(错误)4.PUSH CS ;POP CS(可以)(错误)3交换指令XCHG例:XCHG AX,BXXCHG 2530H,CX注:注:1.两个存储器操作数之间不能实现直接交换。2.段Reg和立即数不能作为操作数。指令格式:XCHG OPRD1,OPRD2 ;OPRD1 OPRD2;OPRD1、OPRD2 可

37、以是reg,mem4查表转换指令XLAT(或称换码指令)指令格式:XLAT ;AL BX+AL 或 XLAT OPRD ;完成一个字节的查表转换 将BX+AL做为有效地址EA,在一个表格中找出相应单元内容放入AL。此指令常用来将一种代码转换为另一种代码。使用方法如下:第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统 将待转换的代码组成表格,首地址将待转换的代码组成表格,首地址 BX,AL存放查找对象在存放查找对象在表中下标,指令执行后,表中下标,指令执行后,BX+AL AL,BX内容不变。内容不变。注:注:1.代码表须建立在数据段。2.代码表长度不超过25

38、6字节。3.执行指令前,BX 表首址 AL 查找对象在表中距首址的偏移量(下标)。4.XLAT中的操作数通常为码表首地址的名称。相应指令部分:MOV BX,OFFSET S-TAB MOV AL,4 XLAT S-TAB 例:例:将数字09的BCD码转换为7段LED显示器的显示代码。MOV BX,0800HMOV AL,4XLAT ;AL19H第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统数字09的BCD码对应的7段LED显示代码为:40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。将它们依次存放在偏移地址为0800H开始的

39、内存区域。则实现BCD码0100B转换的程序段为:分析运算符,取地址偏移量数据传送类指令数据传送类指令共有14条指令,分为4组。指令类型指令类型 指令功能指令功能 指令书写格式指令书写格式 通用数据传送通用数据传送 字节或字传送字节或字传送字压入堆栈字压入堆栈字弹出堆栈字弹出堆栈字节或字交换字节或字交换字节翻译字节翻译 MOV 目标,源目标,源PUSH 源源POP 目标目标XCHG 目标,源目标,源XLAT 地址传送 装入有效地址装入DS寄存器装入ES寄存器 LEA 目标,源LDS 目标,源LES 目标,源 标志位传送 将FR低字节装入AH寄存器将AH内容装入FR低字节将FR内容压入堆栈从堆栈

40、弹出FR内容 LAHFSAHFPUSHFPOPF I/O数据传送 输入字节或字输出字节或字 IN 累加器,端口OUT 端口,累加器 第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统除了SAHF和POPF指令外,其余指令执行后对标志位都没有没有影响。例:例:LEA AX,2728H ;AX=2728H LEA BX,BP+SI ;BX=BP+SI的值。LEA SP,0482H ;SP=0482H第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统二、地址传送指令二、地址传送指令(指令中的源操作数都必须是指令中的源操作数都必须

41、是memmem操作数)操作数)取存储器操作数在当前段内的有效地址送至16位通用Reg。1有效地址传送指令LEA 指令格式:LEA OPRD1,OPRD216位通用Regmem操作数注:注:MOVMOV指令与指令与LEALEA的不同:的不同:前者传送操作数的内容,后者传送操作数的地址。前者传送操作数的内容,后者传送操作数的地址。例:MOV DI ,TABLE ;DI TABLE LEA DI ,TABLE ;DI TABLE所在单元的EA通常有MOV BX,OFFSET VARWORDLEA BX,VARWORD两者效果一致两者效果一致例:比较 LEA BX,BUFFER MOV BX,BUFF

42、ER 两指令的不同存储单元内容如右图所示。存储单元内容如右图所示。DS:093AH,BUFFER 物理地址 093C3H 则 LEA BX,BUFFER后,BX=0023H MOV BX,BUFFER后,BX=0045H第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统 093A0H 093C3H.差23H45H00H2地址指针传送指令LDS和LES 指令格式:LDS(LES)OPRD1,OPRD216位RegMem操作数功能:将由源操作数偏移地址决定的双字单元中的第一个字的内容送入指令指定的16位通用寄存器,第二个字的内容传送给段寄存器DS或ES。reg1

43、6EADS EA+2例例2:LDS SI,10H 设指令执行前,DS=C000H,C0010H=0180H,C0012H=2000H 则执行后,SI=0180H,DS=2000H例例3:LDS BX,DI+1008H 程序执行前,DS=2500H,DI=2400H,28408H=3344H,2840AH=1122H 执行后,BX=3344H,DS=1122H第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统这种情况,往往在这种情况,往往在2130H,2131H单元存放着某个单元存放着某个偏移地址,偏移地址,2132H,2133H两单元存放着相应两单元存放着相

44、应的段地址。的段地址。例例1:LDS DI,2130H EA=2130H 2130H,2131H DI 2132H,2133H DS三、标志位传送指令三、标志位传送指令 标志位传送指令专门用于对标志寄存器(标志位传送指令专门用于对标志寄存器(FR)的保护和更新)的保护和更新操作。操作。指令的操作数隐含。指令的操作数隐含。2PUSHF/POPF(标志Reg入栈/出栈)PUSHF:将FR内容压入堆栈,同时修改堆栈指针。POPF :将当前栈顶的一个字 FR,同时修改堆栈指针。PUSHFPOP AXOR AH,01HPUSH AXPOPF 1LAHF/SAHF(读写标志寄存器)指令LAHF用于将FR的

45、低字节(含SF、ZF、AF、PF和CF)读出后传送到AH寄存器。这条指令本身不影响标志位。这条指令本身不影响标志位。SAHF与LAHF的操作相反。将寄存器AH中的内容写入FR的低字节,取代某些标志位(SF、ZF、AF、PF和CF)的原来状态。第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统利用这两条指令还可以方便的修改FR中某一位。如,86/8088系统中无直接能修改TF标志位的指令,可用右边程序实现:在子程序调用或中断子程序中,常用此保护和恢复需要的标志位。在子程序调用或中断子程序中,常用此保护和恢复需要的标志位。四、输入四、输入/输出数据传送指令输出数

46、据传送指令IN/OUTIN/OUTCPU用16根I/O地址线形成64K个8位数据传送端口地址。当传送16位数据时,形成32K个16位端口地址。当端口地址256(8根地址线)时,该地址直接出现在指令中。当端口地址256(816根地址线)时,该地址置于DX并将DX 放在 指令中。指令格式:IN 累加器,外设口地址 OUT 外设口地址,累加器第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统注:1.所有I/OI/O指令只能用累加器,不能用其他Reg.Reg.2.IN/OUTIN/OUT指令有字/字节两种方式,选用那一种则取决于外设端口宽度。具体指令有:具体指令有:

47、INAL,imm8 OUT imm8,AL INAX,imm8 OUT imm8,AX INAL,DX OUT DX,AL INAX,DX OUT DX,AX 例:例:IN AX,20H ;从端口20H20H输入1616位数到AXAX MOV DX,3F0H IN AL,DX ;从端口03F0H03F0H输入8 8位数到ALAL OUT 27H,AL ;将8 8位数从ALAL输出到端口27H27H OUT DX,AX ;将1616位数从AXAX输出到DXDX指定的端口第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统8086/80888086/8088在存储

48、器中存放数的方法在存储器中存放数的方法:num1单元中有一个16位数1234H,num2单元中有一个32位数12345678H。存放方式如右图:2.2.2 2.2.2 算术运算类指令(共算术运算类指令(共2020条)条)1.算术运算的数据类型算术运算的数据类型 加加 减减 乘乘 除除(带带 不不带带进进位位加加)(带带 不不带带借借位位减减)加加 减减加加 减减 乘乘 除除 压缩压缩BCDBCD数数 (无符号)无符号)非压缩非压缩BCDBCD数数(无符号)无符号)二进制数二进制数(无、有符号)无、有符号)第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统nu

49、m1num1num1+1num1+1num2num2num2+1num2+1num2+2num2+2num2+3num2+3 12H 34H 56H 78H 12H 34H压缩BCD数:一个字节 099非压缩BCD数:一个字节 091.1.加减法类指令加减法类指令(1 1)加减法指令)加减法指令ADD/SUBADD/SUB 指令格式:ADDADDOPRD1OPRD1,OPRD2OPRD2 SUB OPRD1 SUB OPRD1,OPRD2 OPRD2 ;OPRD1OPRD1 OPRD1 OPRD1 OPRD2 OPRD2 功能:完成两个操作数的加/减运算,结果送入目标操作数。源(Reg,mem

50、,imm),目标(Reg,mem),且两个操作数不能同时为mem.例例:设AX65A0H,BX=B79EH 执行 ADD BX,AX 具体执行情况如下:第第2 2章章 80X86/Pentium 80X86/Pentium指令系统指令系统一一.二进制算术运算指令二进制算术运算指令特征:特征:所有的算术类指令都影响Flag,这些标志可用于测试,以决定程序的走向。2.2.2.2.算术运算指令与标志算术运算指令与标志算术运算指令与标志算术运算指令与标志注:除注:除CBWCBW、CWDCWD不影响标志不影响标志,INC,INC、DECDEC不改变不改变CFCF外外第第2 2章章 80X86/Penti

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com