第4章 8086寻址方式与指系统.ppt

上传人:s****8 文档编号:67565011 上传时间:2022-12-25 格式:PPT 页数:194 大小:2.13MB
返回 下载 相关 举报
第4章 8086寻址方式与指系统.ppt_第1页
第1页 / 共194页
第4章 8086寻址方式与指系统.ppt_第2页
第2页 / 共194页
点击查看更多>>
资源描述

《第4章 8086寻址方式与指系统.ppt》由会员分享,可在线阅读,更多相关《第4章 8086寻址方式与指系统.ppt(194页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统本章主要内容本章主要内容 概述概述1 8086寻址方式寻址方式2 8086指令系统指令系统3第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.1 4.1 概述概述v指令是指挥计算机进行操作的命令。指令是指挥计算机进行操作的命令。v指令系统是指微处理器能执行的各种指令的指令系统是指微处理器能执行的各种指令的集合。集合。v程序程序是一系列按一定顺序排列的指令是一系列按一定顺序排列的指令。v执行程序的过程就是计算机的工作过程。执行程序的过程就是

2、计算机的工作过程。v微处理器的主要功能由它的指令系统来体现微处理器的主要功能由它的指令系统来体现。v不同的微处理器有不同的指令系统,其中每不同的微处理器有不同的指令系统,其中每一条指令对应着处理器的一种基本操作,这一条指令对应着处理器的一种基本操作,这在设计微处理器时确定。在设计微处理器时确定。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v通常一条指令包括两部分:通常一条指令包括两部分:操作码操作码:决定要完成的操作决定要完成的操作操作数操作数:指参加运算的数据或是指参加运算的数据或是该该数所在的内存单元数所在的内存单元的的地址。地址。v指令的一般格式指令的一般格式如下

3、如下:操作码操作码 操作数操作数1 1,操作数,操作数2 2,操作数,操作数nn没有操作数的指令称为没有操作数的指令称为无操作数指令无操作数指令。有两个操作数的指令称为有两个操作数的指令称为双操作数或二地址指令双操作数或二地址指令。v操作码和操作数地址都由二进制数码表示,整条操作码和操作数地址都由二进制数码表示,整条指令以二进制编码的形式存放在存储器中。指令以二进制编码的形式存放在存储器中。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统指令系统与寻址方式的重要性指令系统与寻址方式的重要性v采用采用不同不同CPUCPU的计算机的的计算机的指令系统不同指令系统不同。v采用采用

4、不同不同CPUCPU的计算机的的计算机的指令的格式指令的格式不同。不同。v采用采用不同不同CPUCPU的计算机的的计算机的各各指令允许的指令允许的寻址方式寻址方式不同不同。v要使用某种微处理器,必须先要掌握其指令系统要使用某种微处理器,必须先要掌握其指令系统和各指令允许的寻址方式。和各指令允许的寻址方式。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2 80864.2 8086寻址方式寻址方式v寻址方式寻址方式:指令中给出的指令中给出的求出操作数有效地址的方法。求出操作数有效地址的方法。v寻址操作寻址操作:计算机按照指令给出的寻址方式求出操作数有效地址计算机按照指令给

5、出的寻址方式求出操作数有效地址的过程。的过程。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统808808的的七种基本的数据寻址方式七种基本的数据寻址方式v(1)(1)立即寻址;立即寻址;v(2)(2)寄存器寻址;寄存器寻址;v(3)(3)直接寻址;直接寻址;v(4)(4)寄存器间接寻址;寄存器间接寻址;v(5)(5)寄存器相对寻址;寄存器相对寻址;v(6)(6)基址变址寻址;基址变址寻址;v(7)(7)相对基址变址寻址。相对基址变址寻址。存存储储器器寻寻址址方方式式第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.1 4.2.1 立即寻址立即寻址

6、v操作数直接出现在指令中,此时的操作数也叫立操作数直接出现在指令中,此时的操作数也叫立即数。即数。v立即数紧跟在操作码后面,一起存放在代码段中。立即数紧跟在操作码后面,一起存放在代码段中。v例如:例如:MOV AXMOV AX,2010H2010H在该指令格式中,在该指令格式中,AXAX是目标操作数,是目标操作数,2010H2010H是源操作是源操作数。数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统立即寻址方式的指令执行示意图立即寻址方式的指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统立即寻址方式说明立即寻址方式说明v在所有的指令中

7、,立即数只能作源操作数,不能作在所有的指令中,立即数只能作源操作数,不能作目标操作数。目标操作数。v立即数应与目标操作数的长度一致。立即数应与目标操作数的长度一致。v立即数默认采用十进制形式,以十六进制形式出现立即数默认采用十进制形式,以十六进制形式出现的立即数应以字母的立即数应以字母H H为后缀,以八进制形式出现的立为后缀,以八进制形式出现的立即数应以字母即数应以字母Q Q为后缀。为后缀。v以十六进制形式出现的立即数,若以字母开头,则以十六进制形式出现的立即数,若以字母开头,则必须以数字必须以数字0 0为前缀。为前缀。v立即数还可以用表示立即数还可以用表示+、-、/表示的算术表达式,表示的算

8、术表达式,也可以用圆括号改变运算顺序。也可以用圆括号改变运算顺序。v立即数只能是整数,不能是小数、变量或其它类型立即数只能是整数,不能是小数、变量或其它类型的数据。的数据。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.2 4.2.2 寄存器寻址寄存器寻址v操作数在寄存器中,在指令中指定寄存器号。操作数在寄存器中,在指令中指定寄存器号。v由于寄存器号短,因此,采用寄存器寻址方式由于寄存器号短,因此,采用寄存器寻址方式的指令的机器码长度短。的指令的机器码长度短。v操作数在寄存器中,指令执行时,操作就在操作数在寄存器中,指令执行时,操作就在CPUCPU的内部进行,不需要

9、通过访问存储器来取的内部进行,不需要通过访问存储器来取得操作数,因而指令的执行速度快。得操作数,因而指令的执行速度快。v在编程中,如有可能,应尽量在指令中使用这在编程中,如有可能,应尽量在指令中使用这种寻址方式。种寻址方式。v例如:例如:MOV AX MOV AX,2010H2010H第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式可用的寄存器寄存器寻址方式可用的寄存器v对于对于1616位操作数,寄存器可以是:位操作数,寄存器可以是:AXAX,BXBX,CXCX,DXDXSISI,DIDI,SPSP,BPBPCSCS,DSDS,SSSS和和ESESv对对8 8

10、位操作数,寄存器可以是:位操作数,寄存器可以是:AHAH,ALALBHBH,BLBLCHCH,CLCLDHDH,DLDL第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式指令执行示意图寄存器寻址方式指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式说明寄存器寻址方式说明v在一条指令中,寄存器寻址方式既可用于源操作在一条指令中,寄存器寻址方式既可用于源操作数,也可用于目标操作数,还可以两者都用寄存数,也可用于目标操作数,还可以两者都用寄存器寻址方式。器寻址方式。v源操作数与目标操作数的长度应一致。例如,不源操作数与目标

11、操作数的长度应一致。例如,不能将寄存器能将寄存器AXAX的内容传送到寄存器的内容传送到寄存器BHBH中,也不能中,也不能将寄存器将寄存器BHBH的内容传送到寄存器的内容传送到寄存器AXAX中。中。v两个操作数不能同时为段寄存器。两个操作数不能同时为段寄存器。v目标操作数不能是代码段寄存器。目标操作数不能是代码段寄存器。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.4 4.2.4 直接寻址直接寻址v操作数在存储器中,指令中以具体数值的形式直操作数在存储器中,指令中以具体数值的形式直接给出操作数所在存储单元的有效地址接给出操作数所在存储单元的有效地址EAEA。为了。为

12、了与立即数区别,该有效地址必须用与立即数区别,该有效地址必须用括起。括起。v例如:例如:MOV AX MOV AX,2010H2010H该指令的源操作数采用直接寻址方式。该指令的源操作数采用直接寻址方式。若若(DS)=2000H(DS)=2000H,那么指令执行后,那么指令执行后,(AX)=1225H(AX)=1225H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统直接寻址方式指令执行示意图直接寻址方式指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v采用直接寻址方式时,如果指令中没有用前缀说采用直接寻址方式时,如果指令中没有用前缀说明

13、操作数存放在哪个段,则操作数默认存放在数明操作数存放在哪个段,则操作数默认存放在数据段。据段。v80868086系统允许操作数存放在代码段、堆栈段或附系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中指明段超越。加段。此时,就需要在指令中指明段超越。v例如:例如:MOV ES:1225H MOV ES:1225H,AX AX 该指令的目标操作数采用直接寻址方式。操作数存放该指令的目标操作数采用直接寻址方式。操作数存放在由在由ESES指示的附加段中指示的附加段中。物理地址物理地址=ES=ES10H+1225H10H+1225H。第第4 4章章 80868086寻址方式与指令系统寻址

14、方式与指令系统v在汇编语言指令中,可以用符号地址代替数值地在汇编语言指令中,可以用符号地址代替数值地址。址。v例如:例如:MOV AX MOV AX,NUMANUMA此时,此时,NUMANUMA是存放操作数的内存单元的符号地址。是存放操作数的内存单元的符号地址。v上面这条指令还可以写成如下的形式:上面这条指令还可以写成如下的形式:MOV AX MOV AX,NUMANUMAv如如DATA1DATA1数据存放在附加段,则可以用如下的形数据存放在附加段,则可以用如下的形式指定段跨越前缀:式指定段跨越前缀:MOV AX MOV AX,ES:NUMAES:NUMA或或 MOV AX MOV AX,ES

15、:NUMAES:NUMA第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.4 4.2.4 寄存器间接寻址寄存器间接寻址v操作数的有效地址操作数的有效地址EAEA存放在基址寄存器存放在基址寄存器BXBX、BPBP或或变址寄存器变址寄存器SISI、DIDI中。中。v为了区别于寄存器寻址方式,指令中指定的寄存为了区别于寄存器寻址方式,指令中指定的寄存器名要用器名要用括起来。括起来。v指令中使用指令中使用SISI、DIDI、BXBX寄存器时,操作数默认存寄存器时,操作数默认存放在数据段中;使用放在数据段中;使用BPBP寄存器时,操作数默认存寄存器时,操作数默认存放在堆栈段中,

16、允许段超越。放在堆栈段中,允许段超越。v操作数的物理地址操作数的物理地址=(DS)=(DS)10H+(SI)/(DI)/(BX)10H+(SI)/(DI)/(BX)或或 (SS)(SS)10H+(BP)10H+(BP)第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:MOV AX MOV AX,SI SI v该指令的源操作数采用寄存器间接寻址方式。该指令的源操作数采用寄存器间接寻址方式。v若若(DS)=2000H(DS)=2000H,(SI)=2010H(SI)=2010H,那么指令执行后,那么指令执行后,(AX)=1225H(AX)=1225H。v如操作数不存

17、放在间址寄存器默认的段,则指如操作数不存放在间址寄存器默认的段,则指定段超越的指令可采用如下形式。定段超越的指令可采用如下形式。MOV AX MOV AX,ES:SIES:SI 此时,操作数的物理地址此时,操作数的物理地址=ES=ES10H+SI10H+SI。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器间接寻址方式指令执行示意图寄存器间接寻址方式指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.5 4.2.5 寄存器相对寻址寄存器相对寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址或变址是指令中指定的基址或变

18、址寄存器的值与位移量之和。寄存器的值与位移量之和。v指令中使用指令中使用SISI、DIDI、BXBX寄存器时,操作数默认存寄存器时,操作数默认存放在数据段中;使用放在数据段中;使用BPBP寄存器时,操作数默认存寄存器时,操作数默认存放在堆栈段中,允许段超越。放在堆栈段中,允许段超越。v操作数的物理地址操作数的物理地址=(DS)=(DS)10H+(SI)/(DI)/(BX)+810H+(SI)/(DI)/(BX)+8位或位或1616位位移量位位移量 或或 =(SS)=(SS)10H+(BP)+810H+(BP)+8位或位或1616位位移量位位移量第第4 4章章 80868086寻址方式与指令系统

19、寻址方式与指令系统v例如:例如:MOV AX MOV AX,8BX 8BX v该指令的源操作数采用寄存器相对寻址方式。该指令的源操作数采用寄存器相对寻址方式。v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,那么指令执,那么指令执行后,(行后,(AXAX)=1225H=1225H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器相对寻址方式的指令执行示意图寄存器相对寻址方式的指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器相对寻址说明寄存器相对寻址说明v偏移量是符号数,偏移量是符号数,8 8

20、位偏移量的取值范围为:位偏移量的取值范围为:00000FFH(0FFH(即即+127D+127D-128D)-128D);v1616位偏移量的取值范围为:位偏移量的取值范围为:000000000FFFFH(0FFFFH(即即+32767D+32767D-32768D)-32768D)。v80868086汇编允许用下面三种形式表示相对寻址,它汇编允许用下面三种形式表示相对寻址,它们是等效的。们是等效的。MOV AXMOV AX,BX+8 BX+8 MOV AXMOV AX,8BX 8BX MOV AXMOV AX,BX+8BX+8第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系

21、统4.2.64.2.6基址变址寻址基址变址寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址寄存是指令中指定的基址寄存器的值与变址寄存器的值之和。器的值与变址寄存器的值之和。v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存放时,操作数默认存放在数据段中;在数据段中;v使用基址寄存器使用基址寄存器BPBP时,操作数默认存放在堆栈时,操作数默认存放在堆栈段中,允许段超越。段中,允许段超越。v操作数的物理地址操作数的物理地址=(DSDS)10H+10H+(SISI)/(DIDI)+(BXBX)或或 =(SSSS)10H+10H+(SISI)/(DIDI)+(BPBP)

22、第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:MOV AXMOV AX,BX SI BX SI v该指令的源操作数采用基址变址寻址方式。该指令的源操作数采用基址变址寻址方式。v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,(,(SISI)=8H=8H,那么指令执行后,(那么指令执行后,(AXAX)=1225H=1225H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统基址变址寻址方式的指令执行示意图基址变址寻址方式的指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统

23、4.2.7 4.2.7 相对基址变址寻址相对基址变址寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址寄存器是指令中指定的基址寄存器的值与变址寄存器的值以及的值与变址寄存器的值以及8 8位或位或1616位位移量之位位移量之和。和。v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存放在时,操作数默认存放在数据段中;数据段中;v使用基址寄存器使用基址寄存器BPBP时,操作数默认存放在堆栈段时,操作数默认存放在堆栈段中,允许段超越。中,允许段超越。v操作数的物理地址操作数的物理地址=(DSDS)10H+10H+(SISI)/(DIDI)+(BXBX)+8+8位或位或16

24、16位位移量位位移量或或 =(SSSS)10H+10H+(SISI)/(DIDI)+(BPBP)+8+8位或位或1616位位移量位位移量第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:MOV AXMOV AX,3BX SI 3BX SI v该指令的源操作数采用寄存器相对寻址方式。该指令的源操作数采用寄存器相对寻址方式。v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,(,(SISI)=5H=5H,那么指令执行后,(那么指令执行后,(AXAX)=1225H=1225H。第第4 4章章 80868086寻址方式与指令系统寻址方

25、式与指令系统相对基址变址寻址方式的指令执行示意图相对基址变址寻址方式的指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.3 80864.3 8086指令系统指令系统v80868086指令系统包括六大类指令:指令系统包括六大类指令:v数据传送指令数据传送指令v算术运算指令算术运算指令v逻辑运算和移位指令逻辑运算和移位指令v串操作指令串操作指令v控制转移指令控制转移指令v处理器控制指令处理器控制指令第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v80868086汇编指令中的操作数可以有零个、一个或两汇编指令中的操作数可以有零个、一个或两个,

26、通常称为零地址、一地址或二地址指令。个,通常称为零地址、一地址或二地址指令。v二地址指令中的两个操作数分别称为源操作数和二地址指令中的两个操作数分别称为源操作数和目标操作数。目标操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.3.14.3.1数据传送指令数据传送指令v数据传送指令是将数据或地址传送到寄存器、存数据传送指令是将数据或地址传送到寄存器、存储单元或储单元或I/OI/O端口中。端口中。v分为分为5 5类:类:v通用数据传送指令;通用数据传送指令;v累加器专用传送指令;累加器专用传送指令;v地址传送指令;地址传送指令;v标志传送指令;标志传送指令;v数据类

27、型转换指令。数据类型转换指令。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统数据传送指令的共同特点数据传送指令的共同特点v除了除了POPFPOPF和和SAHFSAHF指令外,其他的数据传送指令的指令外,其他的数据传送指令的执行结果都不影响标志位。执行结果都不影响标志位。v指令中如果列出两个操作数,则指令的执行过程指令中如果列出两个操作数,则指令的执行过程是:目标操作数是:目标操作数源操作数。源操作数。v指令中如果仅列出一个操作数,则另一个操作数指令中如果仅列出一个操作数,则另一个操作数为隐含操作数。为隐含操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与

28、指令系统1.1.通用数据传送指令通用数据传送指令v1 1)传送指令传送指令v格式:格式:MOV MOV 目标操作数,源操作数目标操作数,源操作数 v功能:将源操作数的内容(一个字或一个字节)功能:将源操作数的内容(一个字或一个字节)传送到目标操作数指定的寄存器或内存单元,源传送到目标操作数指定的寄存器或内存单元,源操作数内容不变。例如:操作数内容不变。例如:MOV ALMOV AL,5 5;字节传送,立即数送通用寄存器;字节传送,立即数送通用寄存器MOV AXMOV AX,BXBX;字传送,通用寄存器送通用寄存器;字传送,通用寄存器送通用寄存器MOV DSMOV DS,AXAX;字传送,通用寄

29、存器送段寄存器;字传送,通用寄存器送段寄存器第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统MOVMOV指令的使用说明指令的使用说明v源操作数可以是立即数、寄存器或内存操作数。源操作数可以是立即数、寄存器或内存操作数。v目标操作数可以是寄存器或内存操作数。目标操作数可以是寄存器或内存操作数。v立即数和立即数和CSCS寄存器只能作为源操作数,不允许作寄存器只能作为源操作数,不允许作为目标操作数。为目标操作数。vIPIP和和PSWPSW都不都不可可作为源操作数或是目标操作数。作为源操作数或是目标操作数。v立即数不允许直接传送至立即数不允许直接传送至DSDS、ESES或或SSSS

30、寄存器。寄存器。v源操作数和目标操作数不允许同时是内存操作数,源操作数和目标操作数不允许同时是内存操作数,也不允许同时是段寄存器。也不允许同时是段寄存器。v源操作数和目标操作数的类型必须相同,即同为源操作数和目标操作数的类型必须相同,即同为字节类型或字类型。字节类型或字类型。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v2 2)数据交换指令数据交换指令v格式:格式:XCHGXCHG 目标操作数,源操作数目标操作数,源操作数 v功能:源操作数的内容(一个字或字节)与目标功能:源操作数的内容(一个字或字节)与目标操作数的内容(一个字或

31、字节)互换。操作数的内容(一个字或字节)互换。v例如:例如:XCHG BLXCHG BL,AHAH ;字节交换,寄存器与寄存器的内容交换;字节交换,寄存器与寄存器的内容交换XCHG AXXCHG AX,BXSIBXSI ;字交换,寄存器与内存单元的内容交换;字交换,寄存器与内存单元的内容交换第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统XCHGXCHG指令的使用说明指令的使用说明v源操作数和目标操作数都可以是寄存器或内存操源操作数和目标操作数都可以是寄存器或内存操作数。作数。v源操作数和目标操作数不可同时是内存操作数。源操作数和目标操作数不可同时是内存操作数。v源操作数和

32、目标操作数不可以同时是寄存器(累源操作数和目标操作数不可以同时是寄存器(累加器)加器)AXAX。v段寄存器、寄存器段寄存器、寄存器IPIP或立即数不可以作为源操作或立即数不可以作为源操作数或目标操作数。数或目标操作数。v例如:例如:XCHG AXXCHG AX,2011H2011H;源操作数不能是立即数源操作数不能是立即数XCHG CSXCHG CS,5SI5SI;CSCS不能作为操作数不能作为操作数XCHG AXXCHG AX,AX AX ;源操作数和目标操作数不可同是源操作数和目标操作数不可同是AXAX第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例4-14-

33、1】若两个字数据分别存储在内存单元】若两个字数据分别存储在内存单元NUM1NUM1和和NUM2NUM2中,编写汇编程序段将这两个内存单中,编写汇编程序段将这两个内存单元的内容互换。元的内容互换。v汇编程序段如下:汇编程序段如下:MOV AXMOV AX,NUM1 NUM1 XCHG AXXCHG AX,NUM2 NUM2 MOV NUM1MOV NUM1,AX AX 第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统堆栈堆栈v堆栈是一块按照堆栈是一块按照“后进先出后进先出”原则工作的内存区原则工作的内存区域。域。v把数据从栈顶存入堆栈中的操作称为入栈(或压把数据从栈顶存入堆栈

34、中的操作称为入栈(或压入);入);v把数据通过栈顶从堆栈中取出的操作称为出栈把数据通过栈顶从堆栈中取出的操作称为出栈(或弹出)。(或弹出)。v堆栈常被用于数据的暂存、交换、子程序的参数堆栈常被用于数据的暂存、交换、子程序的参数传递等场合。传递等场合。v在调用子程序或转入中断服务程序时,堆栈是默在调用子程序或转入中断服务程序时,堆栈是默认的被用于保存返回地址的内存区域。认的被用于保存返回地址的内存区域。v为了实现子程序或中断嵌套,也必须使用堆栈技为了实现子程序或中断嵌套,也必须使用堆栈技术。术。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v在在80868086系统中,堆栈

35、所在的段就是堆栈段,它可系统中,堆栈所在的段就是堆栈段,它可以占用的最大空间是以占用的最大空间是64KB64KB。v堆栈段的段地址由堆栈段的段地址由SSSS寄存器指示寄存器指示。v堆栈指针寄存器堆栈指针寄存器SPSP始终指示栈顶的偏移地址并随始终指示栈顶的偏移地址并随着入栈和出栈操作而自动变化。着入栈和出栈操作而自动变化。v当进行压入操作后堆栈指针当进行压入操作后堆栈指针达达到到定义定义值,表明堆值,表明堆栈满;当执行弹出操作后堆栈指针回到初值,表栈满;当执行弹出操作后堆栈指针回到初值,表明堆栈空。明堆栈空。v当栈满时,再压入数据,称为当栈满时,再压入数据,称为“堆栈溢出堆栈溢出”。第第4 4

36、章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v3)3)堆栈操作指令堆栈操作指令v80868086指令系统中指令系统中:v堆栈操作指令中操作数的类型只能是字,不能堆栈操作指令中操作数的类型只能是字,不能是字节。是字节。v立即数不能作为操作数。立即数不能作为操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统进栈指令进栈指令v格式:格式:PUSH PUSH 源操作数源操作数v功能:源操作数入栈。功能:源操作数入栈。v指令的执行如下操作:指令的执行如下操作:v(SP)(SP)(SP)-2 (SP)-2 v(SS:SP)(S

37、S:SP)源操作数源操作数 v说明:说明:v源操作数可以是寄存器或是内存操作数。源操作数可以是寄存器或是内存操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统出栈指令出栈指令v格式:格式:POP POP 目标操作数目标操作数v功能:数据出栈,存入目标操作数。功能:数据出栈,存入目标操作数。v指令的执行如下操作:指令的执行如下操作:v 目标操作数目标操作数(SS:SP)(SS:SP)v(SP)(SP)(SP)+2 (SP)+2 v说明:说明:v目标操作数可以是段寄存器、目标操作数可以是段寄存器、1616位寄存器或内存位寄存器或内存操作数。操作数。v当目标操作数是段寄存器

38、时,不能是当目标操作数是段寄存器时,不能是CSCS寄存器。寄存器。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统【例【例4-24-2】v设设(SS)=2011H(SS)=2011H,(SP)=0020H(SP)=0020H,依次执行下列汇编,依次执行下列汇编指令后,分析堆栈中的数据和寄存器指令后,分析堆栈中的数据和寄存器AXAX、BXBX、SPSP的变化情况。的变化情况。MOV AX,0103HMOV AX,0103HMOV BX,1228HMOV BX,1228HPUSH AXPUSH AXPUSH BXPUSH BXPOP BXPOP BX第第4 4章章 808680

39、86寻址方式与指令系统寻址方式与指令系统第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统2.2.累加器专用传送指令累加器专用传送指令v(1 1)换码指令)换码指令v格式一:格式一:XLATXLATv格式二:格式二:XLAT XLAT 表格首地址表格首地址 v功能:将内存表格中某一单元的值传送至寄存器功能:将内存表格中某一单元的值传送至寄存器ALAL,实现一种编码到另一种编码的转换。例如,实现一种编码到另一种编码的转换。例如,把字符的扫描码转换成把字符的扫描码转换成ASCIIASCII码。码。v指令的执行如下

40、操作:指令的执行如下操作:v把数据段中偏移地址为把数据段中偏移地址为BX+ALBX+AL的内存单元的内容的内存单元的内容送到送到ALAL中,即:中,即:(AL)(AL)(BX+AL)(BX+AL)。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统XLATXLAT指令使用说明指令使用说明v源操作数、目标操作数均隐含。源操作数、目标操作数均隐含。v该指令隐含说明:寄存器该指令隐含说明:寄存器BXBX保存内存表格的首地保存内存表格的首地址;寄存器址;寄存器ALAL保存表格中某单元在此表格中的偏保存表格中某单元在此表格中的偏移量。因此,在使用该指令之前,必须先初始化移量。因此,在使

41、用该指令之前,必须先初始化BXBX和和ALAL这两个寄存器。这两个寄存器。v该指令能访问的内存表格中的数据只能是字节类该指令能访问的内存表格中的数据只能是字节类型的。型的。v该指令能访问的内存表格的最大容量是该指令能访问的内存表格的最大容量是256256字节。字节。v格式二中的表格首地址部分,只是为了提高程序格式二中的表格首地址部分,只是为了提高程序的可读性而设置的。指令执行时,使用的可读性而设置的。指令执行时,使用BXBX的值作的值作为表格首地址。为表格首地址。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统XLATXLAT指令用法举例指令用法举例v若若(DS)=2000

42、H(DS)=2000H,(BX)=0020H(BX)=0020H,(AL)=9H(AL)=9H,v则执行指令则执行指令XLATXLAT后,后,(AL)=39H(AL)=39H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统(2 2)输入)输入/输出指令(输出指令(I/OI/O指令)指令)v(1 1)输入指令)输入指令v格式一:格式一:IN ALIN AL,端口地址,端口地址v格式二:格式二:IN AXIN AX,端口地址,端口地址v格式三:格式三:IN ALIN AL,DXDXv格式四:格式四:IN AXIN AX,DXDXv功能:从指令中指定的功能:从指令中指定的I/O

43、I/O端口读入一字节数据端口读入一字节数据到到ALAL或一个字数据到或一个字数据到AXAX。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统(2 2)输出指令)输出指令v格式一:格式一:OUT OUT 端口地址,端口地址,ALALv格式二:格式二:OUT OUT 端口地址,端口地址,AXAXv格式三:格式三:OUT DXOUT DX,ALALv格式四:格式四:OUT DXOUT DX,AXAXv功能:将功能:将ALAL或或AXAX的内容输出到一个的内容输出到一个8 8位位I/OI/O端口或端口或1616位位I/OI/O端口。端口。第第4 4章章 80868086寻址方式与指

44、令系统寻址方式与指令系统IN/OUTIN/OUT指令的使用说明指令的使用说明v采用格式一和格式二时,端口地址的取值范围是:采用格式一和格式二时,端口地址的取值范围是:0 0FFHFFH,可以寻址,可以寻址256256个个I/OI/O端口。端口。v当端口地址值超过当端口地址值超过255D255D时,只能采用格式三或格时,只能采用格式三或格式四,把端口地址保存到寄存器式四,把端口地址保存到寄存器DXDX中,此时,端中,此时,端口地址的取值范围是:口地址的取值范围是:0 0FFFFHFFFFH,可以寻址,可以寻址6553665536个个I/OI/O端口。端口。v当端口是当端口是8 8位时,目标操作数

45、选用位时,目标操作数选用ALAL寄存器;当寄存器;当端口是端口是1616位时,目标操作数选位时,目标操作数选AXAX寄存器。寄存器。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统IN/OUTIN/OUT指令的使用举例指令的使用举例vMOV DX,60HMOV DX,60H;端口地址送端口地址送DXDX寄存器中寄存器中vIN AL,DXIN AL,DX;从从60H60H端口写入一个端口写入一个8 8位数位数vOUT 90H,AXOUT 90H,AX;将将1616位数输出到位数输出到90H90H端口端口第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统3.3

46、.地址传送指令地址传送指令v在汇编程序中,地址是一种特殊操作数,区别于在汇编程序中,地址是一种特殊操作数,区别于一般数据操作数,它无符号,长度为一般数据操作数,它无符号,长度为1616位。位。v在在80868086系统中,有系统中,有专门的指令进行地址传送。专门的指令进行地址传送。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统(1 1)取有效地址指令)取有效地址指令LEALEAv格式:格式:LEA r16LEA r16,memmemv功能:取内存单元功能:取内存单元memmem的有效地址,送到的有效地址,送到1616位寄位寄存器存器r16r16中,即:中,即:r16 r1

47、6 EA(mem)EA(mem)。v例如,设例如,设DS=2100HDS=2100H,BX=100HBX=100H,SI=10HSI=10H,(DS:110H)=1234H(DS:110H)=1234H,则指令:,则指令:vLEA BX,BX+SI LEA BX,BX+SI v执行后,执行后,(BX)=(BX)+(SI)=110H(BX)=(BX)+(SI)=110H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)地址指针装入)地址指针装入DSDS指令指令LDSLDSv格式:格式:LDS r16LDS r16,m32m32v功能:把内存中的功能:把内存中的32

48、32位源操作数中的低位源操作数中的低1616位送到位送到指定寄存器指定寄存器r16r16中,高中,高1616位送到段寄存器位送到段寄存器DSDS中。中。即:即:r16 r16 m32 m32低低1616位;位;DSDS m32 m32高高1616位。位。v(3 3)地址指针装入)地址指针装入ESES指令指令LESLESv把上述指令中的把上述指令中的DSDS换成换成ESES,即成为,即成为LESLES指令。指令。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.4.标志传送指令标志传送指令v标志寄存器用于记载指令执行引起的状态变化及标志寄存器用于记载指令执行引起的状态变化及

49、一些特殊控制位,以此作为控制程序执行的依据。一些特殊控制位,以此作为控制程序执行的依据。v标志寄存器是特殊寄存器,不能像一般数据寄存标志寄存器是特殊寄存器,不能像一般数据寄存器那样随意操作,以免其中的值发生变化。器那样随意操作,以免其中的值发生变化。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(1 1)取标志指令)取标志指令LAHFLAHFv格式:格式:LAHFLAHFv该指令中的源操作数隐含为标志寄存器低该指令中的源操作数隐含为标志寄存器低8 8位,位,目标操作数隐含为目标操作数隐含为AHAH。v功能:把功能:把1616位的标志寄存器低位的标志寄存器低8 8位送寄存

50、器位送寄存器AHAH。v(2 2)置标志指令)置标志指令SAHFSAHFv格式:格式:SAHFSAHFv该指令中的源操作数隐含为该指令中的源操作数隐含为AHAH,目标操作数隐含,目标操作数隐含为标志寄存器。为标志寄存器。v功能:把寄存器功能:把寄存器AHAH中内容送至中内容送至1616位的标志寄存器位的标志寄存器低低8 8位位,此操作是此操作是LAHFLAHF的逆操作。的逆操作。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例4-34-3】编写汇编程序段,把标志寄存器的编写汇编程序段,把标志寄存器的CFCF位求反,其他位不变。位求反,其他位不变。LAHFLAHF;

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

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁