




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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的计算机的的计算机的指令系统不同指令系统
4、不同。v采用采用不同不同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.
6、1 立即寻址立即寻址v操作数直接出现在指令中,此时的操作数也叫立操作数直接出现在指令中,此时的操作数也叫立即数。即数。v立即数紧跟在操作码后面,一起存放在代码段中立即数紧跟在操作码后面,一起存放在代码段中。v例如:例如:MOV AXMOV AX,2010H2010H 在该指令格式中,在该指令格式中,AXAX是目标操作数,是目标操作数,2010H2010H是源操作是源操作数。数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统立即寻址方式的指令执行示意立即寻址方式的指令执行示意图图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统立即寻址方式说明立即寻址方式
7、说明v在所有的指令中,立即数只能作源操作数,不能作在所有的指令中,立即数只能作源操作数,不能作目标操作数。目标操作数。v立即数应与目标操作数的长度一致。立即数应与目标操作数的长度一致。v立即数默认采用十进制形式,以十六进制形式出现立即数默认采用十进制形式,以十六进制形式出现的立即数应以字母的立即数应以字母H H为后缀,以八进制形式出现的立为后缀,以八进制形式出现的立即数应以字母即数应以字母Q Q为后缀。为后缀。v以十六进制形式出现的立即数,若以字母开头,则以十六进制形式出现的立即数,若以字母开头,则必须以数字必须以数字0 0为前缀。为前缀。v立即数还可以用表示立即数还可以用表示+ +、- -、
8、/ /表示的算术表达式表示的算术表达式,也可以用圆括号改变运算顺序。,也可以用圆括号改变运算顺序。v立即数只能是整数,不能是小数、变量或其它类型立即数只能是整数,不能是小数、变量或其它类型的数据。的数据。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.2 4.2.2 寄存器寻址寄存器寻址v操作数在寄存器中,在指令中指定寄存器号。操作数在寄存器中,在指令中指定寄存器号。v由于寄存器号短,因此,采用寄存器寻址方式由于寄存器号短,因此,采用寄存器寻址方式的指令的机器码长度短。的指令的机器码长度短。v操作数在寄存器中,指令执行时,操作就在操作数在寄存器中,指令执行时,操作就
9、在CPUCPU的内部进行,不需要通过访问存储器来取的内部进行,不需要通过访问存储器来取得操作数,因而指令的执行速度快。得操作数,因而指令的执行速度快。v在编程中,如有可能,应尽量在指令中使用这在编程中,如有可能,应尽量在指令中使用这种寻址方式。种寻址方式。v例如:例如: MOV AX MOV AX,2010H2010H第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器寻址方式可用的寄存器寄存器寻址方式可用的寄存器v对于对于1616位操作数,寄存器可以是:位操作数,寄存器可以是: AXAX,BXBX,CXCX,DXDX SISI,DIDI,SPSP,BPBP CSCS,D
10、SDS,SSSS和和ESESv对对8 8位操作数,寄存器可以是:位操作数,寄存器可以是: AHAH,ALAL BHBH,BLBL CHCH,CLCL DHDH,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操作数在存储器中,指令中以具体数值的形式直操作数在存储器中,指令中以具体数值的形式直接给出操作数所在存储单元的有效地址接给
12、出操作数所在存储单元的有效地址EAEA。为了。为了与立即数区别,该有效地址必须用与立即数区别,该有效地址必须用括起。括起。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+1225
14、H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v在汇编语言指令中,可以用符号地址代替数值地在汇编语言指令中,可以用符号地址代替数值地址。址。v例如:例如: MOV AX MOV AX,NUMANUMA 此时,此时,NUMANUMA是存放操作数的内存单元的符号地址。是存放操作数的内存单元的符号地址。v上面这条指令还可以写成如下的形式:上面这条指令还可以写成如下的形式: MOV AX MOV AX,NUMANUMAv如如DATA1DATA1数据存放在附加段,则可以用如下的形数据存放在附加段,则可以用如下的形式指定段跨越前缀:式指定段跨越前缀: MOV AX MOV AX,
15、ES: NUMAES: NUMA或或 MOV AX MOV AX,ES: NUMAES: NUMA第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.4 4.2.4 寄存器间接寻址寄存器间接寻址v操作数的有效地址操作数的有效地址EAEA存放在基址寄存器存放在基址寄存器BXBX、BPBP或或变址寄存器变址寄存器SISI、DIDI中。中。v为了区别于寄存器寻址方式,指令中指定的寄存为了区别于寄存器寻址方式,指令中指定的寄存器名要用器名要用括起来。括起来。v指令中使用指令中使用SISI、DIDI、BXBX寄存器时,操作数默认存寄存器时,操作数默认存放在数据段中;使用放在数据段
16、中;使用BPBP寄存器时,操作数默认存寄存器时,操作数默认存放在堆栈段中,允许段超越。放在堆栈段中,允许段超越。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,那么指令
17、执行后,那么指令执行后,(AX)=1225H(AX)=1225H。v如操作数不存放在间址寄存器默认的段,则指如操作数不存放在间址寄存器默认的段,则指定段超越的指令可采用如下形式。定段超越的指令可采用如下形式。 MOV AX MOV AX,ES:SIES:SI 此时,操作数的物理地址此时,操作数的物理地址=ES=ES10H+SI10H+SI。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器间接寻址方式指令执行示意图寄存器间接寻址方式指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.5 4.2.5 寄存器相对寻址寄存器相对寻址v操作
18、数的有效地址操作数的有效地址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)+
19、8位或位或1616位位移量位位移量第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如: MOV AX MOV AX,8BX 8BX v该指令的源操作数采用寄存器相对寻址方式。该指令的源操作数采用寄存器相对寻址方式。v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,那么指令执,那么指令执行后,(行后,(AXAX)=1225H=1225H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统寄存器相对寻址方式的指令执行示意图寄存器相对寻址方式的指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式
20、与指令系统寄存器相对寻址说明寄存器相对寻址说明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 A
21、X,BX+8BX+8第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.64.2.6基址变址寻址基址变址寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址寄是指令中指定的基址寄存器的值与变址寄存器的值之和。存器的值与变址寄存器的值之和。v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存时,操作数默认存放在数据段中;放在数据段中;v使用基址寄存器使用基址寄存器BPBP时,操作数默认存放在堆时,操作数默认存放在堆栈段中,允许段超越。栈段中,允许段超越。v操作数的物理地址操作数的物理地址= =(DSDS)10H+10H+(SISI)/ /(DID
22、I)+ +(BXBX)或或 = =(SSSS)10H+10H+(SISI)/ /(DIDI)+ +(BPBP)第第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寻址方式与指令系统寻址方式与指令系统基址变址寻址方式的指令
23、执行示意图基址变址寻址方式的指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.2.7 4.2.7 相对基址变址寻址相对基址变址寻址v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址寄存器是指令中指定的基址寄存器的值与变址寄存器的值以及的值与变址寄存器的值以及8 8位或位或1616位位移量之位位移量之和。和。v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存放在时,操作数默认存放在数据段中;数据段中;v使用基址寄存器使用基址寄存器BPBP时,操作数默认存放在堆栈段时,操作数默认存放在堆栈段中,允许段超越。中,允许段超越。v操作数的物理
24、地址操作数的物理地址= =(DSDS)10H+10H+(SISI)/ /(DIDI)+ +(BXBX)+8+8位或位或1616位位移量位位移量或或 = =(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=
25、5H,那么指令执行后,(那么指令执行后,(AXAX)=1225H=1225H。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统相对基址变址寻址方式的指令执行示意图相对基址变址寻址方式的指令执行示意图第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.3 80864.3 8086指令系统指令系统v80868086指令系统包括六大类指令:指令系统包括六大类指令:v 数据传送指令数据传送指令v 算术运算指令算术运算指令v 逻辑运算和移位指令逻辑运算和移位指令v 串操作指令串操作指令v 控制转移指令控制转移指令v 处理器控制指令处理器控制指令第第4 4章章 80
26、868086寻址方式与指令系统寻址方式与指令系统v80868086汇编指令中的操作数可以有零个、一个或两汇编指令中的操作数可以有零个、一个或两个,通常称为零地址、一地址或二地址指令。个,通常称为零地址、一地址或二地址指令。v二地址指令中的两个操作数分别称为源操作数和二地址指令中的两个操作数分别称为源操作数和目标操作数。目标操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.3.14.3.1数据传送指令数据传送指令v数据传送指令是将数据或地址传送到寄存器、存数据传送指令是将数据或地址传送到寄存器、存储单元或储单元或I/OI/O端口中。端口中。v分为分为5 5类:类:v
27、通用数据传送指令;通用数据传送指令;v累加器专用传送指令;累加器专用传送指令;v地址传送指令;地址传送指令;v标志传送指令;标志传送指令;v数据类型转换指令。数据类型转换指令。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统数据传送指令的共同特点数据传送指令的共同特点v除了除了POPFPOPF和和SAHFSAHF指令外,其他的数据传送指令的指令外,其他的数据传送指令的执行结果都不影响标志位。执行结果都不影响标志位。v指令中如果列出两个操作数,则指令的执行过程指令中如果列出两个操作数,则指令的执行过程是:目标操作数是:目标操作数源操作数。源操作数。v指令中如果仅列出一个操作数
28、,则另一个操作数指令中如果仅列出一个操作数,则另一个操作数为隐含操作数。为隐含操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v1 1)传送指令传送指令v格式:格式:MOV MOV 目标操作数,源操作数目标操作数,源操作数 v功能:将源操作数的内容(一个字或一个字节)功能:将源操作数的内容(一个字或一个字节)传送到目标操作数指定的寄存器或内存单元,源传送到目标操作数指定的寄存器或内存单元,源操作数内容不变。例如:操作数内容不变。例如:MOV ALMOV AL,5 5;字节传送,立即数送通用寄存器;字节传送,立即数送通用寄存器M
29、OV AXMOV AX,BXBX;字传送,通用寄存器送通用寄存器;字传送,通用寄存器送通用寄存器MOV DSMOV DS,AXAX ;字传送,通用寄存器送段寄存器;字传送,通用寄存器送段寄存器第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统MOVMOV指令的使用说明指令的使用说明v源操作数可以是立即数、寄存器或内存操作数。源操作数可以是立即数、寄存器或内存操作数。v目标操作数可以是寄存器或内存操作数。目标操作数可以是寄存器或内存操作数。v立即数和立即数和CSCS寄存器只能作为源操作数,不允许作寄存器只能作为源操作数,不允许作为目标操作数。为目标操作数。vIPIP和和PSWP
30、SW都不都不可可作为源操作数或是目标操作数。作为源操作数或是目标操作数。v立即数不允许直接传送至立即数不允许直接传送至DSDS、ESES或或SSSS寄存器。寄存器。v源操作数和目标操作数不允许同时是内存操作数源操作数和目标操作数不允许同时是内存操作数,也不允许同时是段寄存器。,也不允许同时是段寄存器。v源操作数和目标操作数的类型必须相同,即同为源操作数和目标操作数的类型必须相同,即同为字节类型或字类型。字节类型或字类型。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v2 2)数据交换指令数据交换指令v格式:格式:XCHGXCHG 目
31、标操作数,源操作数目标操作数,源操作数 v功能:源操作数的内容(一个字或字节)与目标功能:源操作数的内容(一个字或字节)与目标操作数的内容(一个字或字节)互换。操作数的内容(一个字或字节)互换。v例如:例如:XCHG BLXCHG BL,AHAH ;字节交换,寄存器与寄存器的内容交换;字节交换,寄存器与寄存器的内容交换XCHG AXXCHG AX,BXSIBXSI ;字交换,寄存器与内存单元的内容交换;字交换,寄存器与内存单元的内容交换第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统XCHGXCHG指令的使用说明指令的使用说明v源操作数和目标操作数都可以是寄存器或内存操源操
32、作数和目标操作数都可以是寄存器或内存操作数。作数。v源操作数和目标操作数不可同时是内存操作数。源操作数和目标操作数不可同时是内存操作数。v源操作数和目标操作数不可以同时是寄存器(累源操作数和目标操作数不可以同时是寄存器(累加器)加器)AXAX。v段寄存器、寄存器段寄存器、寄存器IPIP或立即数不可以作为源操作或立即数不可以作为源操作数或目标操作数。数或目标操作数。v例如:例如:XCHG AXXCHG AX,2011H2011H;源操作数不能是立即数源操作数不能是立即数XCHG CSXCHG CS,5SI5SI;CSCS不能作为操作数不能作为操作数XCHG AXXCHG AX,AX AX ;源操
33、作数和目标操作数不可同是源操作数和目标操作数不可同是AXAX第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例4-14-1】若两个字数据分别存储在内存单元】若两个字数据分别存储在内存单元NUM1NUM1和和NUM2NUM2中,编写汇编程序段将这两个内存单中,编写汇编程序段将这两个内存单元的内容互换。元的内容互换。v汇编程序段如下:汇编程序段如下:MOV AXMOV AX,NUM1 NUM1 XCHG AXXCHG AX,NUM2 NUM2 MOV NUM1MOV NUM1,AX AX 第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统堆栈堆栈v堆栈
34、是一块按照堆栈是一块按照“后进先出后进先出”原则工作的内存区原则工作的内存区域。域。v把数据从栈顶存入堆栈中的操作称为入栈(或压把数据从栈顶存入堆栈中的操作称为入栈(或压入);入);v把数据通过栈顶从堆栈中取出的操作称为出栈(把数据通过栈顶从堆栈中取出的操作称为出栈(或弹出)。或弹出)。v堆栈常被用于数据的暂存、交换、子程序的参数堆栈常被用于数据的暂存、交换、子程序的参数传递等场合。传递等场合。v在调用子程序或转入中断服务程序时,堆栈是默在调用子程序或转入中断服务程序时,堆栈是默认的被用于保存返回地址的内存区域。认的被用于保存返回地址的内存区域。v为了实现子程序或中断嵌套,也必须使用堆栈技为了
35、实现子程序或中断嵌套,也必须使用堆栈技术。术。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v在在80868086系统中,堆栈所在的段就是堆栈段,它可系统中,堆栈所在的段就是堆栈段,它可以占用的最大空间是以占用的最大空间是64KB64KB。v堆栈段的段地址由堆栈段的段地址由SSSS寄存器指示寄存器指示。v堆栈指针寄存器堆栈指针寄存器SPSP始终指示栈顶的偏移地址并随始终指示栈顶的偏移地址并随着入栈和出栈操作而自动变化。着入栈和出栈操作而自动变化。v当进行压入操作后堆栈指针当进行压入操作后堆栈指针达达到到定义定义值,表明堆值,表明堆栈满;当执行弹出操作后堆栈指针回到初值,表
36、栈满;当执行弹出操作后堆栈指针回到初值,表明堆栈空。明堆栈空。v当栈满时,再压入数据,称为当栈满时,再压入数据,称为“堆栈溢出堆栈溢出”。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.通用数据传送指令通用数据传送指令v3)3)堆栈操作指令堆栈操作指令v80868086指令系统中指令系统中:v堆栈操作指令中操作数的类型只能是字,不能堆栈操作指令中操作数的类型只能是字,不能是字节。是字节。v立即数不能作为操作数。立即数不能作为操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统进栈指令进栈指令v格式:格式:PUSH PUSH 源操作数源操作数v
37、功能:源操作数入栈。功能:源操作数入栈。v指令的执行如下操作:指令的执行如下操作:v (SP) (SP) (SP) -2 (SP) -2 v (SS:SP) (SS:SP)源操作数源操作数 v说明:说明:v源操作数可以是寄存器或是内存操作数。源操作数可以是寄存器或是内存操作数。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统出栈指令出栈指令v格式:格式:POP POP 目标操作数目标操作数v功能:数据出栈,存入目标操作数。功能:数据出栈,存入目标操作数。v指令的执行如下操作:指令的执行如下操作:v 目标操作数目标操作数(SS:SP) (SS:SP) v (SP) (SP)
38、(SP) +2 (SP) +2 v说明:说明:v目标操作数可以是段寄存器、目标操作数可以是段寄存器、1616位寄存器或内存位寄存器或内存操作数。操作数。v当目标操作数是段寄存器时,不能是当目标操作数是段寄存器时,不能是CSCS寄存器。寄存器。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统【例【例4-24-2】v设设(SS)=2011H(SS)=2011H,(SP)=0020H(SP)=0020H,依次执行下列汇编,依次执行下列汇编指令后,分析堆栈中的数据和寄存器指令后,分析堆栈中的数据和寄存器AXAX、BXBX、SPSP的变化情况。的变化情况。MOV AX,0103HMO
39、V AX,0103HMOV BX,1228HMOV BX,1228HPUSH AXPUSH AXPUSH BXPUSH BXPOP BXPOP BX第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统(2 2)输入)输入/ /输出指令(输出指令(I/OI/O指令)指令)v(1 1)输入指令)输入指令v格式一:格式一:IN ALIN AL,端口地址,端口地址v格式二:格式二:IN AXIN AX,端口地址,端口地址v格式三:格式三:IN ALIN
40、 AL,DXDXv格式四:格式四:IN AXIN AX,DXDXv功能:从指令中指定的功能:从指令中指定的I/OI/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
41、 8位位I/OI/O端口或端口或1616位位I/OI/O端口。端口。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统IN/OUTIN/OUT指令的使用说明指令的使用说明v采用格式一和格式二时,端口地址的取值范围是采用格式一和格式二时,端口地址的取值范围是:0 0FFHFFH,可以寻址,可以寻址256256个个I/OI/O端口。端口。v当端口地址值超过当端口地址值超过255D255D时,只能采用格式三或格时,只能采用格式三或格式四,把端口地址保存到寄存器式四,把端口地址保存到寄存器DXDX中,此时,端中,此时,端口地址的取值范围是:口地址的取值范围是:0 0FFFFHFFFF
42、H,可以寻址,可以寻址6553665536个个I/OI/O端口。端口。v当端口是当端口是8 8位时,目标操作数选用位时,目标操作数选用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; ;将将
43、1616位数输出到位数输出到90H90H端口端口第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统4.3.34.3.3位运算指令位运算指令v位运算指令分为:位运算指令分为:v 逻辑运算指令逻辑运算指令v 移位指令移位指令v 循环移位指令循环移位指令第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统1.1.逻辑运算指令逻辑运算指令v 逻辑非(逻辑非(NOTNOT)v 逻辑与(逻辑与(ANDAND)v 逻辑测试(逻辑测试(TESTTEST)v 逻辑或(逻辑或(OROR)v 逻辑异或(逻辑异或(XORXOR)指令)指令v这些逻辑运算指令的操作数可以是这些逻辑运算指
44、令的操作数可以是8 8位、位、1616位,位,运算按位进行。对操作数的规定与运算按位进行。对操作数的规定与MOVMOV指令相同指令相同。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(1 1)逻辑非指令)逻辑非指令v格式:格式:NOT NOT destdestv功能:功能:( (destdest) ) ( (destdest) )v说明:说明:v不影响标志位。不影响标志位。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)逻辑与指令)逻辑与指令v格式:格式:AND AND destdest,srcsrcv功能:功能:( (destdest)
45、 ) ( (destdest) ) ( (srcsrc) )v说明:说明:v对标志位的影响是:对标志位的影响是:CFCF、OFOF清零;影响清零;影响SFSF、ZFZF、PFPF;AFAF的值不定。的值不定。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(3 3)逻辑测试指令)逻辑测试指令v格式:格式:TEST TEST destdest,srcsrcv功能:功能:( (destdest) ) ( (srcsrc) )v说明:说明:v执行相与操作,以便影响标志位,但不保留结果执行相与操作,以便影响标志位,但不保留结果。v对标志位的影响是:对标志位的影响是:CFCF、OF
46、OF清零;影响清零;影响SFSF、ZFZF、PFPF;AFAF的值不定。的值不定。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(4 4)逻辑或指令)逻辑或指令v格式:格式:OR OR destdest,srcsrcv功能:功能:( (destdest) ) ( (destdest) ) ( (srcsrc) )v说明:说明:v对标志位的影响是:对标志位的影响是:CFCF、OFOF清零;影响清零;影响SFSF、ZFZF、PFPF;AFAF的值不定。的值不定。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(5 5)逻辑异或指令)逻辑异或指令v格式:
47、格式:XOR XOR destdest,srcsrcv功能:功能:( (destdest) ) ( (destdest) )( (srcsrc) )v说明:说明:v对标志位的影响是:对标志位的影响是:CFCF、OFOF清零;影响清零;影响SFSF、ZFZF、PFPF;AFAF的值不定。的值不定。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v例如:例如:AND AL,BL AND AL,BL ;AL;ALALAL BLBLXOR AX,DIXOR AX,DIOR BX,0FF02H OR BX,0FF02H ;(BX);(BX)(BX)(BX) FF02HFF02HNOT
48、 BYTE PTR BX NOT BYTE PTR BX ; ; 字节内容求反字节内容求反TEST AH,4 ;AHTEST AH,4 ;AH 4,AH4,AH不变不变, ,只改变标志只改变标志第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例4-144-14】 编写汇编程序段,把数字编写汇编程序段,把数字8 8,变成,变成字符字符“8 8”。MOV AL,8HMOV AL,8HOR AL,30H OR AL,30H ;AL=38H=8;AL=38H=8v【例【例4-154-15】 编写汇编程序段,从端口编写汇编程序段,从端口80H80H读取读取一字节,将其一字节,
49、将其D1D1位求反后,从位求反后,从80H80H送出。送出。IN AL,80HIN AL,80HXOR AL,00000010BXOR AL,00000010BOUT 80H,ALOUT 80H,AL第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例4-164-16】 编写汇编程序段,将寄存器编写汇编程序段,将寄存器AXAX清零清零。XOR AX,AXXOR AX,AXv还有哪些可以将还有哪些可以将AXAX清零的指令?比较之。清零的指令?比较之。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统2.2.移位指令移位指令v移位指令可以对寄存器或存储单
50、元的内容按字节移位指令可以对寄存器或存储单元的内容按字节或字进行操作或字进行操作。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(1 1)逻辑左移指令)逻辑左移指令v格式:格式:SHL SHL destdest,CNTCNTv功能:目标操作数左移功能:目标操作数左移CNTCNT次,最低位补次,最低位补0 0,最高,最高位移至标志位位移至标志位CFCF中。中。v说明:说明:vCNTCNT代表移动次数。当代表移动次数。当CNT 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vCFCF、ZFZF、SFSF、PFPF的值由运算结果定。的值由运算结果定。vCNT
51、 = 1CNT = 1时,若移位后符号位发生变化,则标志时,若移位后符号位发生变化,则标志位位OF=1OF=1,否则,否则OF=0OF=0。vCNT 1CNT 1时,对时,对OFOF无定义。无定义。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)逻辑右移指令)逻辑右移指令v格式:格式:SHR SHR destdest,CNTCNTv功能:目标操作数右移功能:目标操作数右移CNTCNT次,最低位移至标志次,最低位移至标志位位CFCF中,最高位补中,最高位补0 0。v说明:说明:vCNTCNT代表移动次数。当代表移动次数。当CNT 1CNT 1时,必须由寄存器时,必
52、须由寄存器CLCL说明。说明。vCFCF、ZFZF、SFSF、PFPF的值由运算结果定。的值由运算结果定。vCNT = 1CNT = 1时,若移位后符号位发生变化,则标志时,若移位后符号位发生变化,则标志位位OF=1OF=1,否则,否则OF=0OF=0。vCNT 1CNT 1时,对时,对OFOF无定义。无定义。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(3 3)算术左移指令)算术左移指令v格式:格式:SAL SAL destdest,CNTCNTv功能:目标操作数左移功能:目标操作数左移CNTCNT次,最低位补次,最低位补0 0,最高,最高位移至标志位位移至标志位C
53、FCF中。中。v说明:说明:vCNTCNT代表移动次数。当代表移动次数。当CNT 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vCFCF、ZFZF、SFSF、PFPF的值由运算结果定。的值由运算结果定。vCNT = 1CNT = 1时,若移位后符号位发生变化,则标志时,若移位后符号位发生变化,则标志位位OF=1OF=1,否则,否则OF=0OF=0。vCNT 1CNT 1时,对时,对OFOF无定义。无定义。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(4 4)算术右移指令)算术右移指令v格式:格式:SAR SAR destdest,CNTCNTv功能
54、:目标操作数右移功能:目标操作数右移CNTCNT次,最低位移至标志次,最低位移至标志位位CFCF中,最高位不变。中,最高位不变。v说明:说明:vCNTCNT代表移动次数。当代表移动次数。当CNT 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vCFCF、ZFZF、SFSF、PFPF的值由运算结果定。的值由运算结果定。vCNT = 1CNT = 1时,若移位后符号位发生变化,则标志时,若移位后符号位发生变化,则标志位位OF=1OF=1,否则,否则OF=0OF=0。vCNT 1CNT 1时,对时,对OFOF无定义。无定义。第第4 4章章 80868086寻址方式与指令系统寻址方式
55、与指令系统v例如,分别给出下列移位指令执行结果。设例如,分别给出下列移位指令执行结果。设AL=0B4H=10110100BAL=0B4H=10110100B,CF = 1CF = 1,CL = 4CL = 4。SAL AL,1 SAL AL,1 ;AL=01101000B,CF=1,OF=1;AL=01101000B,CF=1,OF=1SAR AL,1 SAR AL,1 ;AL=11011010B,CF=0,OF=0;AL=11011010B,CF=0,OF=0SHL AL,1 SHL AL,1 ;AL=01101000B,CF=1,OF=1;AL=01101000B,CF=1,OF=1SHR
56、 AL,CL SHR AL,CL ;AL=00001011B,CF=0,OF;AL=00001011B,CF=0,OF无定义无定义第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统移位指令的使用说明移位指令的使用说明v这组指令除了可以实现基本的移位操作外,还可这组指令除了可以实现基本的移位操作外,还可以用于实现数倍增(左移)或倍减(右移),使以用于实现数倍增(左移)或倍减(右移),使用这种方法比直接使用乘、除法效率要高得多。用这种方法比直接使用乘、除法效率要高得多。v在不溢出的情况下,可用逻辑移位指令实现无符在不溢出的情况下,可用逻辑移位指令实现无符号数的乘、除,算术移位指令
57、实现符号数的乘、号数的乘、除,算术移位指令实现符号数的乘、除。除。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v【例【例4-174-17】 设无符号数设无符号数X X在寄存器在寄存器ALAL中,用移中,用移位指令实现位指令实现X X * * 10 10的运算。的运算。MOV AH,0MOV AH,0SAL AX,1 SAL AX,1 ;AX;AX数数X X* *2 2MOV BX,AXMOV BX,AXMOV CL,2MOV CL,2SAL AX,CL SAL AX,CL ;AX;AX数数X X* *8 8ADD AX,BX ADD AX,BX ;AX;AX数数X X*
58、 *1010第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统3.3.循环移位指令循环移位指令第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(1 1)不带进位位循环左移指令)不带进位位循环左移指令v格式:格式:ROL ROL destdest,CNTCNTv功能:目标操作数循环左移功能:目标操作数循环左移CNTCNT次,最高位移至次,最高位移至最低位的同时移至标志位最低位的同时移至标志位CFCF中。中。v说明:说明:vCNTCNT代表移动次数。代表移动次数。CNT 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vCFCF由运算结果定;
59、不影响由运算结果定;不影响SFSF、ZFZF、AFAF、PFPF;对;对OFOF的影响同的影响同SHLSHL。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(2 2)不带进位位循环右移指令)不带进位位循环右移指令v格式:格式:ROR ROR destdest,CNTCNTv功能:目标操作数循环右移功能:目标操作数循环右移CNTCNT次,最低位移至次,最低位移至最高位的同时移至标志位最高位的同时移至标志位CFCF中。中。v说明:说明:vCNTCNT代表移动次数,代表移动次数,CNT 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vCFCF由运算结果定;不
60、影响由运算结果定;不影响SFSF、ZFZF、AFAF、PFPF;对;对OFOF的影响同的影响同SHLSHL。第第4 4章章 80868086寻址方式与指令系统寻址方式与指令系统v(3 3)带进位位循环左移指令)带进位位循环左移指令v格式:格式:RCL RCL destdest,CNTCNTv功能:目标操作数及标志位功能:目标操作数及标志位CFCF一起循环左移一起循环左移CNTCNT次,最高位移至标志位中,标志位移至最低位。次,最高位移至标志位中,标志位移至最低位。v说明:说明:vCNTCNT代表移动次数,代表移动次数,CNT 1CNT 1时,必须由寄存器时,必须由寄存器CLCL说明。说明。vC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织品及针织品安全标准与质量控制体系考核试卷
- 建筑装饰的室内装修工期管理指南考核试卷
- 炼油厂能源管理与节能技术应用考核试卷
- 花画艺术在音乐节视觉设计中的应用考核试卷
- 海洋牧场规划与运营管理考核试卷
- 橡胶合成过程中副产物的处理与利用考核试卷
- 租赁设备的维修技术培训与提升考核试卷
- 体育经纪公司体育产业人才培养与引进策略考核试卷
- 影视后期制作灯光系统租赁与后期支持协议
- 铁路建设工程监理公司股权合作投资合同
- 长城汽车2025人才测评答案
- 河道的管理和防护课件
- 绿化作业安全教育培训
- GB/T 45282-2025IPv6地址分配和编码规则总体要求
- 机车运用质量指标马元课件
- 二便失禁病人的护理措施
- 浙江省金华义乌市稠州中学2024-2025学年九年级下学期3月独立作业英语试卷(原卷版+解析版)
- 模拟退火与数论-深度研究
- 驾照考试科目一试题900题(含标准答案)022506
- 水利项目立项报告
- 幼儿园初级保育员考试题库(附答案)
评论
0/150
提交评论