《微型计算机基本原理与应用》课件第4章 寻址方式与指令系统.ppt

上传人(卖家):momomo 文档编号:5715989 上传时间:2023-05-05 格式:PPT 页数:189 大小:1.73MB
下载 相关 举报
《微型计算机基本原理与应用》课件第4章 寻址方式与指令系统.ppt_第1页
第1页 / 共189页
《微型计算机基本原理与应用》课件第4章 寻址方式与指令系统.ppt_第2页
第2页 / 共189页
《微型计算机基本原理与应用》课件第4章 寻址方式与指令系统.ppt_第3页
第3页 / 共189页
《微型计算机基本原理与应用》课件第4章 寻址方式与指令系统.ppt_第4页
第4页 / 共189页
《微型计算机基本原理与应用》课件第4章 寻址方式与指令系统.ppt_第5页
第5页 / 共189页
点击查看更多>>
资源描述

1、第第4章章 寻址方式与指令系统寻址方式与指令系统 本章主要内容本章主要内容1.数据寻址方式数据寻址方式2.转移地址寻址方式转移地址寻址方式3.8086 指令系统及编程应用举例指令系统及编程应用举例4.指令编码格式指令编码格式4.1 寻址方式寻址方式4.1.1 数据寻址方式数据寻址方式1.寻址方式概述寻址方式概述 寻址方式寻址方式定义定义:指令中如何提供操作数或操作数地址的指令中如何提供操作数或操作数地址的方式称为寻址方式。方式称为寻址方式。规定如何对地址字段作出解释以找到操作数规定如何对地址字段作出解释以找到操作数 *程序转移时需提供转移地址,这跟提供操作数地址在程序转移时需提供转移地址,这跟

2、提供操作数地址在方法上没有本质区别,因此也归入寻址方式的范畴。方法上没有本质区别,因此也归入寻址方式的范畴。一个指令系统能够提供哪些寻址方式,能否为一个指令系统能够提供哪些寻址方式,能否为编制程序提供方便,这是指令系统设计的关键。编制程序提供方便,这是指令系统设计的关键。需要说明的是,在不同的计算机系统中,寻址需要说明的是,在不同的计算机系统中,寻址方式的名称和分类并不统一,但基本可以归结方式的名称和分类并不统一,但基本可以归结为以下几种方式或它们的变型或组合:为以下几种方式或它们的变型或组合:寻址方式的名称和分类寻址方式的名称和分类立即寻址(立即数寻立即寻址(立即数寻址)址)寄存器寻址寄存器

3、寻址直接寻址直接寻址间接寻址间接寻址变址寻址变址寻址 例如,例如,Z80系统:系统:立即寻址立即寻址;直接寻址;直接寻址立即扩展寻址;立即扩展寻址;零页寻零页寻址址隐含寻址隐含寻址;相对寻址;相对寻址寄存器寻址;变址寻址寄存器寻址;变址寻址寄存器间接寻址;寄存器间接寻址;位寻位寻址址 两类寻址方式两类寻址方式 数据寻址方式数据寻址方式 转移地址寻址方式转移地址寻址方式(重点讨论数据的寻址方式)(重点讨论数据的寻址方式)2.数据寻址方式数据寻址方式(1)立即寻址立即寻址(Immediate addressing)指令中直接给出操作数,操作数紧跟在操作码指令中直接给出操作数,操作数紧跟在操作码之后

4、,作为指令的一部分存放在之后,作为指令的一部分存放在代码段代码段里,在里,在取出指令的同时也就取出了操作数,立即有操取出指令的同时也就取出了操作数,立即有操作数可用,所以称之为作数可用,所以称之为立即寻址立即寻址。目的 源 example MOV AL,80H;低地址低地址 存储器 AX MOV AX,3064H;代 码 ADD AL,20H;段 ADD AX,1090H;高地址高地址 OP 6 4 3 0 立即数可以为立即数可以为8位,也可以为位,也可以为16位。如果是位。如果是16位数,则位数,则“高位字节存放在高地址中,低位字高位字节存放在高地址中,低位字节存放在低地址中节存放在低地址中

5、。”立即寻址方式常用于给寄存器赋值,并且只能立即寻址方式常用于给寄存器赋值,并且只能用于用于源操作数,而不能用于目的源操作数,而不能用于目的操作数。操作数。下述各条指令源操作数的寻址方式也都是立即寻址,下述各条指令源操作数的寻址方式也都是立即寻址,但这些指令都是错误的但这些指令都是错误的:MOV AL,256 ;256=100H,超过了,超过了AL能存放的数的范围能存放的数的范围 MOV AX,-32769;-32769超过了超过了AX能存放的带符号数能存放的带符号数(补码补码)范范 围围 MOV 100H,AL ;立即数不能作为目的操作数立即数不能作为目的操作数 DEC 20 ;单操作数指令

6、不能使用立即数单操作数指令不能使用立即数 MOV DS,1234H ;源操作数是立即数,则目的操作数就不能是源操作数是立即数,则目的操作数就不能是 段寄存器段寄存器(2)寄存器寻址()寄存器寻址(Register addressing)操作数在寄存器中,指令中指明寄存器号,这操作数在寄存器中,指令中指明寄存器号,这种寻址方式叫寄存器寻址。种寻址方式叫寄存器寻址。对于对于8位操作数,寄存器可以是位操作数,寄存器可以是 AH,AL,BH,BL,CH,CL,DH,DL.对于对于16位操作数,寄存器可以是位操作数,寄存器可以是AX,BX,CX,DX,SI,DI,SP,BP,CS,DS,ES,SS(但但

7、CS 不能作不能作目的寄存器)目的寄存器)EXAMPLE INC AX;MOV AX,BX;DEC AX;ROL AH,1;将将AH中的内容循环左移一位中的内容循环左移一位CFD7 D0 练习:练习:MOV AX,BX;正确。正确。指令执行后,指令执行后,AXBX,但,但BX不变不变 MOV AX,BL ;错误。源和目的的位数不相同错误。源和目的的位数不相同 MOV CS,AX ;错误。错误。CS不能作为目的操作数不能作为目的操作数 MOV ES,DS ;错误。两个操作数不能都是段错误。两个操作数不能都是段 寄存器寄存器 寄存器寻址的特点寄存器寻址的特点(1)操作数就在寄存器中操作数就在寄存器

8、中,不需要访问存储器来不需要访问存储器来取得操作数取得操作数(指令执行时,操作就在(指令执行时,操作就在CPU的内的内部进行),因而执行速度快。部进行),因而执行速度快。(2)寄存器号比内存地址短寄存器号比内存地址短 *在编程中,如有可能,尽量使用这种寻址方式的指令。在编程中,如有可能,尽量使用这种寻址方式的指令。*寄存器寻址方式既可用于源操作数,也可用于目的操寄存器寻址方式既可用于源操作数,也可用于目的操作数,还可以两者都用于寄存器寻址方式(如作数,还可以两者都用于寄存器寻址方式(如 MOV BX,AX)除以上两种寻址方式外,下面各种寻址方式的除以上两种寻址方式外,下面各种寻址方式的操作数均

9、在存储器中,通过采用不同的寻址方操作数均在存储器中,通过采用不同的寻址方式取得操作数地址,从而取得操作数。式取得操作数地址,从而取得操作数。(3)直接寻址()直接寻址(Direct Addressing)说明:在讨论寻址方式时,通常把操作数的偏说明:在讨论寻址方式时,通常把操作数的偏移地址称为有效地址移地址称为有效地址EAEA (Effective AddressEffective Address),EAEA可通过不同的寻址方式来得到。可通过不同的寻址方式来得到。在直接寻址方式中,在直接寻址方式中,指令中直接给出操作数的指令中直接给出操作数的有效地址有效地址,或者说,有效地址,或者说,有效地址

10、EA就在指令中。就在指令中。它它(操作数的有效地址,而不是操作数本身操作数的有效地址,而不是操作数本身)存存放在代码段中指令的操作码之后,但操作数一放在代码段中指令的操作码之后,但操作数一般存放在数据段中。般存放在数据段中。例例 1.MOV AX,DS:2000H;如如(DS)=3000H,则指令的执行情况如下图则指令的执行情况如下图所示:所示:代 存储器 采用直接寻址方式,如果没 码 有用“段跨越前缀”标明操作 段 数在哪一段,就默认段寄存 为DS.30000H 数 AX 据 段 32000H 执行结果:(AX)=3050H OP 00 20 50 30 也允许数据存放在数据段以外的其它段(

11、如附也允许数据存放在数据段以外的其它段(如附加段加段)。此时应在指令中给出。此时应在指令中给出“跨越段前缀跨越段前缀”。例例 2:如数据在附加段中,则应指明如数据在附加段中,则应指明“段跨越段跨越缀缀”。MOV AX ,ES:3000H 或或 ES:MOV AX,3000H *为了使指令字不要过长,规定双操作数指令不能两个为了使指令字不要过长,规定双操作数指令不能两个操作数都用直接寻址方式。操作数都用直接寻址方式。如如 MOV DS:2000H,DS:3000H(4)寄存器间接寻址寄存器间接寻址(Register indirect Addressing)采用寄存器间接寻址方式时,指令中给采用寄

12、存器间接寻址方式时,指令中给 出寄存出寄存器号器号(寄存器为寄存器为BX,BP,SI和和DI之一之一),被指定的寄被指定的寄存器中存放着操作数的有效地址,操作数在存存器中存放着操作数的有效地址,操作数在存储器中储器中(以寄存器的内容为操作数的有效地以寄存器的内容为操作数的有效地址)址)。(BX).对应段寄存器为对应段寄存器为 DS EA=(BP).SS (SI).DS (DI)DSExampleMOV AX,BX;设设(DS)=2000H,(BX)=1000H 物理地址物理地址20000H 1000H=21000H *指令中也可以通过 AX .“段跨越前缀”取得 数 其他段中的数据,据 例如:

13、段 MOV AX,ES:BX 21000H 指令的执行结果为:(AX)=50A0H A0 50(5)寄存器相对寻址()寄存器相对寻址(Register relative addressing)操作数的有效地址是一个基址或变址寄存器的操作数的有效地址是一个基址或变址寄存器的内容与指令中指定的内容与指令中指定的8位或位或16位位移量位位移量(Displacement)之和。之和。如下图所示:如下图所示:(BX)8位位移量位位移量EA=(BP)+(SI)16位位移量位位移量 (DI)若没有段跨越前缀,则对于寄存器若没有段跨越前缀,则对于寄存器BX,SI,DI的情况,的情况,段寄存器为段寄存器为DS;

14、对于寄存器为对于寄存器为BP的情况,则段寄存器为的情况,则段寄存器为SS。ExampleMOV AX,SI+3000H 操操设设(DS)4000H,(SI)=2000H 作作物理地址物理地址 码码40000H+2000H+3000H 位位 45000H 移移 量量指令的执行情况如指令的执行情况如 右图右图 AX 40000H 43000H SI 数数 45000H 据据 段段 OP OP 00 30 34 12这种寻址方式可用于表格的处理,通过这种寻址方式可用于表格的处理,通过位移量位移量来设置表格的首地址;来设置表格的首地址;利用修改利用修改基址寄存器或变址寄存器基址寄存器或变址寄存器的内容

15、来获的内容来获得表项的值。得表项的值。(6)基址变址寻址()基址变址寻址(Based indexed addressing)操作数的有效地址是一个基址寄存器和一个变操作数的有效地址是一个基址寄存器和一个变址寄存器内容之和,两个寄存器均由指令指定。址寄存器内容之和,两个寄存器均由指令指定。(BX)(SI)若基址寄存器为若基址寄存器为BX,则段寄存器为则段寄存器为DSEA +(BP)(DI)若基址寄存器为若基址寄存器为BP,则段寄存器为则段寄存器为SS Example 例例:MOV AX,BX+DI 设设(DS)=2100H,(BX)=0158H,(DI)=10A5H.则则 EA=0158H+10

16、A5H=11FDH 物理地址物理地址21000H+11FDH=221FDH (BX)21000H 21158H AX 221FDH 34 12这种寻址方式同样适用于表格这种寻址方式同样适用于表格(或数组或数组)的处理的处理,表的首地址可存放在基址寄存器中,而用变址表的首地址可存放在基址寄存器中,而用变址寄存器来访问表格中的各项。寄存器来访问表格中的各项。由于两个寄存器都可以修改,使由于两个寄存器都可以修改,使 用起来更灵活。用起来更灵活。(7)相对基址加变址寻址相对基址加变址寻址(Relative based indexed address)也称也称“带位移量的基址加变址寻址方式带位移量的基址

17、加变址寻址方式”.操作数的有效地址是一个基址寄存器和一个变址寄存器操作数的有效地址是一个基址寄存器和一个变址寄存器内容与内容与8位或位或16位位移量之和。位位移量之和。(BX)(SI)用用BX,则段寄存器为则段寄存器为 DS EA=+位移量位移量 (BP)(DI)用用BP,则段寄存器为则段寄存器为 SS例:例:MOV AX,BX+SI+0250H设设(DS)=3000H,(BX)=2000H,(SI)=1000H,则 代代 EA 2000H+1000H+0250H=3250H 码码物理地址物理地址30000H+3250H=33250H 段段 30000H 位移量位移量 AX 30250H 数数

18、 (BX)32250H 据据 (SI)33250H 段段 OP OP 50 02 34 12这种寻址方式可用于访问二维数组。这种寻址方式可用于访问二维数组。设数组元素在内存中按行顺序存放(首先放第一行所设数组元素在内存中按行顺序存放(首先放第一行所有元素,再放第二行所有元素,有元素,再放第二行所有元素,)。通过改变基址)。通过改变基址寄存器(如寄存器(如BXBX)和变址寄存器(如)和变址寄存器(如SI)SI)的值可以访问数的值可以访问数组中不同行和列上的元素。组中不同行和列上的元素。若保持若保持BXBX不变而不变而SISI改变,则可以访问同一行的所有元改变,则可以访问同一行的所有元素。素。若保

19、持若保持SISI不变而不变而BXBX改变,则可以访问同一列的所有元改变,则可以访问同一列的所有元素。素。数据的寻址方式的寻址过程数据的寻址方式的寻址过程(图示)图示).指令数据寄存器(1)立即寻址数据指令寄存器(2)寄存器寻址图图4-1 数据的寻址方式的寻址过程数据的寻址方式的寻址过程(1)EA数据指令存储器(3)直接寻址寄存器EA指令寄存器(4)寄存器间接寻址数据存储器图图4-1 数据的寻址方式的寻址过程(数据的寻址方式的寻址过程(2)数据存储器地址寄存器寄存器指令位移量+EA(5)寄存器相对寻址图图4-1 数据的寻址方式的寻址过程数据的寻址方式的寻址过程(3)图图4-1 数据的寻址方式的寻

20、址过程(数据的寻址方式的寻址过程(4)数据存储器基地址寄存器基址寄存器指令变址寄存器+EA(6)基址变址寻址变址值寄存器图图4-1 数据的寻址方式的寻址过程(数据的寻址方式的寻址过程(5)数据存储器基地址寄存器基址寄存器指令变址寄存器+EA(7)基址变址相对寻址变址值寄存器位移量端口号数据指令端口(8)直接寻址DX端口号指令DX(9)间接寻址数据端口 图图4-1 数据的寻址方式的寻址过程(数据的寻址方式的寻址过程(6)端口操作数3 转移地址的寻址方式转移地址的寻址方式有关术语和概念有关术语和概念:段内转移段内转移如果转移地址与该转移类指令在同如果转移地址与该转移类指令在同一个代码段,这样的转移

21、称为段内转移,也称一个代码段,这样的转移称为段内转移,也称近转移近转移;近转移时的转移地址只包含偏移地址部分,找近转移时的转移地址只包含偏移地址部分,找到转移地址后,将转移地址送入到转移地址后,将转移地址送入IP即可实现转即可实现转移移(CS的内容不必改变的内容不必改变)。段间转移段间转移如果转移地址与该转移类指令位于如果转移地址与该转移类指令位于不同的代码段,这样的转移称为段间转移,也不同的代码段,这样的转移称为段间转移,也称称远转移远转移;远转移时的转移地址既包含偏移地址部分又包远转移时的转移地址既包含偏移地址部分又包含段基值部分,找到转移地址后,将转移地址含段基值部分,找到转移地址后,将

22、转移地址的段基值部分送入的段基值部分送入CS,将转移地址的偏移地址,将转移地址的偏移地址部分送入部分送入IP即可实现转移。即可实现转移。直接转移直接转移如果转移地址直接放在指令中,则如果转移地址直接放在指令中,则这样的转移称为直接转移,视转移地址是绝对这样的转移称为直接转移,视转移地址是绝对地址还是相对地址地址还是相对地址(即地址位移量即地址位移量)又可分别称又可分别称为为绝对转移和相对转移。绝对转移和相对转移。间接转移间接转移如果转移地址间接放在其他地方,如果转移地址间接放在其他地方,则这样的转移称为间接转移,视转移地址是在则这样的转移称为间接转移,视转移地址是在寄存器中还是在存储器中又可分

23、别称为寄存器寄存器中还是在存储器中又可分别称为寄存器操作数操作数(寄存器寻址寄存器寻址)和存储器操作数和存储器操作数(存储器寻存储器寻址址)。以以JMP指令为例,可将转移地址的各种寻址指令为例,可将转移地址的各种寻址方式列出,如表方式列出,如表4-2所示。所示。表表4-2 转移地址的寻址方式转移地址的寻址方式 段内转移例段内转移例 段间转移例段间转移例直接转移直接转移(L为标号)转移地址在指令中(近标号)转移地址在指令中(近标号)转移地址在指令中(远标号)转移地址在指令中(远标号)JMP L(近)JMP FAR PTR L(远)寄存器操作数寄存器操作数转移地址在通用字寄存器中转移地址在通用字寄

24、存器中无JMP AX间间接接转转移移存存储储器器操操作作数数直接寻址JMP WORD PRT DS:20JMP DWORD PTR DS:20间接寻址寄存器间接寻址 转移地址在转移地址在“BX,BP,SI,DI 之一之一”中中JMP BXJMP DWORD PTR BX寄存器相对寻址 转移地址在转移地址在“BX,BP,SI,DI 之一之一+位移量位移量”中中JMP BX+20JMP DWORD PTR BX+20基址变址寻址 转移地址在转移地址在“BX,BP之一之一SI,DI 之一之一”中中JMP BX+SIJMP DWORD PTR BX+SI基址变址相对寻址 转移地址在转移地址在“BX,B

25、P之一之一SI,DI 之一位移量之一位移量”中中JMP BX+SI+20JMP DWORD PTR BX+SI+20(1)段内直接转移段内直接转移(直接近转移直接近转移)特点:特点:转移地址转移地址(通常就是近标号通常就是近标号)直接包含在汇编形式的转直接包含在汇编形式的转移指令中,移指令中,转移指令的机器代码中存放的是该标号与转移指令的机器代码中存放的是该标号与当前当前IP值的差值的差(标号标号-IP),此差称为位移量,该位移量此差称为位移量,该位移量与转移指令一起存于代码段:与转移指令一起存于代码段:位移量被放在转移指令位移量被放在转移指令的操作码之后,也是的操作码之后,也是“高字节放在高

26、地址单元,低字高字节放在高地址单元,低字节放在低地址单元节放在低地址单元”。在取转移指令时,此位移量即作为转移指令的一部分在取转移指令时,此位移量即作为转移指令的一部分被取入被取入CPU中。中。执行转移指令时,将这个位移量加到执行转移指令时,将这个位移量加到IP上即可上即可得到转移地址得到转移地址(标号的值标号的值),即即 IP+(标号标号-IP)=标号标号=转移地址转移地址不必为找这个转移地址再去访问寄存器或存储器。不必为找这个转移地址再去访问寄存器或存储器。例如,如果例如,如果L是本段中的标号,则下述指令采用的是是本段中的标号,则下述指令采用的是段内直接转移方式:段内直接转移方式:JMP

27、L;机器指令中的位移量为机器指令中的位移量为L-IP,转移地址为,转移地址为L(2)段内间接转移段内间接转移(间接近转移间接近转移)寄存器操作数寄存器操作数(也称寄存器寻址也称寄存器寻址)例:例:JMP BX;BX的内容为转移地址的内容为转移地址 存储器操作数存储器操作数(也称存储器寻址也称存储器寻址)(i)直接寻址直接寻址 其特征是:其特征是:转移地址转移地址(偏移地址部分偏移地址部分)在数据存储单元在数据存储单元中,数据存储单元的地址在指令中直接给出。中,数据存储单元的地址在指令中直接给出。例如,例如,JMP WORD PTR DS:20;数据存储单元数据存储单元(DS:20)的一个字为转

28、移地址的一个字为转移地址(ii)寄存器间接寻址寄存器间接寻址其特征是其特征是:转移地址转移地址(偏移地址部分偏移地址部分)在数据存储单元在数据存储单元中,数据存储单元的偏移地址在中,数据存储单元的偏移地址在BX、BP、SI、DI之之一中。一中。例如,下述指令采用的就是段内间接转移、寄存器间例如,下述指令采用的就是段内间接转移、寄存器间接寻址方式接寻址方式:JMPBX ;数据存储单元数据存储单元(DS:BX)的一个字为转移地址的一个字为转移地址 JMPBP ;数据存储单元数据存储单元(SS:BP)的一个字为转移地址的一个字为转移地址JMP DS:BP;数据存储单元数据存储单元(DS:BP)的一个

29、字为转移地址的一个字为转移地址 (iii)寄存器相对寻址寄存器相对寻址 其特征是其特征是:转移地址:转移地址(偏移地址部分偏移地址部分)在数据存在数据存储单元中,数据存单元的偏移地址是寄存器储单元中,数据存单元的偏移地址是寄存器(BX、BP、SI、DI之一之一)的内容与位移量的和。的内容与位移量的和。例如,下述指令采用的就是段内间接转移、寄存器相例如,下述指令采用的就是段内间接转移、寄存器相对寻址方式:对寻址方式:JMPBX+20 ;数据存储单元数据存储单元(DS:BX+20)的一个字为转移地的一个字为转移地址址 JMPBP+20 ;数据存储单元数据存储单元(SS:BP+20)的一个字为转移地

30、址的一个字为转移地址JMP DS:BP+20 ;数据存储单元数据存储单元(DS:BP+20)的一个字为转移地的一个字为转移地 址址(iv)基址变址寻址基址变址寻址 其特征是:其特征是:转移地址转移地址(偏移地址部分偏移地址部分)在数据存在数据存储单元中,数据存储单元的偏移地址是基址寄储单元中,数据存储单元的偏移地址是基址寄存器存器(BX、BP之一之一)的内容和变址寄存器的内容和变址寄存器(SI、DI之一之一)的内容之和。的内容之和。例如,下述指令采用的就是段内间接转移、基例如,下述指令采用的就是段内间接转移、基址变址寻址方式址变址寻址方式:JMPBX+SI;数据存储单元数据存储单元(DS:BX

31、+SI)的一个字为转移地址的一个字为转移地址 JMPBP+SI;数据存储单元数据存储单元(SS:BP+SI)的一个字为转移地址的一个字为转移地址 JMP DS:BP+SI ;数据存储单元数据存储单元(DS:BP+SI)的一个字为转移地址的一个字为转移地址(v)基址变址相对寻址基址变址相对寻址 其特征是:其特征是:转移地址转移地址(偏移地址部分偏移地址部分)在数据存在数据存储单元中,数据存储单元的偏移地址是基址寄储单元中,数据存储单元的偏移地址是基址寄存器存器(BX、BP之一之一)的内容、变址寄存器的内容、变址寄存器(SI、DI之一之一)的内容及位移量的和。的内容及位移量的和。例如,下述指令采用

32、的就是段内间接转移、寄例如,下述指令采用的就是段内间接转移、寄存器间接寻址方式存器间接寻址方式:JMPBX+SI+20 ;数据存储单元数据存储单元(DS:BX+SI+20)的一个字为转移地址的一个字为转移地址JMPBP+SI+20 ;数据存储单元数据存储单元(SS:BP+SI+20)的一个字为转移地址的一个字为转移地址 JMP DS:BP+SI+20 ;数据存储单元数据存储单元(DS:BP+SI+20)的一个字为转移地址的一个字为转移地址(3)段间直接转移段间直接转移(直接远转移直接远转移)转移地址转移地址(通常就是远标号通常就是远标号)直接包含在汇编形直接包含在汇编形式的转移类指令中,也直接

33、存放在转移类指令式的转移类指令中,也直接存放在转移类指令的机器代码中,它是转移类指令不可分割的一的机器代码中,它是转移类指令不可分割的一部分,位于转移类指令的操作码之后。部分,位于转移类指令的操作码之后。高字高字存放转移地址的存放转移地址的段基值段基值部分,部分,低字低字存放转存放转移地址的移地址的偏移地址偏移地址部分。在取转移类指令时,部分。在取转移类指令时,此段基值和偏移地址作为转移类指令的一部分此段基值和偏移地址作为转移类指令的一部分被取入被取入CPU中,执行转移类指令时,不必为找中,执行转移类指令时,不必为找转移地址再去访问寄存器或存储器。转移地址再去访问寄存器或存储器。例如,如果例如

34、,如果L是其他代码段中的标号,则下述是其他代码段中的标号,则下述指令采用的就是段间直接转移方式:指令采用的就是段间直接转移方式:JMP FAR PTR L ;在在L左边通常要加上类左边通常要加上类型说明型说明FAR PTR(4)段间间接转移段间间接转移(间接远转移间接远转移)段间间接转移时的转移地址既包含偏移地址部分,又段间间接转移时的转移地址既包含偏移地址部分,又包含段基值部分,在数据存储器中占两个字:低字单包含段基值部分,在数据存储器中占两个字:低字单元存放偏移地址,高字单元存放段基值。元存放偏移地址,高字单元存放段基值。要在转移类指令中的地址表达式左边加上类型说明要在转移类指令中的地址表

35、达式左边加上类型说明DWORD PTR。例如,。例如,JMP DWORD PTR B ;1 直接寻址直接寻址JMP DWORD PTR DS:20 ;2 直接寻址直接寻址JMP DWORD PTR BX ;3 寄存器间接寻址寄存器间接寻址JMP DWORD PTR BX+B ;4 寄存器相对寻址寄存器相对寻址JMP DWORD PTR BX+20 ;5 寄存器相对寻址寄存器相对寻址JMP DWORD PTR BX+SI ;6 基址变址寻址基址变址寻址JMP DWORD PTR BX+SI+B ;7 基址变址相对寻址基址变址相对寻址JMP DWORD PTR BX+SI+20;8 基址变址相对寻

36、址基址变址相对寻址 指令转移地址寄存器(1)直接转移转移地址指令寄存器(2)寄存器间接转移图图4-2 转移地址的寻址方式的寻址过程转移地址的寻址方式的寻址过程(1)EA转移地址指令存储器(3)直接寻址寄存器EA指令寄存器(4)寄存器间接寻址转移地址存储器图图4-2 转移地址的寻址方式的寻址过程(转移地址的寻址方式的寻址过程(2)转移地址存储器地址寄存器寄存器指令位移量+EA(5)寄存器相对寻址图图4-2 转移地址的寻址方式的寻址过程(转移地址的寻址方式的寻址过程(3)图图4-2 转移地址的寻址方式的寻址过程(转移地址的寻址方式的寻址过程(4)转移地址存储器基地址寄存器基址寄存器指令变址寄存器+

37、EA(6)基址变址寻址变址值寄存器图图4-2 转移地址的寻址方式的寻址过程(转移地址的寻址方式的寻址过程(5)转移地址存储器基地址寄存器基址寄存器指令变址寄存器+EA(7)基址变址相对寻址变址值寄存器位移量4.1.2 8086/8088 指令系统指令系统可以分为以下六类(四类):可以分为以下六类(四类):传送指令传送指令 算术运算指令算术运算指令 逻辑运算和移位指令逻辑运算和移位指令 运算类运算类 串操作指令串操作指令 转移指令转移指令 处理器控制指令处理器控制指令一、传送指令一、传送指令包括包括:通用传送指令通用传送指令和和专用传送指令专用传送指令两类两类1.通用传送指令:通用传送指令:名称

38、格式类型操作传送交换入栈出栈MOV 目的,源XCHG 操作数1,操作数2PUSH 源字 POP 目的字B/WB/WWW(目的)(源)(操作数1)(操作数2)SP SP-2,(SS:SP)(源)字(目的)字(SS:SP),SP SP+2(1)MOV 指令指令 立即数存储器存储器直接寻址直接寻址寄存器间接寻址寄存器间接寻址寄存器相对寻址寄存器相对寻址基址变址寻址基址变址寻址基址变址相对寻址基址变址相对寻址通用寄存器通用寄存器AX BX CX DXSI DI SP BPAL BL CL DLAH BH CH DH段寄存器DSESSSCS例例:MOV AL,BL MOV DI,AX MOV CX,DS

39、:1000H MOV BL,40 MOV WORD PTRSI,01H BYTE PTR 字节长度标记字节长度标记WORD PTR 字长度标记字长度标记DWORD PTR 双字长度标记双字长度标记 标志:所有通用传送指令都不影响标志位。标志:所有通用传送指令都不影响标志位。练习练习1用用MOV指令实现两内存字节单元内容的交换指令实现两内存字节单元内容的交换 2035H 2045H 01H .02H用直接寻址方式实现用直接寻址方式实现 MOV BL,DS:2035H MOV CL,DS:2045H MOV DS:2045H,BL MOV DS:2035H,CL HLT用寄存器间接寻址方式实现用寄

40、存器间接寻址方式实现 MOV SI,2035H MOV DI,2045H MOV AH,SI MOV AL,DI MOV DS:2035H,AL MOV DS:2045H,AH 练习练习2把数据块把数据块BLOCK1移到移到BLOCK2 2040H 2060H 把把2040H地址开始的地址开始的10个字节数据移到个字节数据移到2060地地址开始的址开始的10个字节单元处。个字节单元处。BLOCK1BLOCK2 ANSWER MOV SI,2040H MOV DI,2060H MOV CX,0AH LOOP1:MOV BL,SI+09H;MOV DI+09H,BL;DEC SI DEC DI D

41、EC CX JNZ LOOP1 HLT 练习练习3把把2040H地址开始的地址开始的10个字节单元的内容与个字节单元的内容与2060H地址开始的地址开始的10个字节单元内容互换。个字节单元内容互换。MOV BL,SI+09HMOV AL,DI+09HMOV SI+09H,ALMOV DI+09H,BL(2)PUSH指令和指令和POP指令指令 堆栈的图示:压入压入:格式 PUSH SRC (SS)先修改指针:SP SP-2 后压入:(SP+1,SP)SRC(SP)弹出弹出:格式 POP DST 栈顶 先弹出:DST (SP+1,SP)压 弹 后修改指针:SP SP+2 入 出高地址 栈底 最后一

42、项(3)XCHG指令(交换指令)指令(交换指令)格式:格式:XCHG OPR1,OPR2操作:操作:OPTR1 OPTR2标志:标志:O D I T S Z A P C -例例:XCHG AL,BL XCHG BX,CX XCHG DS:2530H,CX XCHG指令允许的操作数及数据传送方向指令允许的操作数及数据传送方向 存储器存储器直接寻址直接寻址寄存器间接寻址寄存器间接寻址寄存器相对寻址寄存器相对寻址基址变址寻址基址变址寻址基址变址相对寻址基址变址相对寻址通用寄存器通用寄存器AX BX CX DXSI DI SP BPAL BL CL DLAH BH CH DH 练习练习用用XCHG指令

43、改进指令改进前面的数据块交换程序:前面的数据块交换程序:MOV BL,SI+09H XCHG BL,DI+09H MOV SI+09H,BL MOV BL,SI+09HMOV AL,DI+09HMOV SI+09H,ALMOV DI+09H,BL2.专用传送指令专用传送指令专用传送指令有专用传送指令有15条,可分为条,可分为标志传送、查表、标志传送、查表、地址传送、符号扩展、输入地址传送、符号扩展、输入/输出和串传送类输出和串传送类共六种,它们的名称、书写格式、完成的操作共六种,它们的名称、书写格式、完成的操作及操作类型如下表所示。及操作类型如下表所示。专用传送指令专用传送指令 (1)名称格式

44、类型操作标标志志传传送送标志入栈标志入栈PUSHF WSP SP-2,(SS:SP)Flag出栈到标志出栈到标志POPF WFlag(SS:SP),SP SP+2标志送标志送AHLAHFBAHFlag低低8位位AH送标志送标志SAHFBFlag低低8位位 AH查查表表查表查表XLAT或或XLATBXLAT 段寄存器:变量名段寄存器:变量名BBAL(DS:BX+AL)AL(段寄存器:段寄存器:BX+AL)地地址址传传送送传送有效地址传送有效地址LEA 16位位Reg,Mem W16位位 RegMem的有效地的有效地址址地址指针送寄地址指针送寄存器及存器及DSLDS 16位位Reg,双字双字 Me

45、m W16位位 Reg(Mem)低字低字DS(Mem)高字高字地址指针送寄地址指针送寄存器及存器及ESLES 16位位Reg,双字双字 Mem W16位位Reg(Mem)低字低字ES(Mem)高字高字专用传送指令专用传送指令 (2)续表名称名称格式格式类型类型操作操作符号符号扩展扩展字节扩展为字字节扩展为字字扩展为双字字扩展为双字CBWCWDB WAH的各位的各位AL的最高位的最高位DX的各位的各位AX的最高位的最高位输入输入输出输出 输入输入IN Ac,端口号端口号B/WAc(端口端口),端口号:端口号:00FFHIN Ac,DXB/WAc(DX),DX:00FFFFH 输出输出 OUT 端

46、口号端口号,AcB/W(端口端口)Ac,端口号:端口号:00FFHOUT DX,AcB/W(DX)Ac,DX:00FFFFH 专用传送指令专用传送指令 (3)续表名称名称格式格式类型类型操作操作串串传传送送类类串传送串传送MOVSBB(ES:DI)字节字节(DS:SI)字节字节DF=0时时 SISI+1,DIDI+1DF=1时时 SISI-1,DIDI-1MOVSWW(ES:DI)字字(DS:SI)字字DF=0时时 SISI+2,DIDI+2DF=1时时 SISI-2,DIDI-2*MOVS 目的,源目的,源B/W略略串存储串存储(存入串存入串)STOSBB(ES:DI)AL若若DF=0,则则

47、DIDI+1若若DF=1,则则DIDI-1STOSWW(ES:DI)AX若若DF=0,则则DIDI+2若若DF=1,则则DIDI-2*STOS 目的目的B/W略略专用传送指令专用传送指令 (4)续表名称名称格式格式类型类型操作操作串串传传送送类类串装入串装入(从串取从串取)LODSBBAL(DS:DI)若若DF=0,则则SISI+1若若DF=1,则则SISI-1LODSWWAX(DS:DI)若若DF=0,则则SISI+2若若DF=1,则则SISI-2*LODS 源源B/W略略(1)标志传送指令标志传送指令标志传送指令共标志传送指令共4条:条:PUSHF POPF LAHF ;AH Flag的低

48、的低8位位 SAHF ;Flag的低的低8位位 AH例:例:将将8086 标志寄存器的标志寄存器的TF位置位置“1”(2)查表指令查表指令查表指令查表指令XLAT将以将以BX+AL为偏移地址的内存为偏移地址的内存单元中的一个字节送到单元中的一个字节送到AL中。中。在使用在使用XLAT指令前,应先在内存中建立一个指令前,应先在内存中建立一个字节数据表,字节数据表,表的首字节的偏移地址要事先存表的首字节的偏移地址要事先存入入BX,表中待查的数据相对于表开始处的位表中待查的数据相对于表开始处的位移量也要事先存入移量也要事先存入AL。指令执行时,会将指令执行时,会将BX的内容与的内容与AL的内容相加,

49、的内容相加,用得到的数作为偏移地址,以用得到的数作为偏移地址,以DS为段地址,将为段地址,将该地址处存储单元中的内容该地址处存储单元中的内容(字节字节)取到取到AL中。中。例如,例如,如果如果B为数据段中一组字节变量的开始地为数据段中一组字节变量的开始地址,则执行下列程序段后,址,则执行下列程序段后,AL=66H。B DB 3FH,06H,5BH,4FH,66H ;数据段中的数据表 DB 6DH,7DH,07H,7FH,6FH MOV BX,OFFSET B ;使使BX中存放数据表首字节的偏移地址中存放数据表首字节的偏移地址 MOV AL,4 ;使使AL中存放欲查单元的地址位移量中存放欲查单元

50、的地址位移量4 XLAT ;查表得到的内容查表得到的内容(字节字节)在在AL中中在此例中,数据表中存放的数据恰好是共阳极数码管在此例中,数据表中存放的数据恰好是共阳极数码管的输入信号,所以,只要事先在的输入信号,所以,只要事先在AL中放好一个十进制中放好一个十进制数码数码(09),就能通过上述程序段得到数码管的相应输,就能通过上述程序段得到数码管的相应输入信号。入信号。(3)地址传送指令地址传送指令地址传送指令有地址传送指令有LEA、LDS和和LES共共3条条:LEA(Load Effective Address)LDS(Load pointer into register and DS)LE

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《微型计算机基本原理与应用》课件第4章 寻址方式与指令系统.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|