微型计算机-第3章-8086寻址方式与指令系统课件

上传人:无*** 文档编号:241326002 上传时间:2024-06-18 格式:PPT 页数:196 大小:1.62MB
返回 下载 相关 举报
微型计算机-第3章-8086寻址方式与指令系统课件_第1页
第1页 / 共196页
微型计算机-第3章-8086寻址方式与指令系统课件_第2页
第2页 / 共196页
微型计算机-第3章-8086寻址方式与指令系统课件_第3页
第3页 / 共196页
点击查看更多>>
资源描述
第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统第3章 8086寻址方式与指令系统第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统本章主要内容本章主要内容 概述概述1 8086寻址方式寻址方式2 8086指令系统指令系统3本章主要内容 概述1 8086寻址方式2 8086第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.1 3.1 概述概述v指令是指挥计算机进行操作的命令。指令是指挥计算机进行操作的命令。v指令系统是指微处理器能执行的各种指令的指令系统是指微处理器能执行的各种指令的集合。集合。v程序程序是一系列按一定顺序排列的指令是一系列按一定顺序排列的指令。v执行程序的过程就是计算机的工作过程。执行程序的过程就是计算机的工作过程。v微处理器的主要功能由它的指令系统来体现微处理器的主要功能由它的指令系统来体现。v不同的微处理器有不同的指令系统,其中每不同的微处理器有不同的指令系统,其中每一条指令对应着处理器的一种基本操作,这一条指令对应着处理器的一种基本操作,这在设计微处理器时确定。在设计微处理器时确定。3.1 概述指令是指挥计算机进行操作的命令。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v通常一条指令包括两部分:通常一条指令包括两部分:操作码操作码:决定要完成的操作决定要完成的操作操作数操作数:指参加运算的数据或是指参加运算的数据或是该该数所在的内存单元数所在的内存单元的的地址。地址。v指令的一般格式指令的一般格式如下如下:操作码操作码 操作数操作数1 1,操作数,操作数2 2,操作数,操作数nn没有操作数的指令称为没有操作数的指令称为无操作数指令无操作数指令。有两个操作数的指令称为有两个操作数的指令称为双操作数或二地址指令双操作数或二地址指令。v操作码和操作数地址都由二进制数码表示,整条操作码和操作数地址都由二进制数码表示,整条指令以二进制编码的形式存放在存储器中。指令以二进制编码的形式存放在存储器中。通常一条指令包括两部分:第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2 80863.2 8086寻址方式寻址方式v寻址方式寻址方式:指令中给出的指令中给出的求出操作数有效地址的方法。求出操作数有效地址的方法。v寻址操作寻址操作:计算机按照指令给出的寻址方式求出操作数有效地址计算机按照指令给出的寻址方式求出操作数有效地址的过程。的过程。3.2 8086寻址方式寻址方式:第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统80868086的的七种基本的数据寻址方式七种基本的数据寻址方式v(1)(1)立即寻址;立即寻址;v(2)(2)寄存器寻址;寄存器寻址;v(3)(3)直接寻址;直接寻址;v(4)(4)寄存器间接寻址;寄存器间接寻址;v(5)(5)寄存器相对寻址;寄存器相对寻址;v(6)(6)基址变址寻址;基址变址寻址;v(7)(7)相对基址变址寻址。相对基址变址寻址。存存储储器器寻寻址址方方式式8086的七种基本的数据寻址方式(1)立即寻址;存储器寻址方第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.1 3.2.1 立即寻址立即寻址v操作数直接出现在指令中,此时的操作数也叫立操作数直接出现在指令中,此时的操作数也叫立即数。即数。v立即数紧跟在操作码后面,一起存放在代码段中。立即数紧跟在操作码后面,一起存放在代码段中。v例如:例如:MOV AXMOV AX,2010H2010H在该指令格式中,在该指令格式中,AXAX是目标操作数,是目标操作数,2010H2010H是源操作是源操作数。数。3.2.1 立即寻址操作数直接出现在指令中,此时的操作数也叫第第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 AX MOV AX,2010H2010H3.2.2 寄存器寻址操作数在寄存器中,在指令中指定寄存器号第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式可用的寄存器寄存器寻址方式可用的寄存器v对于对于1616位操作数,寄存器可以是:位操作数,寄存器可以是:AXAX,BXBX,CXCX,DXDXSISI,DIDI,SPSP,BPBPCSCS,DSDS,SSSS和和ESESv对对8 8位操作数,寄存器可以是:位操作数,寄存器可以是:AHAH,ALALBHBH,BLBLCHCH,CLCLDHDH,DLDL寄存器寻址方式可用的寄存器对于16位操作数,寄存器可以是:第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式指令执行示意图寄存器寻址方式指令执行示意图寄存器寻址方式指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式说明寄存器寻址方式说明v在一条指令中,寄存器寻址方式既可用于源操作在一条指令中,寄存器寻址方式既可用于源操作数,也可用于目标操作数,还可以两者都用寄存数,也可用于目标操作数,还可以两者都用寄存器寻址方式。器寻址方式。v源操作数与目标操作数的长度应一致。例如,不源操作数与目标操作数的长度应一致。例如,不能将寄存器能将寄存器AXAX的内容传送到寄存器的内容传送到寄存器BHBH中,也不能中,也不能将寄存器将寄存器BHBH的内容传送到寄存器的内容传送到寄存器AXAX中。中。v两个操作数不能同时为段寄存器。两个操作数不能同时为段寄存器。v目标操作数不能是代码段寄存器。目标操作数不能是代码段寄存器。寄存器寻址方式说明在一条指令中,寄存器寻址方式既可用于源操作第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.2.3 3.2.3 直接寻址直接寻址v操作数在存储器中,指令中以具体数值的形式直操作数在存储器中,指令中以具体数值的形式直接给出操作数所在存储单元的有效地址接给出操作数所在存储单元的有效地址EAEA。为了。为了与立即数区别,该有效地址必须用与立即数区别,该有效地址必须用括起。括起。v例如:例如:MOV AX MOV AX,2010H2010H该指令的源操作数采用直接寻址方式。该指令的源操作数采用直接寻址方式。若若(DS)=2000H(DS)=2000H,那么指令执行后,那么指令执行后,(AX)=1225H(AX)=1225H。3.2.3 直接寻址操作数在存储器中,指令中以具体数值的形式第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统直接寻址方式指令执行示意图直接寻址方式指令执行示意图直接寻址方式指令执行示意图第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v采用直接寻址方式时,如果指令中没有用前缀说采用直接寻址方式时,如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数明操作数存放在哪个段,则操作数默认存放在数据段。据段。v80868086系统允许操作数存放在代码段、堆栈段或附系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中指明段超越。加段。此时,就需要在指令中指明段超越。v例如:例如:MOV ES:1225H MOV ES:1225H,AX AX 该指令的目标操作数采用直接寻址方式。操作数存放该指令的目标操作数采用直接寻址方式。操作数存放在由在由ESES指示的附加段中指示的附加段中。物理地址物理地址=ES=ES10H+1225H10H+1225H。采用直接寻址方式时,如果指令中没有用前缀说明操作数存放在哪个第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统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: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.2.4 寄存器间接寻址操作数的有效地址EA存放在基址寄存第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:MOV AX MOV AX,SI SI v该指令的源操作数采用寄存器间接寻址方式。该指令的源操作数采用寄存器间接寻址方式。v若若(DS)=2000H(DS)=2000H,(SI)=2010H(SI)=2010H,那么指令执行后,那么指令执行后,(AX)=1225H(AX)=1225H。v如操作数不存放在间址寄存器默认的段,则指如操作数不存放在间址寄存器默认的段,则指定段超越的指令可采用如下形式。定段超越的指令可采用如下形式。MOV AX MOV 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.2.5 寄存器相对寻址操作数的有效地址EA是指令中指定的第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:MOV AX MOV 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寄存器相对寻址说明偏移量是符号数,8位偏移量的取值范围为:0第第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.2.6基址变址寻址操作数的有效地址EA是指令中指定的基址第第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.2.7 相对基址变址寻址操作数的有效地址EA是指令中指定第第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 8086指令系统8086指令系统包括六大类指令:第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v80868086汇编指令中的操作数可以有零个、一个或两汇编指令中的操作数可以有零个、一个或两个,通常称为零地址、一地址或二地址指令。个,通常称为零地址、一地址或二地址指令。v二地址指令中的两个操作数分别称为源操作数和二地址指令中的两个操作数分别称为源操作数和目标操作数。目标操作数。8086汇编指令中的操作数可以有零个、一个或两个,通常称为零第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.3.13.3.1数据传送指令数据传送指令v数据传送指令是将数据或地址传送到寄存器、存数据传送指令是将数据或地址传送到寄存器、存储单元或储单元或I/OI/O端口中。端口中。v分为分为5 5类:类:v通用数据传送指令;通用数据传送指令;v累加器专用传送指令;累加器专用传送指令;v地址传送指令;地址传送指令;v标志传送指令;标志传送指令;v数据类型转换指令。数据类型转换指令。3.3.1数据传送指令数据传送指令是将数据或地址传送到寄存器第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统数据传送指令的共同特点数据传送指令的共同特点v除了除了POPFPOPF和和SAHFSAHF指令外,其他的数据传送指令的指令外,其他的数据传送指令的执行结果都不影响标志位。执行结果都不影响标志位。v指令中如果列出两个操作数,则指令的执行过程指令中如果列出两个操作数,则指令的执行过程是:目标操作数是:目标操作数源操作数。源操作数。v指令中如果仅列出一个操作数,则另一个操作数指令中如果仅列出一个操作数,则另一个操作数为隐含操作数。为隐含操作数。数据传送指令的共同特点除了POPF和SAHF指令外,其他的数第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v1 1)传送指令传送指令v格式:格式:MOV MOV 目标操作数,源操作数目标操作数,源操作数 v功能:将源操作数的内容(一个字或一个字节)功能:将源操作数的内容(一个字或一个字节)传送到目标操作数指定的寄存器或内存单元,源传送到目标操作数指定的寄存器或内存单元,源操作数内容不变。例如:操作数内容不变。例如:MOV ALMOV AL,5 5;字节传送,立即数送通用寄存器;字节传送,立即数送通用寄存器MOV AXMOV AX,BXBX;字传送,通用寄存器送通用寄存器;字传送,通用寄存器送通用寄存器MOV DSMOV DS,AXAX;字传送,通用寄存器送段寄存器;字传送,通用寄存器送段寄存器1.通用数据传送指令1)传送指令第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统MOVMOV指令的使用说明指令的使用说明v源操作数可以是立即数、寄存器或内存操作数。源操作数可以是立即数、寄存器或内存操作数。v目标操作数可以是寄存器或内存操作数。目标操作数可以是寄存器或内存操作数。v立即数和立即数和CSCS寄存器只能作为源操作数,不允许作寄存器只能作为源操作数,不允许作为目标操作数。为目标操作数。vIPIP和和FRFR都不都不可可作为源操作数或是目标操作数。作为源操作数或是目标操作数。v立即数不允许直接传送至立即数不允许直接传送至DSDS、ESES或或SSSS寄存器。寄存器。v源操作数和目标操作数不允许同时是内存操作数,源操作数和目标操作数不允许同时是内存操作数,也不允许同时是段寄存器。也不允许同时是段寄存器。v源操作数和目标操作数的类型必须相同,即同为源操作数和目标操作数的类型必须相同,即同为字节类型或字类型。字节类型或字类型。MOV指令的使用说明源操作数可以是立即数、寄存器或内存操作数第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v2 2)数据交换指令数据交换指令v格式:格式:XCHGXCHG 目标操作数,源操作数目标操作数,源操作数 v功能:源操作数的内容(一个字或字节)与目标功能:源操作数的内容(一个字或字节)与目标操作数的内容(一个字或字节)互换。操作数的内容(一个字或字节)互换。v例如:例如:XCHG BLXCHG BL,AHAH ;字节交换,寄存器与寄存器的内容交换;字节交换,寄存器与寄存器的内容交换XCHG AXXCHG AX,BXSIBXSI ;字交换,寄存器与内存单元的内容交换;字交换,寄存器与内存单元的内容交换1.通用数据传送指令2)数据交换指令第第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 ;源操作数和目标操作数不可同是源操作数和目标操作数不可同是AXAXXCHG指令的使用说明源操作数和目标操作数都可以是寄存器或内第第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-1】若两个字数据分别存储在内存单元NUM1和NUM2第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统堆栈堆栈v堆栈是一块按照堆栈是一块按照“后进先出后进先出”原则工作的内存区域。原则工作的内存区域。v把数据从栈顶存入堆栈中的操作称为入栈(或压入);把数据从栈顶存入堆栈中的操作称为入栈(或压入);v把数据通过栈顶从堆栈中取出的操作称为出栈(或弹出)把数据通过栈顶从堆栈中取出的操作称为出栈(或弹出)。v堆栈常被用于数据的暂存、交换、子程序的参数传递等堆栈常被用于数据的暂存、交换、子程序的参数传递等场合。场合。v在调用子程序或转入中断服务程序时,堆栈是默认的被在调用子程序或转入中断服务程序时,堆栈是默认的被用于保存返回地址的内存区域。用于保存返回地址的内存区域。v为了实现子程序或中断嵌套,也必须使用堆栈技术。为了实现子程序或中断嵌套,也必须使用堆栈技术。堆栈堆栈是一块按照“后进先出”原则工作的内存区域。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v在在80868086系统中,堆栈所在的段就是堆栈段,它可系统中,堆栈所在的段就是堆栈段,它可以占用的最大空间是以占用的最大空间是64KB64KB。v堆栈段的段地址由堆栈段的段地址由SSSS寄存器指示寄存器指示。v堆栈指针寄存器堆栈指针寄存器SPSP始终指示栈顶的偏移地址并随始终指示栈顶的偏移地址并随着入栈和出栈操作而自动变化。着入栈和出栈操作而自动变化。v当进行压入操作后堆栈指针当进行压入操作后堆栈指针达达到到定义定义值,表明堆值,表明堆栈满;当执行弹出操作后堆栈指针回到初值,表栈满;当执行弹出操作后堆栈指针回到初值,表明堆栈空。明堆栈空。v当栈满时,再压入数据,称为当栈满时,再压入数据,称为“堆栈溢出堆栈溢出”。在8086系统中,堆栈所在的段就是堆栈段,它可以占用的最大空第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v3)3)堆栈操作指令堆栈操作指令v80868086指令系统中指令系统中:v堆栈操作指令中操作数的类型只能是字,不能堆栈操作指令中操作数的类型只能是字,不能是字节。是字节。v立即数不能作为操作数。立即数不能作为操作数。1.通用数据传送指令3)堆栈操作指令第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统进栈指令进栈指令v格式:格式:PUSH PUSH 源操作数源操作数v功能:源操作数入栈。功能:源操作数入栈。v指令的执行如下操作:指令的执行如下操作:v(SP)(SP)(SP)-2 (SP)-2 v(SS:SP)(SS:SP)源操作数源操作数 v说明:说明:v源操作数可以是寄存器或是内存操作数。源操作数可以是寄存器或是内存操作数。进栈指令格式:PUSH 源操作数第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统出栈指令出栈指令v格式:格式:POP POP 目标操作数目标操作数v功能:数据出栈,存入目标操作数。功能:数据出栈,存入目标操作数。v指令的执行如下操作:指令的执行如下操作:v 目标操作数目标操作数(SS:SP)(SS:SP)v(SP)(SP)(SP)+2 (SP)+2 v说明:说明:v目标操作数可以是段寄存器、目标操作数可以是段寄存器、1616位寄存器或内存位寄存器或内存操作数。操作数。v当目标操作数是段寄存器时,不能是当目标操作数是段寄存器时,不能是CSCS寄存器。寄存器。出栈指令格式:POP 目标操作数第第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-2】设(SS)=2011H,(SP)=0020H,依第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统微型计算机-第3章-8086寻址方式与指令系统课件第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统微型计算机-第3章-8086寻址方式与指令系统课件第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统2.2.累加器专用传送指令累加器专用传送指令v(1 1)换码指令)换码指令v格式一:格式一:XLATXLATv格式二:格式二:XLAT XLAT 表格首地址表格首地址 v功能:将内存表格中某一单元的值传送至寄存器功能:将内存表格中某一单元的值传送至寄存器ALAL,实现一种编码到另一种编码的转换。例如,实现一种编码到另一种编码的转换。例如,把字符的扫描码转换成把字符的扫描码转换成ASCIIASCII码。码。v指令的执行如下操作:指令的执行如下操作:v把数据段中偏移地址为把数据段中偏移地址为BX+ALBX+AL的内存单元的内容的内存单元的内容送到送到ALAL中,即:中,即:(AL)(AL)(BX+AL)(BX+AL)。2.累加器专用传送指令(1)换码指令第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统XLATXLAT指令使用说明指令使用说明v源操作数、目标操作数均隐含。源操作数、目标操作数均隐含。v该指令隐含说明:寄存器该指令隐含说明:寄存器BXBX保存内存表格的首地址;寄保存内存表格的首地址;寄存器存器ALAL保存表格中某单元在此表格中的偏移量。因此,保存表格中某单元在此表格中的偏移量。因此,在使用该指令之前,必须先初始化在使用该指令之前,必须先初始化BXBX和和ALAL这两个寄存器。这两个寄存器。v该指令能访问的内存表格中的数据只能是字节类型的。该指令能访问的内存表格中的数据只能是字节类型的。v该指令能访问的内存表格的最大容量是该指令能访问的内存表格的最大容量是256256字节。字节。v格式二中的表格首地址部分,只是为了提高程序的可读格式二中的表格首地址部分,只是为了提高程序的可读性而设置的。指令执行时,使用性而设置的。指令执行时,使用BXBX的值作为表格首地址。的值作为表格首地址。XLAT指令使用说明源操作数、目标操作数均隐含。第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统XLATXLAT指令用法举例指令用法举例v若若(DS)=2000H(DS)=2000H,(BX)=0020H(BX)=0020H,(AL)=9H(AL)=9H,v则执行指令则执行指令XLATXLAT后,后,(AL)=39H(AL)=39H。XLAT指令用法举例若(DS)=2000H,(BX)=002第第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。(2)输入/输出指令(I/O指令)(1)输入指令第第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端口。端口。(2)输出指令格式一:OUT 端口地址,AL第第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寄存器。寄存器。IN/OUT指令的使用说明采用格式一和格式二时,端口地址的取第第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端口端口IN/OUT指令的使用举例MOV DX,60H;端口地第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统3.3.地址传送指令地址传送指令v在汇编程序中,地址是一种特殊操作数,区别于在汇编程序中,地址是一种特殊操作数,区别于一般数据操作数,它无符号,长度为一般数据操作数,它无符号,长度为1616位。位。v在在80868086系统中,有系统中,有专门的指令进行地址传送。专门的指令进行地址传送。3.地址传送指令在汇编程序中,地址是一种特殊操作数,区别于一第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统(1 1)取有效地址指令)取有效地址指令LEALEAv格式:格式:LEA r16LEA r16,memmemv功能:取内存单元功能:取内存单元memmem的有效地址,送到的有效地址,送到1616位寄位寄存器存器r16r16中,即:中,即:r16 r16 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。(1)取有效地址指令LEA格式:LEA r16,mem第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)地址指针装入)地址指针装入DSDS指令指令LDSLDSv格式:格式:LDS r16LDS r16,m32m32v功能:把内存中的功能:把内存中的3232位源操作数中的低位源操作数中的低1616位送到位送到指定寄存器指定寄存器r16r16中,高中,高1616位送到段寄存器位送到段寄存器DSDS中。中。即:即:r16 r16 m32 m32低低1616位;位;DSDS m32 m32高高1616位。位。v(3 3)地址指针装入)地址指针装入ESES指令指令LESLESv把上述指令中的把上述指令中的DSDS换成换成ESES,即成为,即成为LESLES指令。指令。(2)地址指针装入DS指令LDS第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统4.4.标志传送指令标志传送指令v标志寄存器用于记载指令执行引起的状态变化及标志寄存器用于记载指令执行引起的状态变化及一些特殊控制位,以此作为控制程序执行的依据。一些特殊控制位,以此作为控制程序执行的依据。v标志寄存器是特殊寄存器,不能像一般数据寄存标志寄存器是特殊寄存器,不能像一般数据寄存器那样随意操作,以免其中的值发生变化。器那样随意操作,以免其中的值发生变化。4.标志传送指令标志寄存器用于记载指令执行引起的状态变化及一第第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的逆操作。的逆操作。(1)取标志指令LAHF第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-33-3】编写汇编程序段,把标志寄存器的编写汇编程序段,把标志寄存器的CFCF位求反,其他位不变。位求反,其他位不变。LAHFLAHF;取标志寄存器的低取标志寄存器的低8 8位位XOR AH,01HXOR AH,01H;最低位求反最低位求反,其他位不变其他位不变SAHFSAHF;送入标志寄存器的低送入标志寄存器的低8 8位位【例3-3】编写汇编程序段,把标志寄存器的CF位求反,其第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(3 3)标志入栈指令)标志入栈指令PUSHFPUSHFv格式:格式:PUSHFPUSHFv该指令中的源操作数隐含为标志寄存器,目标操该指令中的源操作数隐含为标志寄存器,目标操作数隐含为堆栈区。作数隐含为堆栈区。v功能:标志寄存器入栈。功能:标志寄存器入栈。v SP SP SP SP2 2;v (SP+1(SP+1,SP)SP)FLAG FLAG。(3)标志入栈指令PUSHF第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(4 4)标志弹出指令)标志弹出指令POPFPOPFv格式:格式:POPFPOPFv该指令中的源操作数隐含为堆栈区,目标操作数该指令中的源操作数隐含为堆栈区,目标操作数隐含为标志寄存器。隐含为标志寄存器。v功能:数据出栈到标志寄存器。功能:数据出栈到标志寄存器。v FLAG FLAG (SP+1(SP+1,SP)SP);v SP SP SP+2 SP+2。v此操作是此操作是LAHFLAHF的逆操作。的逆操作。vSAHFSAHF和和POPFPOPF指令直接改变标志寄存器的值。利用指令直接改变标志寄存器的值。利用这一特性,可以非常方便地改变有关的标志位。这一特性,可以非常方便地改变有关的标志位。(4)标志弹出指令POPF第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例3-43-4】编写汇编程序段,把标志寄存器编写汇编程序段,把标志寄存器TFTF位清零,其他标志位不变。位清零,其他标志位不变。PUSHFPUSHF;标志寄存器入栈标志寄存器入栈POP AXPOP AX;取标志寄存器内容取标志寄存器内容AND AX,0FEFFHAND AX,0FEFFH;TF;TF清零清零,其他位不变其他位不变PUSH AXPUSH AX;新值入栈新值入栈POPFPOPF;送入标志寄存器送入标志寄存器【例3-4】编写汇编程序段,把标志寄存器TF位清零,其他第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统5.5.数据类型转换指令数据类型转换指令v(1 1)字节转换为字指令)字节转换为字指令v格式:格式:CBWCBWv功能:把寄存器功能:把寄存器ALAL中数据的符号位扩到中数据的符号位扩到AHAH寄存器寄存器中,使字节转换为字。中,使字节转换为字。v指令的执行如下操作:当指令的执行如下操作:当AL80HAL80H时,时,AHAH00H00H;当当ALAL80H80H时,时,AHAHFFHFFH。v说明:说明:v该指令中的源操作数隐含为寄存器该指令中的源操作数隐含为寄存器ALAL,目标操作,目标操作数隐含为寄存器数隐含为寄存器AXAX。v一个用补码表示的数经一个用补码表示的数经CBWCBW指令进行符号位扩展指令进行符号位扩展后,数值大小不变。后,数值大小不变。5.数据类型转换指令(1)字节转换为字指令第第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)(AL)+06H(AL)+06H修正,同时修正,同时AFAF置置1 1。v 若若ALAL的高的高4 4位位99或或CF=1CF=1,则进行,则进行(AL)(AL)(AL)+60H(AL)+60H修正,同时修正,同时CFCF置置1 1。v说明:说明:v目标操作数隐含为寄存器目标操作数隐含为寄存器ALAL。vDAADAA指令紧跟在加法指令之后用。指令紧跟在加法指令之后用。v指令执行后,影响指令执行后,影响CFCF、PFPF、AFAF、ZFZF、SFSF,对,对OFOF无无意义。意义。5.十进制调整指令(1)压缩BCD码的加法调整指令第第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-8】编写汇编程序段,用压缩BCD码编码并计算12第第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无意义。无意义。(2)压缩BCD数减法调整指令第第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-9】编写汇编程序段,用压缩BCD码编码并计算37第第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)非压缩的BCD码的加法调整指令(ASCII码的加法调整第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统AAAAAA指令的功能指令的功能v 若若ALAL中低中低4 4位位999或或AF=1AF=1,则进行,则进行(AL)(AL)(AL)+06H(AL)+06H修正,同时,修正,同时,(AH)(AH)(AH)+1(AH)+1,AFAF置置1 1。v 清除清除ALAL寄存器的高寄存器的高4 4位。位。v AF AF值送值送CFCF。AAA指令的功能 若AL中低4位 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vCFCF、ZFZF、SFSF、PFPF的值由运算结果定。的值由运算结果定。vCNT=1CNT=1时,若移位后符号位发生变化,则标志时,若移位后符号位发生变化,则标志位位OF=1OF=1,否则,否则OF=0OF=0。vCNT 1CNT 1时,对时,对OFOF无定义。无定义。(1)逻辑左移指令第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)逻辑右移指令)逻辑右移指令v格式:格式:SHR destSHR dest,CNTCNTv功能:目标操作数右移功能:目标操作数右移CNTCNT次,最低位移至标志次,最低位移至标志位位CFCF中,最高位补中,最高位补0 0。v说明:说明:vCNTCNT代表移动次数。当代表移动次数。当CNT 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vCFCF、ZFZF、SFSF、PFPF的值由运算结果定。的值由运算结果定。vCNT=1CNT=1时,若移位后符号位发生变化,则标志时,若移位后符号位发生变化,则标志位位OF=1OF=1,否则,否则OF=0OF=0。vCNT 1CNT 1时,对时,对OFOF无定义。无定义。(2)逻辑右移指令第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统v(3 3)算术左移指令)算术左移指令v格式:格式:SAL destSAL dest,CNT
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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