第3章086寻址方式与指令系统

上传人:仙*** 文档编号:67998898 上传时间:2022-04-01 格式:PPT 页数:195 大小:1.20MB
返回 下载 相关 举报
第3章086寻址方式与指令系统_第1页
第1页 / 共195页
第3章086寻址方式与指令系统_第2页
第2页 / 共195页
第3章086寻址方式与指令系统_第3页
第3页 / 共195页
点击查看更多>>
资源描述
第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统本章主要内容本章主要内容 概述概述1 8086寻址方式寻址方式2 8086指令系统指令系统3第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.1 3.1 概述概述v指令是指挥计算机进行操作的命令。指令是指挥计算机进行操作的命令。v指令系统是指微处理器能执行的各种指令的指令系统是指微处理器能执行的各种指令的集合。集合。v程序是一系列按一定顺序排列的指令。程序是一系列按一定顺序排列的指令。v执行程序的过程就是计算机的工作过程。执行程序的过程就是计算机的工作过程。v微处理器的主要功能由它的指令系统来体现。微处理器的主要功能由它的指令系统来体现。v不同的微处理器有不同的指令系统,其中每不同的微处理器有不同的指令系统,其中每一条指令对应着处理器的一种基本操作,这一条指令对应着处理器的一种基本操作,这在设计微处理器时确定。在设计微处理器时确定。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v通常一条指令包括两部分:通常一条指令包括两部分: 操作码操作码: :决定要完成的操作决定要完成的操作 操作数操作数: :指参加运算的数据或是该数所在的内存单元指参加运算的数据或是该数所在的内存单元的地址。的地址。v指令的一般格式如下:指令的一般格式如下:操作码操作码 操作数操作数1 1,操作数,操作数2 2,操作数,操作数nn 没有操作数的指令称为没有操作数的指令称为无操作数指令无操作数指令。 有两个操作数的指令称为有两个操作数的指令称为双操作数或二地址指令双操作数或二地址指令。v操作码和操作数地址都由二进制数码表示,整条操作码和操作数地址都由二进制数码表示,整条指令以二进制编码的形式存放在存储器中。指令以二进制编码的形式存放在存储器中。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统指令系统与寻址方式的重要性指令系统与寻址方式的重要性v采用采用不同不同CPUCPU的计算机的的计算机的指令系统不同。指令系统不同。v采用采用不同不同CPUCPU的计算机的的计算机的指令的格式不同。指令的格式不同。v采用采用不同不同CPUCPU的计算机的各指令允许的的计算机的各指令允许的寻址方式寻址方式不同不同。v要使用某种微处理器,必须先要掌握其指令系统要使用某种微处理器,必须先要掌握其指令系统和各指令允许的寻址方式。和各指令允许的寻址方式。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2 80863.2 8086寻址方式寻址方式v寻址方式:寻址方式: 指令中给出的求出操作数有效地址的方法。指令中给出的求出操作数有效地址的方法。v寻址操作:寻址操作: 计算机按照指令给出的寻址方式求出操作数有效地计算机按照指令给出的寻址方式求出操作数有效地址的过程。址的过程。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统808808的七种基本的数据寻址方式的七种基本的数据寻址方式v(1)(1)立即寻址;立即寻址;v(2)(2)寄存器寻址;寄存器寻址;v(3)(3)直接寻址;直接寻址;v(4)(4)寄存器间接寻址;寄存器间接寻址;v(5)(5)寄存器相对寻址;寄存器相对寻址;v(6)(6)基址变址寻址;基址变址寻址;v(7)(7)相对基址变址寻址。相对基址变址寻址。存存储储器器寻寻址址方方式式第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.1 3.2.1 立即寻址立即寻址v操作数直接出现在指令中,此时的操作数也叫立操作数直接出现在指令中,此时的操作数也叫立即数。即数。v立即数紧跟在操作码后面,一起存放在代码段中立即数紧跟在操作码后面,一起存放在代码段中。v例如:例如:MOV AXMOV AX,2010H2010H 在该指令格式中,在该指令格式中,AXAX是目标操作数,是目标操作数,2010H2010H是源操作是源操作数。数。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统立即寻址方式的指令执行示意立即寻址方式的指令执行示意图图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统立即寻址方式说明立即寻址方式说明v在所有的指令中,立即数只能作源操作数,不能作在所有的指令中,立即数只能作源操作数,不能作目标操作数。目标操作数。v立即数应与目标操作数的长度一致。立即数应与目标操作数的长度一致。v立即数默认采用十进制形式,以十六进制形式出现立即数默认采用十进制形式,以十六进制形式出现的立即数应以字母的立即数应以字母H H为后缀,以八进制形式出现的立为后缀,以八进制形式出现的立即数应以字母即数应以字母Q Q为后缀。为后缀。v以十六进制形式出现的立即数,若以字母开头,则以十六进制形式出现的立即数,若以字母开头,则必须以数字必须以数字0 0为前缀。为前缀。v立即数还可以用表示立即数还可以用表示+ +、- -、/ /表示的算术表达式表示的算术表达式,也可以用圆括号改变运算顺序。,也可以用圆括号改变运算顺序。v立即数只能是整数,不能是小数、变量或其它类型立即数只能是整数,不能是小数、变量或其它类型的数据。的数据。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.2 3.2.2 寄存器寻址寄存器寻址v操作数在寄存器中,在指令中指定寄存器号。操作数在寄存器中,在指令中指定寄存器号。v由于寄存器号短,因此,采用寄存器寻址方式由于寄存器号短,因此,采用寄存器寻址方式的指令的机器码长度短。的指令的机器码长度短。v操作数在寄存器中,指令执行时,操作就在操作数在寄存器中,指令执行时,操作就在CPUCPU的内部进行,不需要通过访问存储器来取的内部进行,不需要通过访问存储器来取得操作数,因而指令的执行速度快。得操作数,因而指令的执行速度快。v在编程中,如有可能,应尽量在指令中使用这在编程中,如有可能,应尽量在指令中使用这种寻址方式。种寻址方式。v例如:例如: MOV AXMOV AX,2010H2010H第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式可用的寄存器寄存器寻址方式可用的寄存器v对于对于1616位操作数,寄存器可以是:位操作数,寄存器可以是: AXAX,BXBX,CXCX,DXDX SISI,DIDI,SPSP,BPBP CSCS,DSDS,SSSS和和ESESv对对8 8位操作数,寄存器可以是:位操作数,寄存器可以是: AHAH,ALAL BHBH,BLBL CHCH,CLCL DHDH,DLDL第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式指令执行示意图寄存器寻址方式指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式说明寄存器寻址方式说明v在一条指令中,寄存器寻址方式既可用于源操作在一条指令中,寄存器寻址方式既可用于源操作数,也可用于目标操作数,还可以两者都用寄存数,也可用于目标操作数,还可以两者都用寄存器寻址方式。器寻址方式。v源操作数与目标操作数的长度应一致。例如,不源操作数与目标操作数的长度应一致。例如,不能将寄存器能将寄存器AXAX的内容传送到寄存器的内容传送到寄存器BHBH中,也不能中,也不能将寄存器将寄存器BHBH的内容传送到寄存器的内容传送到寄存器AXAX中。中。v两个操作数不能同时为段寄存器。两个操作数不能同时为段寄存器。v目标操作数不能是代码段寄存器。目标操作数不能是代码段寄存器。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.4 3.2.4 直接寻址直接寻址v操作数在存储器中,指令中以具体数值的形式直操作数在存储器中,指令中以具体数值的形式直接给出操作数所在存储单元的有效地址接给出操作数所在存储单元的有效地址EAEA。为了。为了与立即数区别,该有效地址必须用与立即数区别,该有效地址必须用括起。括起。v例如:例如: MOV AXMOV AX,2010H2010H 该指令的源操作数采用直接寻址方式。该指令的源操作数采用直接寻址方式。 若若(DS)=2000H(DS)=2000H,那么指令执行后,那么指令执行后,(AX)=1225H(AX)=1225H。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统直接寻址方式指令执行示意图直接寻址方式指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v采用直接寻址方式时,如果指令中没有用前缀说采用直接寻址方式时,如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数明操作数存放在哪个段,则操作数默认存放在数据段。据段。v80868086系统允许操作数存放在代码段、堆栈段或附系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中指明段超越。加段。此时,就需要在指令中指明段超越。v例如:例如: MOV ES:1225HMOV ES:1225H,AX AX 该指令的目标操作数采用直接寻址方式。操作数存该指令的目标操作数采用直接寻址方式。操作数存放在由放在由ESES指示的附加段中。指示的附加段中。 物理地址物理地址=ES=ES10H+1225H10H+1225H。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v在汇编语言指令中,可以用符号地址代替数值地在汇编语言指令中,可以用符号地址代替数值地址。址。v例如:例如: MOV AXMOV AX,NUMANUMA 此时,此时,NUMANUMA是存放操作数的内存单元的符号地址。是存放操作数的内存单元的符号地址。v上面这条指令还可以写成如下的形式:上面这条指令还可以写成如下的形式: MOV AXMOV AX,NUMANUMAv如如DATA1DATA1数据存放在附加段,则可以用如下的形数据存放在附加段,则可以用如下的形式指定段跨越前缀:式指定段跨越前缀: MOV AXMOV AX,ES: NUMAES: NUMA或或 MOV AXMOV AX,ES: NUMAES: NUMA第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.4 3.2.4 寄存器间接寻址寄存器间接寻址v操作数的有效地址操作数的有效地址EAEA存放在基址寄存器存放在基址寄存器BXBX、BPBP或或变址寄存器变址寄存器SISI、DIDI中。中。v为了区别于寄存器寻址方式,指令中指定的寄存为了区别于寄存器寻址方式,指令中指定的寄存器名要用器名要用括起来。括起来。v指令中使用指令中使用SISI、DIDI、BXBX寄存器时,操作数默认存寄存器时,操作数默认存放在数据段中;使用放在数据段中;使用BPBP寄存器时,操作数默认存寄存器时,操作数默认存放在堆栈段中,允许段超越。放在堆栈段中,允许段超越。v操作数的物理地址操作数的物理地址=(DS)=(DS)10H+(SI)/(DI)/(BX) 10H+(SI)/(DI)/(BX) 或或 (SS)(SS)10H+(BP)10H+(BP)第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如: MOV AXMOV AX,SI SI v该指令的源操作数采用寄存器间接寻址方式。该指令的源操作数采用寄存器间接寻址方式。v若若(DS)=2000H(DS)=2000H,(SI)=2010H(SI)=2010H,那么指令执行后,那么指令执行后,(AX)=1225H(AX)=1225H。v如操作数不存放在间址寄存器默认的段,则指如操作数不存放在间址寄存器默认的段,则指定段超越的指令可采用如下形式。定段超越的指令可采用如下形式。 MOV AXMOV AX,ES:SIES:SI 此时,操作数的物理地址此时,操作数的物理地址=ES=ES10H+SI10H+SI。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器间接寻址方式指令执行示意图寄存器间接寻址方式指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.5 3.2.5 寄存器相对寻址寄存器相对寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址或变址是指令中指定的基址或变址寄存器的值与位移量之和。寄存器的值与位移量之和。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位位移量位位移量第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如: MOV AXMOV AX,8BX 8BX v该指令的源操作数采用寄存器相对寻址方式。该指令的源操作数采用寄存器相对寻址方式。v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,那么指令执,那么指令执行后,(行后,(AXAX)=1225H=1225H。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器相对寻址方式的指令执行示意图寄存器相对寻址方式的指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器相对寻址说明寄存器相对寻址说明v偏移量是符号数,偏移量是符号数,8 8位偏移量的取值范围为:位偏移量的取值范围为: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第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.63.2.6基址变址寻址基址变址寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址寄是指令中指定的基址寄存器的值与变址寄存器的值之和。存器的值与变址寄存器的值之和。v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存时,操作数默认存放在数据段中;放在数据段中;v使用基址寄存器使用基址寄存器BPBP时,操作数默认存放在堆时,操作数默认存放在堆栈段中,允许段超越。栈段中,允许段超越。v操作数的物理地址操作数的物理地址= =(DSDS)10H+10H+(SISI)/ /(DIDI)+ +(BXBX)或或 = =(SSSS)10H+10H+(SISI)/ /(DIDI)+ +(BPBP)第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:MOV AXMOV AX,BX SI BX SI v该指令的源操作数采用基址变址寻址方式。该指令的源操作数采用基址变址寻址方式。v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,(,(SISI)=8H=8H,那么指令执行后,(那么指令执行后,(AXAX)=1225H=1225H。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统基址变址寻址方式的指令执行示意图基址变址寻址方式的指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.7 3.2.7 相对基址变址寻址相对基址变址寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址寄存器是指令中指定的基址寄存器的值与变址寄存器的值以及的值与变址寄存器的值以及8 8位或位或1616位位移量之位位移量之和。和。v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存放在时,操作数默认存放在数据段中;数据段中;v使用基址寄存器使用基址寄存器BPBP时,操作数默认存放在堆栈段时,操作数默认存放在堆栈段中,允许段超越。中,允许段超越。v操作数的物理地址操作数的物理地址= =(DSDS)10H+10H+(SISI)/ /(DIDI)+ +(BXBX)+8+8位或位或1616位位移量位位移量或或 = =(SSSS)10H+10H+(SISI)/ /(DIDI)+ +(BPBP)+8+8位或位或1616位位移量位位移量第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:MOV AXMOV AX,3BX SI 3BX SI v该指令的源操作数采用寄存器相对寻址方式。该指令的源操作数采用寄存器相对寻址方式。v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,(,(SISI)=5H=5H,那么指令执行后,(那么指令执行后,(AXAX)=1225H=1225H。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统相对基址变址寻址方式的指令执行示意图相对基址变址寻址方式的指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.3 80863.3 8086指令系统指令系统v80868086指令系统包括六大类指令:指令系统包括六大类指令:v数据传送指令数据传送指令v算术运算指令算术运算指令v逻辑运算和移位指令逻辑运算和移位指令v串操作指令串操作指令v控制转移指令控制转移指令v处理器控制指令处理器控制指令第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v80868086汇编指令中的操作数可以有零个、一个或两汇编指令中的操作数可以有零个、一个或两个,通常称为零地址、一地址或二地址指令。个,通常称为零地址、一地址或二地址指令。v二地址指令中的两个操作数分别称为源操作数和二地址指令中的两个操作数分别称为源操作数和目标操作数。目标操作数。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.3.13.3.1数据传送指令数据传送指令v数据传送指令是将数据或地址传送到寄存器、存数据传送指令是将数据或地址传送到寄存器、存储单元或储单元或I/OI/O端口中。端口中。v包括包括5 5类:类:v通用数据传送指令;通用数据传送指令;v累加器专用传送指令;累加器专用传送指令;v地址传送指令;地址传送指令;v标志传送指令;标志传送指令;v数据类型转换指令。数据类型转换指令。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统数据传送指令的共同特点数据传送指令的共同特点v除了除了POPFPOPF和和SAHFSAHF指令外,其他的数据传送指令的指令外,其他的数据传送指令的执行结果都不影响标志位。执行结果都不影响标志位。v指令中如果列出两个操作数,则指令的执行过程指令中如果列出两个操作数,则指令的执行过程是:目标操作数是:目标操作数源操作数。源操作数。v指令中如果仅列出一个操作数,则另一个操作数指令中如果仅列出一个操作数,则另一个操作数为隐含操作数。为隐含操作数。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v1 1)传送指令)传送指令v格式:格式:MOV MOV 目标操作数,源操作数目标操作数,源操作数 v功能:将源操作数的内容(一个字或一个字节)功能:将源操作数的内容(一个字或一个字节)传送到目标操作数指定的寄存器或内存单元,源传送到目标操作数指定的寄存器或内存单元,源操作数内容不变。操作数内容不变。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统MOVMOV指令举例指令举例MOV ALMOV AL,5 5;字节传送,立即数送通用寄存器;字节传送,立即数送通用寄存器MOV AXMOV AX,BXBX;字传送,通用寄存器送通用寄存器;字传送,通用寄存器送通用寄存器MOV DSMOV DS,AXAX ;字传送,通用寄存器送段寄存器;字传送,通用寄存器送段寄存器第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统MOVMOV指令的使用说明指令的使用说明v源操作数可以是立即数、寄存器或内存操作数。源操作数可以是立即数、寄存器或内存操作数。v目标操作数可以是寄存器或内存操作数。目标操作数可以是寄存器或内存操作数。v立即数和立即数和CSCS寄存器只能作为源操作数,不允许作寄存器只能作为源操作数,不允许作为目标操作数。为目标操作数。vIPIP和和PSWPSW都不可作为源操作数或是目标操作数。都不可作为源操作数或是目标操作数。v立即数不允许直接传送至立即数不允许直接传送至DSDS、ESES或或SSSS寄存器。寄存器。v源操作数和目标操作数不允许同时是内存操作数源操作数和目标操作数不允许同时是内存操作数,也不允许同时是段寄存器。,也不允许同时是段寄存器。v源操作数和目标操作数的类型必须相同,即同为源操作数和目标操作数的类型必须相同,即同为字节类型或字类型。字节类型或字类型。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令(续)通用数据传送指令(续)v2 2)数据交换指令)数据交换指令v格式:格式:XCHGXCHG 目标操作数,源操作数目标操作数,源操作数 v功能:源操作数的内容(一个字或字节)与目标功能:源操作数的内容(一个字或字节)与目标操作数的内容(一个字或字节)互换。操作数的内容(一个字或字节)互换。v例如:例如:XCHG BLXCHG BL,AHAH ;字节交换,寄存器与寄存器的内容交换;字节交换,寄存器与寄存器的内容交换XCHG AXXCHG AX,BXSIBXSI ;字交换,寄存器与内存单元的内容交换;字交换,寄存器与内存单元的内容交换第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统XCHGXCHG指令的使用说明指令的使用说明v源操作数和目标操作数都可以是寄存器或内存操源操作数和目标操作数都可以是寄存器或内存操作数。作数。v源操作数和目标操作数不可同时是内存操作数。源操作数和目标操作数不可同时是内存操作数。v源操作数和目标操作数不可以同时是寄存器(累源操作数和目标操作数不可以同时是寄存器(累加器)加器)AXAX。v段寄存器、寄存器段寄存器、寄存器IPIP或立即数不可以作为源操作或立即数不可以作为源操作数或目标操作数。数或目标操作数。v例如:例如:XCHG AXXCHG AX,2011H2011H;源操作数不能是立即数源操作数不能是立即数XCHG CSXCHG CS,5SI5SI;CSCS不能作为操作数不能作为操作数XCHG AXXCHG AX,AX AX ;源操作数和目标操作数不可同是源操作数和目标操作数不可同是AXAX第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-13-1】若两个字数据分别存储在内存单元】若两个字数据分别存储在内存单元NUM1NUM1和和NUM2NUM2中,编写汇编程序段将这两个内存单中,编写汇编程序段将这两个内存单元的内容互换。元的内容互换。v汇编程序段如下:汇编程序段如下:MOV AXMOV AX,NUM1 NUM1 XCHG AXXCHG AX,NUM2 NUM2 MOV NUM1MOV NUM1,AX AX 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统堆栈堆栈v堆栈是一块按照堆栈是一块按照“后进先出后进先出”原则工作的内存区原则工作的内存区域。域。v把数据从栈顶存入堆栈中的操作称为入栈(或压把数据从栈顶存入堆栈中的操作称为入栈(或压入);入);v把数据通过栈顶从堆栈中取出的操作称为出栈(把数据通过栈顶从堆栈中取出的操作称为出栈(或弹出)。或弹出)。v堆栈常被用于数据的暂存、交换、子程序的参数堆栈常被用于数据的暂存、交换、子程序的参数传递等场合。传递等场合。v在调用子程序或转入中断服务程序时,堆栈是默在调用子程序或转入中断服务程序时,堆栈是默认的被用于保存返回地址的内存区域。认的被用于保存返回地址的内存区域。v为了实现子程序或中断嵌套,也必须使用堆栈技为了实现子程序或中断嵌套,也必须使用堆栈技术。术。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v在在80868086系统中,堆栈所在的段就是堆栈段,它可系统中,堆栈所在的段就是堆栈段,它可以占用的最大空间是以占用的最大空间是64KB64KB。v堆栈段的段地址由堆栈段的段地址由SSSS寄存器指示。寄存器指示。v堆栈指针寄存器堆栈指针寄存器SPSP始终指示栈顶的偏移地址并随始终指示栈顶的偏移地址并随着入栈和出栈操作而自动变化。着入栈和出栈操作而自动变化。v当进行压入操作后堆栈指针达到定义值,表明堆当进行压入操作后堆栈指针达到定义值,表明堆栈满;当执行弹出操作后堆栈指针回到初值,表栈满;当执行弹出操作后堆栈指针回到初值,表明堆栈空。明堆栈空。v当栈满时,再压入数据,称为当栈满时,再压入数据,称为“堆栈溢出堆栈溢出”。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令(续)通用数据传送指令(续)v3)3)堆栈操作指令堆栈操作指令v80868086指令系统中:指令系统中:v堆栈操作指令中操作数的类型只能是字,不能是堆栈操作指令中操作数的类型只能是字,不能是字节。字节。v立即数不能作为操作数。立即数不能作为操作数。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统进栈指令进栈指令v格式:格式:PUSH PUSH 源操作数源操作数v功能:源操作数入栈。功能:源操作数入栈。v指令的执行如下操作:指令的执行如下操作:v (SP) (SP) -2 (SP) (SP) -2 v (SS:SP) (SS:SP)源操作数源操作数 v说明:说明:v源操作数可以是寄存器或是内存操作数。源操作数可以是寄存器或是内存操作数。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统出栈指令出栈指令v格式:格式:POP POP 目标操作数目标操作数v功能:数据出栈,存入目标操作数。功能:数据出栈,存入目标操作数。v指令的执行如下操作:指令的执行如下操作:v 目标操作数目标操作数(SS:SP) (SS:SP) v (SP) (SP) +2 (SP) (SP) +2 v说明:说明:v目标操作数可以是段寄存器、目标操作数可以是段寄存器、1616位寄存器或内存位寄存器或内存操作数。操作数。v当目标操作数是段寄存器时,不能是当目标操作数是段寄存器时,不能是CSCS寄存器。寄存器。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统【例【例3-23-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第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统2.2.累加器专用传送指令累加器专用传送指令v(1 1)换码指令)换码指令v格式一:格式一:XLATXLATv格式二:格式二:XLAT XLAT 表格首地址表格首地址 v功能:将内存表格中某一单元的值传送至寄存器功能:将内存表格中某一单元的值传送至寄存器ALAL,实现一种编码到另一种编码的转换。例如,实现一种编码到另一种编码的转换。例如,把字符的扫描码转换成把字符的扫描码转换成ASCIIASCII码。码。v指令的执行如下操作:指令的执行如下操作:v把数据段中偏移地址为把数据段中偏移地址为BX+ALBX+AL的内存单元的内容的内存单元的内容送到送到ALAL中,即:中,即:(AL) ( BX + AL)(AL) ( BX + AL)。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统XLATXLAT指令使用说明指令使用说明v源操作数、目标操作数均隐含。源操作数、目标操作数均隐含。v该指令隐含说明:寄存器该指令隐含说明:寄存器BXBX保存内存表格的首地保存内存表格的首地址;寄存器址;寄存器ALAL保存表格中某单元在此表格中的偏保存表格中某单元在此表格中的偏移量。因此,在使用该指令之前,必须先初始化移量。因此,在使用该指令之前,必须先初始化BXBX和和ALAL这两个寄存器。这两个寄存器。v该指令能访问的内存表格中的数据只能是字节类该指令能访问的内存表格中的数据只能是字节类型的。型的。v该指令能访问的内存表格的最大容量是该指令能访问的内存表格的最大容量是256256字节字节。v格式二中的表格首地址部分,只是为了提高程序格式二中的表格首地址部分,只是为了提高程序的可读性而设置的。指令执行时,使用的可读性而设置的。指令执行时,使用BXBX的值作的值作为表格首地址。为表格首地址。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统XLATXLAT指令用法举例指令用法举例v若若(DS)=2000H(DS)=2000H,(BX)=0020H(BX)=0020H,(AL)=9H(AL)=9H,v则执行指令则执行指令XLATXLAT后,后,(AL)=39H(AL)=39H。第第3 3章章 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/OI/O端口读入一字节数据端口读入一字节数据到到ALAL或一个字数据到或一个字数据到AXAX。第第3 3章章 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端口。端口。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统IN/OUTIN/OUT指令的使用说明指令的使用说明v采用格式一和格式二时,端口地址的取值范围是采用格式一和格式二时,端口地址的取值范围是:0 0FFHFFH,可以寻址,可以寻址256256个个I/OI/O端口。端口。v当端口地址值超过当端口地址值超过255D255D时,只能采用格式三或格时,只能采用格式三或格式四,把端口地址保存到寄存器式四,把端口地址保存到寄存器DXDX中,此时,端中,此时,端口地址的取值范围是:口地址的取值范围是:0 0FFFFHFFFFH,可以寻址,可以寻址6553665536个个I/OI/O端口。端口。v当端口是当端口是8 8位时,目标操作数选用位时,目标操作数选用ALAL寄存器;当寄存器;当端口是端口是1616位时,目标操作数选位时,目标操作数选AXAX寄存器。寄存器。第第3 3章章 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端口端口第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.3.地址传送指令地址传送指令v在汇编程序中,地址是一种特殊操作数,区别于在汇编程序中,地址是一种特殊操作数,区别于一般数据操作数,它无符号,长度为一般数据操作数,它无符号,长度为1616位。位。v在在80868086系统中,有专门的指令进行地址传送。系统中,有专门的指令进行地址传送。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统(1 1)取有效地址指令)取有效地址指令LEALEAv格式:格式:LEA r16LEA r16,memmemv功能:取内存单元功能:取内存单元memmem的有效地址,送到的有效地址,送到1616位寄位寄存器存器r16r16中,即:中,即:r16 EA(mem)r16 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。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)地址指针装入)地址指针装入DSDS指令指令LDSLDSv格式:格式:LDS r16LDS r16,m32m32v功能:把内存中的功能:把内存中的3232位源操作数中的低位源操作数中的低1616位送到位送到指定寄存器指定寄存器r16r16中,高中,高1616位送到段寄存器位送到段寄存器DSDS中。中。即:即:r16 m32r16 m32低低1616位;位;DS m32DS m32高高1616位。位。v(3 3)地址指针装入)地址指针装入ESES指令指令LESLESv把上述指令中的把上述指令中的DSDS换成换成ESES,即成为,即成为LESLES指令。指令。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统4.4.标志传送指令标志传送指令v标志寄存器用于记载指令执行引起的状态变化及标志寄存器用于记载指令执行引起的状态变化及一些特殊控制位,以此作为控制程序执行的依据一些特殊控制位,以此作为控制程序执行的依据。v标志寄存器是特殊寄存器,不能像一般数据寄存标志寄存器是特殊寄存器,不能像一般数据寄存器那样随意操作,以免其中的值发生变化。器那样随意操作,以免其中的值发生变化。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(1 1)取标志指令)取标志指令LAHFLAHFv格式:格式:LAHFLAHFv该指令中的源操作数隐含为标志寄存器低该指令中的源操作数隐含为标志寄存器低8 8位,位,目标操作数隐含为目标操作数隐含为AHAH。v功能:把功能:把1616位的标志寄存器低位的标志寄存器低8 8位送寄存器位送寄存器AHAH。v(2 2)置标志指令)置标志指令SAHFSAHFv格式:格式:SAHFSAHFv该指令中的源操作数隐含为该指令中的源操作数隐含为AHAH,目标操作数隐含,目标操作数隐含为标志寄存器。为标志寄存器。v功能:把寄存器功能:把寄存器AHAH中内容送至中内容送至1616位的标志寄存器位的标志寄存器低低8 8位,此操作是位,此操作是LAHFLAHF的逆操作。的逆操作。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-33-3】 编写汇编程序段,把标志寄存器的编写汇编程序段,把标志寄存器的CFCF位求反,其他位不变。位求反,其他位不变。LAHFLAHF; ;取标志寄存器的低取标志寄存器的低8 8位位XOR AH,01HXOR AH,01H; ;最低位求反最低位求反, ,其他位不变其他位不变SAHFSAHF; ;送入标志寄存器的低送入标志寄存器的低8 8位位第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(3 3)标志入栈指令)标志入栈指令PUSHFPUSHFv格式:格式:PUSHFPUSHFv该指令中的源操作数隐含为标志寄存器,目标操该指令中的源操作数隐含为标志寄存器,目标操作数隐含为堆栈区。作数隐含为堆栈区。v功能:标志寄存器入栈。功能:标志寄存器入栈。v SP SP2 SP SP2; v (SP + 1 (SP + 1,SP) FLAGSP) FLAG。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(4 4)标志弹出指令)标志弹出指令POPFPOPFv格式:格式:POPFPOPFv该指令中的源操作数隐含为堆栈区,目标操作数该指令中的源操作数隐含为堆栈区,目标操作数隐含为标志寄存器。隐含为标志寄存器。v功能:数据出栈到标志寄存器。功能:数据出栈到标志寄存器。v FLAG (SP+1 FLAG (SP+1,SP)SP); v SP SP + 2 SP SP + 2。v此操作是此操作是LAHFLAHF的逆操作。的逆操作。vSAHFSAHF和和POPFPOPF指令直接改变标志寄存器的值。利用指令直接改变标志寄存器的值。利用这一特性,可以非常方便地改变有关的标志位。这一特性,可以非常方便地改变有关的标志位。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-43-4】 编写汇编程序段,把标志寄存器编写汇编程序段,把标志寄存器TFTF位清零,其他标志位不变。位清零,其他标志位不变。PUSHFPUSHF; ;标志寄存器入栈标志寄存器入栈POP AXPOP AX; ;取标志寄存器内容取标志寄存器内容AND AX,0FEFFHAND AX,0FEFFH;TF;TF清零清零, ,其他位不变其他位不变PUSH AXPUSH AX; ;新值入栈新值入栈POPFPOPF; ;送入标志寄存器送入标志寄存器第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统5.5.数据类型转换指令数据类型转换指令v(1 1)字节转换为字指令)字节转换为字指令v格式:格式:CBWCBWv功能:把寄存器功能:把寄存器ALAL中数据的符号位扩到中数据的符号位扩到AHAH寄存器寄存器中,使字节转换为字。中,使字节转换为字。v指令的执行如下操作:当指令的执行如下操作:当AL80HAL80H时,时,AH00HAH00H;当当AL80HAL80H时,时,AHFFHAHFFH。v说明:说明:v该指令中的源操作数隐含为寄存器该指令中的源操作数隐含为寄存器ALAL,目标操作,目标操作数隐含为寄存器数隐含为寄存器AXAX。v一个用补码表示的数经一个用补码表示的数经CBWCBW指令进行符号位扩展指令进行符号位扩展后,数值大小不变。后,数值大小不变。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)字转换为双字指令)字转换为双字指令v格式:格式:CWDCWDv功能:把寄存器功能:把寄存器AXAX中数据的符号位扩到中数据的符号位扩到DXDX寄存器寄存器中,使字转换为双字。中,使字转换为双字。v指令的执行如下操作:当指令的执行如下操作:当AL8000HALBAB;如果;如果SF=1SF=1,则,则ABABAB;如果;如果SF=0SF=0,则,则ABA99或或AF=1AF=1,则进行,则进行(AL)(AL)+06H(AL)(AL)+06H修正,同时修正,同时AFAF置置1 1。v 若若ALAL的高的高4 4位位99或或CF=1CF=1,则进行,则进行(AL)(AL)+60H(AL)(AL)+60H修正,同时修正,同时CFCF置置1 1。v说明:说明:v目标操作数隐含为寄存器目标操作数隐含为寄存器ALAL。vDAADAA指令紧跟在加法指令之后用。指令紧跟在加法指令之后用。v指令执行后,影响指令执行后,影响CFCF、PFPF、AFAF、ZFZF、SFSF,对,对OFOF无无意义。意义。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-83-8】 编写汇编程序段,用压缩编写汇编程序段,用压缩BCDBCD码编码码编码并计算并计算12D+ 28D12D+ 28D。MOV AL,12HMOV AL,12HADD AL,28H ADD AL,28H ;AL=3AH,AF=1,CF=0;AL=3AH,AF=1,CF=0DAA DAA ;AL=40H;AL=40H第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)压缩)压缩BCDBCD数减法调整指令数减法调整指令v格式:格式:DASDASv功能:功能:v 若若ALAL的低的低4 4位位99或或AF=1AF=1,则进行,则进行(AL)(AL)-(AL)(AL)-06H06H修正,同时修正,同时AFAF置置1 1。v 若若ALAL的高的高4 4位位99或或CF=1CF=1,则进行,则进行(AL)(AL)-(AL)(AL)-60H60H修正,同时修正,同时CFCF置置1 1。v说明:说明:v目标操作数隐含为寄存器目标操作数隐含为寄存器ALAL。vDASDAS指令紧跟在减法指令之后用。指令紧跟在减法指令之后用。v该指令执行后,影响标志:该指令执行后,影响标志:CFCF、PFPF、AFAF、ZFZF、SFSF,对,对OFOF无意义。无意义。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-93-9】 编写汇编程序段,用压缩编写汇编程序段,用压缩BCDBCD码编码码编码并计算并计算37D-19D37D-19D。MOV AL,37HMOV AL,37HSUB AL,19H SUB AL,19H ;AL=1EH,AF=1,CF=0;AL=1EH,AF=1,CF=0DAS DAS ;AL=18H,AF=1;AL=18H,AF=1第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(3 3)非压缩的)非压缩的BCDBCD码的加法调整指令(码的加法调整指令(ASCIIASCII码码的加法调整指令)的加法调整指令)v非压缩的非压缩的BCDBCD码用码用8 8个二进制位表示个二进制位表示1 1位十进制数位十进制数,通常只用低,通常只用低4 4位,高位,高4 4位置位置0 0。数字。数字0 09 9的的ASCIIASCII码为码为30H30H39H39H,其低,其低4 4位的编码与位的编码与BCDBCD编码一致,编码一致,所以又把非压缩的所以又把非压缩的BCDBCD码调整称为码调整称为ASCIIASCII码调整。码调整。v格式:格式:AAA AAA 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统AAAAAA指令的功能指令的功能v 若若ALAL中低中低4 4位位999或或AF=1AF=1,则进行,则进行(AL)(AL)+06H(AL)(AL)+06H修正,同时,修正,同时,(AH)(AH)+1(AH)(AH)+1,AFAF置置1 1。v 清除清除ALAL寄存器的高寄存器的高4 4位。位。v AF AF值送值送CFCF。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统AAAAAA指令的使用说明指令的使用说明v目标操作数隐含为寄存器目标操作数隐含为寄存器AHAH和和ALAL。vAAAAAA指令紧跟在加法指令之后用。指令紧跟在加法指令之后用。v该指令执行后,影响标志:该指令执行后,影响标志:CFCF、AFAF,对,对PFPF、OFOF、ZFZF和和SFSF的影响不确定。的影响不确定。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-103-10】 编写汇编程序段,用非压缩编写汇编程序段,用非压缩BCDBCD码码编码并计算编码并计算7+97+9。MOV AL,7 MOV AL,7 ;AL=37H;AL=37HADD AL,9 ADD AL,9 ;AL=70H,AF=1,CF=0;AL=70H,AF=1,CF=0AAA AAA ;AL=06H,CF=AF=1;AL=06H,CF=AF=1第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(4 4)非压缩的)非压缩的BCDBCD码的减法调整指令(码的减法调整指令(ASCIIASCII码码的减法调整指令)的减法调整指令)v格式:格式:AASAASv功能:功能:v 如果如果ALAL中低中低4 4位小于位小于9 9且且AF=0AF=0,由跳过,由跳过;v 如果如果ALAL中低中低4 4位大于位大于9 9或或AF=1AF=1(即低(即低4 4位向高位向高4 4位有借位),减位有借位),减6 6调整,且调整,且AFAF置置1 1;v 清除清除ALAL寄存器的高寄存器的高4 4位;位;v AF AF值送值送CFCF。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统AASAAS指令的使用说明指令的使用说明v目标操作数隐含为寄存器目标操作数隐含为寄存器AHAH和和ALAL。vAASAAS指令紧跟在减法指令之后用。指令紧跟在减法指令之后用。v该指令执行后,影响标志:该指令执行后,影响标志:CFCF、AFAF,对,对PFPF、OFOF、ZFZF和和SFSF的影响不确定。的影响不确定。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-113-11】 编写汇编程序段,用非压缩编写汇编程序段,用非压缩BCDBCD码码编码并计算编码并计算17-917-9。MOV AL,7H MOV AL,7H ;AL=07H;AL=07HMOV AH,1H MOV AH,1H ;AH=1H;AH=1HSUB AL,9H SUB AL,9H ;AL=0FEH,AF=1,CF=1;AL=0FEH,AF=1,CF=1AAS AAS ;AL=8H,CF=AF=1,AH=0;AL=8H,CF=AF=1,AH=0第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(5 5)非压缩的)非压缩的BCDBCD码的乘法调整指令(码的乘法调整指令(ASCIIASCII码码的乘法调整指令)的乘法调整指令)v格式:格式:AAMAAMv功能:把功能:把ALAL寄存器的内容除以寄存器的内容除以1010,商放在,商放在AHAH寄存寄存器中,余数保存在器中,余数保存在ALAL寄存器中,用于寄存器中,用于MULMUL之后,之后,把把ALAL中的乘积调整成非压缩的中的乘积调整成非压缩的BCDBCD码,结果存于码,结果存于寄存器寄存器AXAX中。中。v说明:说明:v目标操作数隐含为寄存器目标操作数隐含为寄存器AHAH和和ALAL。vAAMAAM指令紧跟在指令紧跟在MULMUL指令之后用。指令之后用。v该指令执行后,影响标志:该指令执行后,影响标志:PFPF、ZFZF和和SFSF,对,对CFCF、AFAF和和OFOF的影响不确定。的影响不确定。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-123-12】 编写汇编程序,用非压缩编写汇编程序,用非压缩BCDBCD码编码编码并计算码并计算9 9 3 3。MOV AL,9H MOV AL,9H ;AL=0000 1001B;AL=0000 1001BMOV BL,3H MOV BL,3H ;BL=0000 001
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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