汇编第3章8086寻址方式与指令系统1_第1页
汇编第3章8086寻址方式与指令系统1_第2页
汇编第3章8086寻址方式与指令系统1_第3页
汇编第3章8086寻址方式与指令系统1_第4页
汇编第3章8086寻址方式与指令系统1_第5页
已阅读5页,还剩199页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、v采用采用不同不同CPUCPU的计算机的的计算机的指令系统不同。指令系统不同。 v采用采用不同不同CPUCPU的计算机的的计算机的指令的格式不同。指令的格式不同。 v采用采用不同不同CPUCPU的计算机的各指令允许的的计算机的各指令允许的寻址方式寻址方式 不同不同。 v要使用某种微处理器,必须先要掌握其指令系统要使用某种微处理器,必须先要掌握其指令系统 和各指令允许的寻址方式。和各指令允许的寻址方式。 5 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 为何要规定寻址方式为何要规定寻址方式 v问题问题 操作数是地址,如果位数少,则访问内存的空操作数是地址,如果位数少,则访

5、问内存的空 间收到限制。相反,则地址码长度太大,特别间收到限制。相反,则地址码长度太大,特别 是两个或三个操作对象时,这个问题突出。是两个或三个操作对象时,这个问题突出。 如果指令中的地址字段只能表示内存的实际地如果指令中的地址字段只能表示内存的实际地 址,碰到需要按某种规律访问的操作对象时,址,碰到需要按某种规律访问的操作对象时, 很不方便。很不方便。 6 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.2 80863.2 8086寻址方式寻址方式 v寻址方式:寻址方式: 指令中给出的求出操作数有效地址的方法。指令中给出的求出操作数有效地址的方法。 v寻址操作:寻址

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

7、 式式 8 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v内存中操作数寻址方式地址采用逻辑地址。内存中操作数寻址方式地址采用逻辑地址。 段基址:段内偏移地址段基址:段内偏移地址 偏移地址由下面三个中一个或某几个的组合求偏移地址由下面三个中一个或某几个的组合求 得,并由此命名为不同的寻址方式。得,并由此命名为不同的寻址方式。 A. A.偏移量。可用数字或变量名或符号地址表偏移量。可用数字或变量名或符号地址表 示,示,8 8位或位或1616位。位。 B. B.基址。基址。BX BX 或或BPBP中的内容。中的内容。 C. C.变址。变址。SI SI 或或DIDI中的内容。

8、中的内容。 汇编规定双操作数指令中最多只允许有一个操作汇编规定双操作数指令中最多只允许有一个操作 数位于内存。数位于内存。 9 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.2.1 3.2.1 立即寻址立即寻址 v操作数直接出现在指令中,此时的操作数也叫立操作数直接出现在指令中,此时的操作数也叫立 即数。即数。 v立即数紧跟在操作码后面,一起存放在代码段中立即数紧跟在操作码后面,一起存放在代码段中 。 v例如:例如: MOV AXMOV AX,2010H2010H 在该指令格式中,在该指令格式中,AXAX是目标操作数,是目标操作数,2010H2010H是源操作是源操

9、作 数。数。 10 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 立即寻址方式的指令执行示意立即寻址方式的指令执行示意 图图 11 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 立即寻址方式说明立即寻址方式说明 v在所有的指令中,立即数只能作源操作数,不能作在所有的指令中,立即数只能作源操作数,不能作 目标操作数。目标操作数。 v立即数应与目标操作数的长度一致。立即数应与目标操作数的长度一致。 v立即数默认采用十进制形式,以十六进制形式出现立即数默认采用十进制形式,以十六进制形式出现 的立即数应以字母的立即数应以字母H H为后缀,以八进制形式出现

10、的立为后缀,以八进制形式出现的立 即数应以字母即数应以字母Q Q为后缀。为后缀。 v以十六进制形式出现的立即数,若以字母开头,则以十六进制形式出现的立即数,若以字母开头,则 必须以数字必须以数字0 0为前缀。为前缀。 v立即数还可以用表示立即数还可以用表示+ +、- -、/ /表示的算术表达式表示的算术表达式 ,也可以用圆括号改变运算顺序。,也可以用圆括号改变运算顺序。 v立即数只能是整数,不能是小数、变量或其它类型立即数只能是整数,不能是小数、变量或其它类型 的数据。的数据。 12 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.2.2 3.2.2 寄存器寻址寄存器

11、寻址 v操作数在寄存器中,在指令中指定寄存器号。操作数在寄存器中,在指令中指定寄存器号。 v由于寄存器号短,因此,采用寄存器寻址方式由于寄存器号短,因此,采用寄存器寻址方式 的指令的机器码长度短。的指令的机器码长度短。 v操作数在寄存器中,指令执行时,操作就在操作数在寄存器中,指令执行时,操作就在 CPUCPU的内部进行,不需要通过访问存储器来取的内部进行,不需要通过访问存储器来取 得操作数,因而指令的执行速度快。得操作数,因而指令的执行速度快。 v在编程中,如有可能,应尽量在指令中使用这在编程中,如有可能,应尽量在指令中使用这 种寻址方式。种寻址方式。 v例如:例如: MOV AXMOV A

12、X,2010H2010H 13 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 寄存器寻址方式可用的寄存器寄存器寻址方式可用的寄存器 v对于对于1616位操作数,寄存器可以是:位操作数,寄存器可以是: AXAX,BXBX,CXCX,DXDX SISI,DIDI,SPSP,BPBP CSCS,DSDS,SSSS和和ESES v对对8 8位操作数,寄存器可以是:位操作数,寄存器可以是: AHAH,ALAL BHBH,BLBL CHCH,CLCL DHDH,DLDL 14 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 寄存器寻址方式指令执行示意图寄存器寻

13、址方式指令执行示意图 15 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 寄存器寻址方式说明寄存器寻址方式说明 v在一条指令中,寄存器寻址方式既可用于源操作在一条指令中,寄存器寻址方式既可用于源操作 数,也可用于目标操作数,还可以两者都用寄存数,也可用于目标操作数,还可以两者都用寄存 器寻址方式。器寻址方式。 v源操作数与目标操作数的长度应一致。例如,不源操作数与目标操作数的长度应一致。例如,不 能将寄存器能将寄存器AXAX的内容传送到寄存器的内容传送到寄存器BHBH中,也不能中,也不能 将寄存器将寄存器BHBH的内容传送到寄存器的内容传送到寄存器AXAX中。中。 v两

14、个操作数不能同时为段寄存器。两个操作数不能同时为段寄存器。 v目标操作数不能是代码段寄存器。目标操作数不能是代码段寄存器。 16 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v以下各种寻址方式操作数在代码段以外的内存中以下各种寻址方式操作数在代码段以外的内存中, , 内存地址采用逻辑地址表示。内存地址采用逻辑地址表示。 段基址:段内偏移地址(段基址:段内偏移地址(EAEA) 偏移量:可以用数字也可用变量名或符号地址偏移量:可以用数字也可用变量名或符号地址 表示表示 MOV AX MOV AX,NUMANUMA 基址:基址:BXBX或或 BP BP 变址:变址:SI S

15、I 或或DIDI vEA=EA=基址基址+ +(变址(变址* *比例因子)比例因子)+ +位移量位移量 17 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 各种访存类型对应的段的默认选择各种访存类型对应的段的默认选择 访存类型访存类型所用段及段寄存器所用段及段寄存器 指令指令代码段代码段 CSCS寄存器寄存器 堆栈堆栈堆栈段堆栈段 SSSS寄存器寄存器 局部数据局部数据数据段数据段 DSDS寄存器寄存器 目的串目的串附加数据段附加数据段 ESES寄存器寄存器 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 19 第第3 3章章 80868086寻址

16、方式与指令系统寻址方式与指令系统 3.2.4 3.2.4 直接寻址直接寻址 v操作数在存储器中,操作数在存储器中,操作数地址的偏移量(操作数地址的偏移量(EAEA) 在指令中。在指令中。指令中以具体数值的形式直接给出操指令中以具体数值的形式直接给出操 作数所在存储单元的有效地址作数所在存储单元的有效地址EAEA。为了与立即数。为了与立即数 区别,该有效地址必须用区别,该有效地址必须用括起。括起。 v物理地址物理地址= =制定段的段基址制定段的段基址* *16+16+偏移量偏移量 系统默认,操作数在数据段系统默认,操作数在数据段 v例如:例如: MOV AXMOV AX,2010H2010H 该

17、指令的源操作数采用直接寻址方式。该指令的源操作数采用直接寻址方式。 若若(DS)=2000H(DS)=2000H,那么指令执行后,那么指令执行后,(AX)=1225H(AX)=1225H。 20 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 直接寻址方式指令执行示意图直接寻址方式指令执行示意图 21 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v采用直接寻址方式时,如果指令中没有用前缀说采用直接寻址方式时,如果指令中没有用前缀说 明操作数存放在哪个段,则操作数默认存放在数明操作数存放在哪个段,则操作数默认存放在数 据段。据段。 v8086808

18、6系统允许操作数存放在代码段、堆栈段或附系统允许操作数存放在代码段、堆栈段或附 加段。此时,就需要在指令中指明段超越。加段。此时,就需要在指令中指明段超越。 v例如:例如: MOV ES:1225HMOV ES:1225H,AX AX 该指令的目标操作数采用直接寻址方式。操作数存该指令的目标操作数采用直接寻址方式。操作数存 放在由放在由ESES指示的附加段中。指示的附加段中。 物理地址物理地址=ES=ES10H+1225H10H+1225H。 22 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v在汇编语言指令中,可以用符号地址代替数值地在汇编语言指令中,可以用符号地址

19、代替数值地 址。址。 v例如:例如: MOV AXMOV AX,NUMANUMA 此时,此时,NUMANUMA是存放操作数的内存单元的符号地址。是存放操作数的内存单元的符号地址。 v上面这条指令还可以写成如下的形式:上面这条指令还可以写成如下的形式: MOV AXMOV AX,NUMANUMA v如如DATA1DATA1数据存放在附加段,则可以用如下的形数据存放在附加段,则可以用如下的形 式指定段跨越前缀:式指定段跨越前缀: MOV AX MOV AX,ES: NUMAES: NUMA或或 MOV AXMOV AX,ES: NUMAES: NUMA 注注:80868086中规定双操作数的指令中

20、两个操作数,中规定双操作数的指令中两个操作数, 只能用一个使用存储器寻址方式。只能用一个使用存储器寻址方式。 23 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.2.4 3.2.4 寄存器间接寻址寄存器间接寻址 v操作数的有效地址操作数的有效地址EAEA存放在基址寄存器存放在基址寄存器BXBX、BPBP或或 变址寄存器变址寄存器SISI、DIDI中。中。 v为了区别于寄存器寻址方式,指令中指定的寄存为了区别于寄存器寻址方式,指令中指定的寄存 器名要用器名要用括起来。括起来。 v指令中使用指令中使用SISI、DIDI、BXBX寄存器时,操作数默认存寄存器时,操作数默认

21、存 放在数据段中;使用放在数据段中;使用BPBP寄存器时,操作数默认存寄存器时,操作数默认存 放在堆栈段中;允许段超越。放在堆栈段中;允许段超越。 v操作数的物理地址操作数的物理地址=(DS)=(DS)10H+(SI)/(DI)/(BX)10H+(SI)/(DI)/(BX) 或或 (SS)(SS)10H+(BP)10H+(BP) 24 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v例如:例如: MOV AX MOV AX,SI SI v该指令的源操作数采用寄存器间接寻址方式。该指令的源操作数采用寄存器间接寻址方式。 v若若(DS)=2000H(DS)=2000H,(S

22、I)=2010H(SI)=2010H,那么指令执行后,那么指令执行后 ,(AX)=1225H(AX)=1225H。 v如操作数不存放在间址寄存器默认的段,则指如操作数不存放在间址寄存器默认的段,则指 定段超越的指令可采用如下形式。定段超越的指令可采用如下形式。 MOV AXMOV AX,ES:SIES:SI 此时,操作数的物理地址此时,操作数的物理地址=ES=ES10H+SI10H+SI。 25 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 寄存器间接寻址方式指令执行示意图寄存器间接寻址方式指令执行示意图 26 第第3 3章章 80868086寻址方式与指令系统寻址方式

23、与指令系统 3.2.5 3.2.5 寄存器相对寻址寄存器相对寻址 v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址(是指令中指定的基址( BX,BPBX,BP)或变址寄存器)或变址寄存器(SI,DI)(SI,DI)中的值与指定的中的值与指定的8 8 位或位或1616位偏移量之和。位偏移量之和。 BXBX EA= EA=SISI DI + 8DI + 8位或位或1616位偏移量位偏移量 BPBP v指令中使用指令中使用SISI、DIDI、BXBX寄存器时,操作数默认存寄存器时,操作数默认存 放在数据段中;使用放在数据段中;使用BPBP寄存器时,操作数默认存寄存器时,操作数默认存 放在

24、堆栈段中,允许段超越。放在堆栈段中,允许段超越。 27 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 操作数的物理地址操作数的物理地址 =(DS)=(DS)10H+(SI)/(DI)/(BX)+810H+(SI)/(DI)/(BX)+8位或位或1616位位移量位位移量 或或 =(SS)=(SS)10H+(BP)+810H+(BP)+8位或位或1616位位移量位位移量 28 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v例如:例如: MOV AX MOV AX,8BX 8BX v该指令的源操作数采用寄存器相对寻址方式。该指令的源操作数采用寄存器相

25、对寻址方式。 v若(若(DSDS)=2000H=2000H,(,(BXBX)=2008H=2008H,那么指令执,那么指令执 行后,(行后,(AXAX)=1225H=1225H。 v例:例:MOV AX, COUNTSIMOV AX, COUNTSI 如果如果 DS=3000H ,SI=2000H,COUNT=3000HDS=3000H ,SI=2000H,COUNT=3000H 则物理地址则物理地址=30000+2000+3000=35000 H=30000+2000+3000=35000 H 29 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 寄存器相对寻址方式的指

26、令执行示意图寄存器相对寻址方式的指令执行示意图 30 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 寄存器相对寻址说明寄存器相对寻址说明 v偏移量是符号数,偏移量是符号数,8 8位偏移量的取值范围为:位偏移量的取值范围为:0000 0FFH(0FFH(即即+127D+127D-128D)-128D); v1616位偏移量的取值范围为:位偏移量的取值范围为:000000000FFFFH(0FFFFH(即即 +32767D+32767D-32768D)-32768D)。 v80868086汇编允许用下面三种形式表示相对寻址,它汇编允许用下面三种形式表示相对寻址,它 们是等效

27、的。们是等效的。 MOV AXMOV AX,BX+8 BX+8 MOV AXMOV AX,8BX 8BX MOV AXMOV AX,BX+8BX+8 注注:这种方式可用于处理数组和表格,偏移量设置为数组:这种方式可用于处理数组和表格,偏移量设置为数组 或表格首地址,利用基址或变址访问不同元素。或表格首地址,利用基址或变址访问不同元素。 31 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.2.63.2.6基址变址寻址基址变址寻址 v操作数的有效地址操作数的有效地址EAEA是指令中指定的基址寄是指令中指定的基址寄 存器存器(BX,BP)(BX,BP)的值与变址寄存器的的

28、值与变址寄存器的(SI,DI)(SI,DI)值值 之和。之和。 v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存时,操作数默认存 放在数据段中;放在数据段中; v使用基址寄存器使用基址寄存器BPBP时,操作数默认存放在堆时,操作数默认存放在堆 栈段中,允许段超越。栈段中,允许段超越。 v操作数的物理地址操作数的物理地址 = =(DSDS)10H+10H+(SISI)/ /(DIDI)+ +(BXBX) 或或 = =(SSSS)10H+10H+(SISI)/ /(DIDI)+ +(BPBP) 32 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v例如:例

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

30、寻址 v操作数的有效地址是一个基址寄存器的内容、一操作数的有效地址是一个基址寄存器的内容、一 个变址寄存器的内容及个变址寄存器的内容及8 8位或位或1616位位移量之和。位位移量之和。 v操作数的物理地址操作数的物理地址 = =(DSDS)10H+10H+(SISI)/ /(DIDI)+ +(BXBX)+8+8位或位或1616位位移量位位移量 或或 = =(SSSS)10H+10H+(SISI)/ /(DIDI)+ +(BPBP)+8+8位或位或1616位位移量位位移量 v指令中使用基址寄存器指令中使用基址寄存器BXBX时,操作数默认存放在时,操作数默认存放在 数据段中;数据段中; v使用基址

31、寄存器使用基址寄存器BPBP时,操作数默认存放在堆栈段时,操作数默认存放在堆栈段 中,允许段超越。中,允许段超越。 35 第第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。 v这种方式方便处理二维数组,偏移量设置为数组这种方式方便处理

32、二维数组,偏移量设置为数组 或表格首地址,利用基址或变址访问行和列。或表格首地址,利用基址或变址访问行和列。 36 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 相对基址变址寻址方式的指令执行示意图相对基址变址寻址方式的指令执行示意图 37 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 38 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.3 80863.3 8086指令系统指令系统 v80868086指令系统包括六大类指令:指令系统包括六大类指令: v数据传送指令数据传送指令 v算术运算指令算术运算指令 v逻辑运算和移

33、位指令逻辑运算和移位指令 v串操作指令串操作指令 v控制转移指令控制转移指令 v处理器控制指令处理器控制指令 39 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v80868086汇编指令中的操作数可以有零个、一个或两汇编指令中的操作数可以有零个、一个或两 个,通常称为零地址、一地址或二地址指令。个,通常称为零地址、一地址或二地址指令。 v二地址指令中的两个操作数分别称为源操作数和二地址指令中的两个操作数分别称为源操作数和 目标操作数。目标操作数。 40 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.3.13.3.1数据传送指令数据传送指令

34、v数据传送指令是将数据或地址传送到寄存器、存数据传送指令是将数据或地址传送到寄存器、存 储单元或储单元或I/OI/O端口中。端口中。 v包括包括5 5类:类: v通用数据传送指令;通用数据传送指令; v累加器专用传送指令;累加器专用传送指令; v地址传送指令;地址传送指令; v标志传送指令;标志传送指令; v数据类型转换指令。数据类型转换指令。 41 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 数据传送指令的共同特点数据传送指令的共同特点 v除了除了POPFPOPF和和SAHFSAHF指令外,其他的数据传送指令的指令外,其他的数据传送指令的 执行结果都不影响标志位。执

35、行结果都不影响标志位。 v指令中如果列出两个操作数,则指令的执行过程指令中如果列出两个操作数,则指令的执行过程 是:目标操作数是:目标操作数源操作数。源操作数。 v指令中如果仅列出一个操作数,则另一个操作数指令中如果仅列出一个操作数,则另一个操作数 为隐含操作数。为隐含操作数。 42 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 1.1.通用数据传送指令通用数据传送指令 v1 1)传送指令)传送指令 v格式:格式:MOV MOV 目标操作数,源操作数目标操作数,源操作数 v功能:将源操作数的内容(一个字或一个字节)功能:将源操作数的内容(一个字或一个字节) 传送到目标操

36、作数指定的寄存器或内存单元,源传送到目标操作数指定的寄存器或内存单元,源 操作数内容不变。操作数内容不变。 43 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 MOVMOV指令举例指令举例 MOV ALMOV AL,5 5;字节传送,立即数送通用寄存器;字节传送,立即数送通用寄存器 MOV AXMOV AX,BXBX;字传送,通用寄存器送通用寄存器;字传送,通用寄存器送通用寄存器 MOV DSMOV DS,AXAX ;字传送,通用寄存器送段寄存器;字传送,通用寄存器送段寄存器 44 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 45 第第3 3章

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

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

39、)互换。操作数的内容(一个字或字节)互换。 v例如:例如: XCHG BLXCHG BL,AHAH ;字节交换,寄存器与寄存器的内容交换;字节交换,寄存器与寄存器的内容交换 XCHG AXXCHG AX,BXSIBXSI ;字交换,寄存器与内存单元的内容交换;字交换,寄存器与内存单元的内容交换 47 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 XCHGXCHG指令的使用说明指令的使用说明 v 两个操作必须有一个在寄存器中。两个操作必须有一个在寄存器中。 v源操作数和目标操作数不可以同时是寄存器(累源操作数和目标操作数不可以同时是寄存器(累 加器)加器)AXAX。 v段

40、寄存器、寄存器段寄存器、寄存器IPIP或立即数不可以作为源操作或立即数不可以作为源操作 数或目标操作数。数或目标操作数。 v例如:例如: XCHG AXXCHG AX,2011H2011H;源操作数不能是立即数源操作数不能是立即数 XCHG CSXCHG CS,5SI5SI;CSCS不能作为操作数不能作为操作数 XCHG AXXCHG AX,AX AX ;源操作数和目标操作数不可同是源操作数和目标操作数不可同是AXAX 48 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v【例【例3-13-1】若两个字数据分别存储在内存单元】若两个字数据分别存储在内存单元 NUM1NU

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

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

43、,堆栈所在的段就是堆栈段,它可 以占用的最大空间是以占用的最大空间是64KB64KB。堆栈段中地址最大单。堆栈段中地址最大单 元称为栈底,通常固定。元称为栈底,通常固定。 v堆栈段的段地址由堆栈段的段地址由SSSS寄存器指示。寄存器指示。 v堆栈指针寄存器堆栈指针寄存器SPSP始终指示栈顶的偏移地址并随始终指示栈顶的偏移地址并随 着入栈着入栈SP-2SP-2,出栈操作,出栈操作SP+2SP+2而自动变化。而自动变化。 v当进行压入操作后堆栈指针达到定义值,表明堆当进行压入操作后堆栈指针达到定义值,表明堆 栈满;当执行弹出操作后堆栈指针回到初值,表栈满;当执行弹出操作后堆栈指针回到初值,表 明堆

44、栈空。明堆栈空。 v当栈满时,再压入数据,称为当栈满时,再压入数据,称为“堆栈溢出堆栈溢出”。 51 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 1.1.通用数据传送指令(续)通用数据传送指令(续) v3)3)堆栈操作指令堆栈操作指令 v80868086指令系统中:指令系统中: v堆栈操作指令中操作数的类型只能是字,不能是堆栈操作指令中操作数的类型只能是字,不能是 字节。字节。 v立即数不能作为操作数。立即数不能作为操作数。 52 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 进栈指令进栈指令 v格式:格式:PUSH PUSH 源操作数源操作数

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

46、 v (SP) (SP) (SP) +2 (SP) +2 v说明:说明: v目标操作数可以是段寄存器、目标操作数可以是段寄存器、1616位寄存器或内存位寄存器或内存 操作数。操作数。 v当目标操作数是段寄存器时,不能是当目标操作数是段寄存器时,不能是CSCS寄存器。寄存器。 54 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 【例【例3-23-2】 v设设(SS)=2011H(SS)=2011H,(SP)=0020H(SP)=0020H,依次执行下列汇编,依次执行下列汇编 指令后,分析堆栈中的数据和寄存器指令后,分析堆栈中的数据和寄存器AXAX、BXBX、SPSP 的变

47、化情况。的变化情况。 MOV AX,0103HMOV AX,0103H MOV BX,1228HMOV BX,1228H PUSH AXPUSH AX PUSH BXPUSH BX POP BXPOP BX 55 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 56 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 57 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 2.2.累加器专用传送指令累加器专用传送指令 v(1 1)换码指令)换码指令 v格式一:格式一:XLATXLAT v格式二:格式二:XLAT XLAT 表格首地址表

48、格首地址 v功能:将内存表格中某一单元的值传送至寄存器功能:将内存表格中某一单元的值传送至寄存器 ALAL,实现一种编码到另一种编码的转换。例如,实现一种编码到另一种编码的转换。例如, 把字符的扫描码转换成把字符的扫描码转换成ASCIIASCII码。码。 v指令的执行如下操作:指令的执行如下操作: v把数据段中偏移地址为把数据段中偏移地址为BX+ALBX+AL的内存单元的内容的内存单元的内容 送到送到ALAL中,即:中,即:(AL) (AL) ( BX + AL) ( BX + AL)。 58 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 XLATXLAT指令使用说明指

49、令使用说明 v源操作数、目标操作数均隐含。源操作数、目标操作数均隐含。 v该指令隐含说明:寄存器该指令隐含说明:寄存器BXBX保存内存表格的首地保存内存表格的首地 址;寄存器址;寄存器ALAL保存表格中某单元在此表格中的偏保存表格中某单元在此表格中的偏 移量。因此,在使用该指令之前,必须先初始化移量。因此,在使用该指令之前,必须先初始化 BXBX和和ALAL这两个寄存器。这两个寄存器。 v该指令能访问的内存表格中的数据只能是字节类该指令能访问的内存表格中的数据只能是字节类 型的。型的。 v该指令能访问的内存表格的最大容量是该指令能访问的内存表格的最大容量是256256字节字节 。 v格式二中的

50、表格首地址部分,只是为了提高程序格式二中的表格首地址部分,只是为了提高程序 的可读性而设置的。指令执行时,使用的可读性而设置的。指令执行时,使用BXBX的值作的值作 为表格首地址。为表格首地址。 59 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 XLATXLAT指令用法举例指令用法举例 v若若(DS)=2000H(DS)=2000H ,(BX)=0020H(BX)=0020H ,(AL)=9H(AL)=9H, v则执行指令则执行指令 XLATXLAT后,后, (AL)=39H(AL)=39H。 60 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统

51、 例:在数据区中例:在数据区中TABLETABLE开始的存储区顺序存开始的存储区顺序存 放放AZAZ的的ASCIIASCII码,下程序是把字母从码,下程序是把字母从0 0开始开始 的存放顺序号变成对应的字母的的存放顺序号变成对应的字母的ASCIIASCII码值。码值。 TABLE DB A B C D E .ZTABLE DB A B C D E .Z MOV BX, OFFSET TABLE MOV BX, OFFSET TABLE MOV AL,4MOV AL,4 XLATXLAT 61 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 (2 2)输入)输入/ /输出指

52、令(输出指令(I/OI/O指令)指令) v(1 1)输入指令)输入指令 v格式一:格式一:IN ALIN AL,端口地址,端口地址 v格式二:格式二:IN AXIN AX,端口地址,端口地址 v格式三:格式三:IN ALIN AL,DXDX v格式四:格式四:IN AXIN AX,DXDX v功能:从指令中指定的功能:从指令中指定的I/OI/O端口读入一字节数据端口读入一字节数据 到到ALAL或一个字数据到或一个字数据到AXAX。 62 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 (2 2)输出指令)输出指令 v格式一:格式一:OUT OUT 端口地址,端口地址,AL

53、AL v格式二:格式二:OUT OUT 端口地址,端口地址,AXAX v格式三:格式三:OUT DXOUT DX,ALAL v格式四:格式四:OUT DXOUT DX,AXAX v功能:将功能:将ALAL或或AXAX的内容输出到一个的内容输出到一个8 8位位I/OI/O端口或端口或 1616位位I/OI/O端口。端口。 63 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 IN/OUTIN/OUT指令的使用说明指令的使用说明 v采用格式一和格式二时,端口地址的取值范围是采用格式一和格式二时,端口地址的取值范围是 :0 0FFHFFH,可以寻址,可以寻址256256个个I/

54、OI/O端口。端口。 v当端口地址值超过当端口地址值超过255D255D时,只能采用格式三或格时,只能采用格式三或格 式四,把端口地址保存到寄存器式四,把端口地址保存到寄存器DXDX中,此时,端中,此时,端 口地址的取值范围是:口地址的取值范围是:0 0FFFFHFFFFH,可以寻址,可以寻址 6553665536个个I/OI/O端口。端口。 v当端口是当端口是8 8位时,目标操作数选用位时,目标操作数选用ALAL寄存器;当寄存器;当 端口是端口是1616位时,目标操作数选位时,目标操作数选AXAX寄存器。寄存器。 64 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 I

55、N/OUTIN/OUT指令的使用举例指令的使用举例 vMOV DX,60HMOV DX,60H; ;端口地址送端口地址送DXDX寄存器中寄存器中 vIN AL,DXIN AL,DX; ;从从60H60H端口写入一个端口写入一个8 8位数位数 vOUT 90H,AXOUT 90H,AX; ;将将1616位数输出到位数输出到90H90H端口端口 65 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 3.3.地址传送指令地址传送指令 v在汇编程序中,地址是一种特殊操作数,区别于在汇编程序中,地址是一种特殊操作数,区别于 一般数据操作数,它无符号,长度为一般数据操作数,它无符号,

56、长度为1616位。位。 v在在80868086系统中,有专门的指令进行地址传送。系统中,有专门的指令进行地址传送。 66 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 (1 1)取有效地址指令)取有效地址指令LEALEA v格式:格式:LEA r16LEA r16,memmem v功能:取内存单元功能:取内存单元memmem的有效地址,送到的有效地址,送到1616位寄位寄 存器存器r16r16中,即:中,即:r16 r16 EA(mem) EA(mem)。 v例如,设例如,设DS=2100HDS=2100H,BX=100HBX=100H,SI=10HSI=10H, (D

57、S:110H)=1234H(DS:110H)=1234H,则指令:,则指令: vLEA BX,BX+SI LEA BX,BX+SI v执行后,执行后,(BX)=(BX)+(SI)=110H(BX)=(BX)+(SI)=110H。 67 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v(2 2)地址指针装入)地址指针装入DSDS指令指令LDSLDS v格式:格式:LDS r16LDS r16,m32m32 v功能:把内存中的功能:把内存中的3232位源操作数中的低位源操作数中的低1616位送到位送到 指定寄存器指定寄存器r16r16中,高中,高1616位送到段寄存器位送到

58、段寄存器DSDS中。中。 即:即:r16 r16 m32 m32低低1616位;位;DSDS m32 m32高高1616位。位。 v(3 3)地址指针装入)地址指针装入ESES指令指令LESLES v把上述指令中的把上述指令中的DSDS换成换成ESES,即成为,即成为LESLES指令。指令。 68 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 4.4.标志传送指令标志传送指令 v标志寄存器用于记载指令执行引起的状态变化及标志寄存器用于记载指令执行引起的状态变化及 一些特殊控制位,以此作为控制程序执行的依据一些特殊控制位,以此作为控制程序执行的依据 。 v标志寄存器是特殊

59、寄存器,不能像一般数据寄存标志寄存器是特殊寄存器,不能像一般数据寄存 器那样随意操作,以免其中的值发生变化。器那样随意操作,以免其中的值发生变化。 69 第第3 3章章 80868086寻址方式与指令系统寻址方式与指令系统 v(1 1)取标志指令)取标志指令LAHFLAHF v格式:格式:LAHFLAHF v该指令中的源操作数隐含为标志寄存器低该指令中的源操作数隐含为标志寄存器低8 8位,位, 目标操作数隐含为目标操作数隐含为AHAH。 v功能:把功能:把1616位的标志寄存器低位的标志寄存器低8 8位送寄存器位送寄存器AHAH。 v(2 2)置标志指令)置标志指令SAHFSAHF v格式:格

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论