1、26 八月 20241重点大学计算机专业系列教材重点大学计算机专业系列教材重点大学计算机专业系列教材重点大学计算机专业系列教材第第3章章 指令格式与寻址方式指令格式与寻址方式【本章提要本章提要本章提要本章提要】本章讲述本章讲述本章讲述本章讲述IntelIntelIntelIntel系列微处理器的指令通用格式和各种寻系列微处理器的指令通用格式和各种寻系列微处理器的指令通用格式和各种寻系列微处理器的指令通用格式和各种寻址方式。除无操作数指令以外,一般指令都需要指出操址方式。除无操作数指令以外,一般指令都需要指出操址方式。除无操作数指令以外,一般指令都需要指出操址方式。除无操作数指令以外,一般指令都
2、需要指出操作数,指令中操作数的给出(即寻址方式)有多种方法。作数,指令中操作数的给出(即寻址方式)有多种方法。作数,指令中操作数的给出(即寻址方式)有多种方法。作数,指令中操作数的给出(即寻址方式)有多种方法。通过多种寻址方式,提高了程序设计的灵活性,也扩充通过多种寻址方式,提高了程序设计的灵活性,也扩充通过多种寻址方式,提高了程序设计的灵活性,也扩充通过多种寻址方式,提高了程序设计的灵活性,也扩充了指令的具体功能。了指令的具体功能。了指令的具体功能。了指令的具体功能。【学习目标学习目标学习目标学习目标】熟练掌握汇编语言指令和机器指令的基本格式熟练掌握汇编语言指令和机器指令的基本格式熟练掌握汇
3、编语言指令和机器指令的基本格式熟练掌握汇编语言指令和机器指令的基本格式明确操作数的各种寻址方式明确操作数的各种寻址方式明确操作数的各种寻址方式明确操作数的各种寻址方式掌握各种寻址方式物理地址的计算掌握各种寻址方式物理地址的计算掌握各种寻址方式物理地址的计算掌握各种寻址方式物理地址的计算汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回226 八月 20243.1 指令格式指令格式 机器指令格式:机器指令格式:机器指令格式:机器指令格式:汇编指令格式:汇编指令格式:汇编指令格式:汇编指令格式:oo指令助记符指令助记符指令助记符指令助记符表示指令的名称,它是指令功能的英文缩写,
4、对应的是机表示指令的名称,它是指令功能的英文缩写,对应的是机表示指令的名称,它是指令功能的英文缩写,对应的是机表示指令的名称,它是指令功能的英文缩写,对应的是机器指令中的操作码部分;器指令中的操作码部分;器指令中的操作码部分;器指令中的操作码部分;oo操作数操作数操作数操作数即被处理的对象,若指令中包含多个即被处理的对象,若指令中包含多个即被处理的对象,若指令中包含多个即被处理的对象,若指令中包含多个操作数操作数操作数操作数,则操作数之间以,则操作数之间以,则操作数之间以,则操作数之间以逗号分隔;逗号分隔;逗号分隔;逗号分隔;oo注释注释注释注释以分号开始,用来说明程序功能,不影响指令的执行。
5、以分号开始,用来说明程序功能,不影响指令的执行。以分号开始,用来说明程序功能,不影响指令的执行。以分号开始,用来说明程序功能,不影响指令的执行。最常用的数据传送指令最常用的数据传送指令最常用的数据传送指令最常用的数据传送指令MOVMOV的格式为:的格式为:的格式为:的格式为:MOV DESTMOV DEST,SRC SRC ;将源操作数;将源操作数;将源操作数;将源操作数SRCSRC的值传送至目的操作数的值传送至目的操作数的值传送至目的操作数的值传送至目的操作数【例例例例】MOV EAX MOV EAX,EBX EBX ;将;将;将;将EBXEBX的值送给的值送给的值送给的值送给EAXEAX操
6、作码操作码 操作数操作数指令助记符指令助记符 操作数列表操作数列表 ;注释;注释汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回526 八月 20243.2.2 有效地址的概念有效地址的概念在在在在80X8680X86系列系列系列系列CPUCPU中,内存单元的地址由两部分组成:中,内存单元的地址由两部分组成:中,内存单元的地址由两部分组成:中,内存单元的地址由两部分组成:段基地址段基地址段基地址段基地址和和和和段内偏移地址段内偏移地址段内偏移地址段内偏移地址(也称段内偏移量)(也称段内偏移量)(也称段内偏移量)(也称段内偏移量)1 1)段基地址段基地址段基地址段基地址一般
7、可由段寄存器直接给出,如一般可由段寄存器直接给出,如一般可由段寄存器直接给出,如一般可由段寄存器直接给出,如CSCS、DSDS、SSSS、ESES等,也可以通过段寄存器的内容进行计算得出。等,也可以通过段寄存器的内容进行计算得出。等,也可以通过段寄存器的内容进行计算得出。等,也可以通过段寄存器的内容进行计算得出。2 2)段内偏移量段内偏移量段内偏移量段内偏移量最多可以由四个基本部分,按照一定的规则计最多可以由四个基本部分,按照一定的规则计最多可以由四个基本部分,按照一定的规则计最多可以由四个基本部分,按照一定的规则计 算组合而成,所以也称为算组合而成,所以也称为算组合而成,所以也称为算组合而成
8、所以也称为有效地址有效地址有效地址有效地址EAEA。有效地址四分量包括:有效地址四分量包括:有效地址四分量包括:有效地址四分量包括:基址寄存器内容:基址寄存器内容:基址寄存器内容:基址寄存器内容:变址寄存器内容:变址寄存器内容:变址寄存器内容:变址寄存器内容:比例因子:比例因子:比例因子:比例因子:在在在在32/6432/64位寻址方式中使用位寻址方式中使用位寻址方式中使用位寻址方式中使用 位移量:位移量:位移量:位移量:一般是一个具体数值一般是一个具体数值一般是一个具体数值一般是一个具体数值基址、变址寄存器的值通常为某基址、变址寄存器的值通常为某局部存储区的首地址局部存储区的首地址(比如数
9、组比如数组)汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回626 八月 2024有效地址有效地址EA计算方法:计算方法:EAEA 基址寄存器基址寄存器基址寄存器基址寄存器(变址寄存器变址寄存器变址寄存器变址寄存器比例因子)位移量比例因子)位移量比例因子)位移量比例因子)位移量有效地址四分量的使用规则:有效地址四分量的使用规则:有效地址四分量的使用规则:有效地址四分量的使用规则:有效地址分量有效地址分量有效地址分量有效地址分量1616位寻址方式位寻址方式位寻址方式位寻址方式3232位寻址方式位寻址方式位寻址方式位寻址方式6464位寻址方式位寻址方式位寻址方式位寻址方式基址
10、寄存器基址寄存器基址寄存器基址寄存器BXBX,BPBP所有所有所有所有3232位通用寄存器位通用寄存器位通用寄存器位通用寄存器所有所有所有所有3232位位位位/64/64位通用寄存位通用寄存位通用寄存位通用寄存器(器(器(器(1616个)个)个)个)变址寄存器变址寄存器变址寄存器变址寄存器SISI,DIDI除除除除ESPESP外的所有外的所有外的所有外的所有3232位位位位通用寄存器通用寄存器通用寄存器通用寄存器所有所有所有所有3232位位位位/64/64位通用寄存位通用寄存位通用寄存位通用寄存器(器(器(器(1616个)个)个)个)比例因子比例因子比例因子比例因子不用该分量,默不用该分量,默
11、不用该分量,默不用该分量,默认为认为认为认为1 11 1,2 2,4 4,8 8(倍)(倍)(倍)(倍)1 1,2 2,4 4,8 8(倍)(倍)(倍)(倍)位移量位移量位移量位移量0 0,8 8,1616(位)(位)(位)(位)0 0,8 8,3232(位)(位)(位)(位)0 0,8 8,3232,6464(位)(位)(位)(位)如:如:如:如:ADD AXADD AX,20BXSI 20BXSI ;EA=EA=(BXBX)+(SISI)+20+20 MOV EBX MOV EBX,EAX4*EDX+2AH EAX4*EDX+2AH ;EA=(EAX)+(EDX)EA=(EAX)+(EDX
12、)4+2AH4+2AH汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回726 八月 2024oo1616位寻址方式主要是针对于实地址存储模式的应位寻址方式主要是针对于实地址存储模式的应位寻址方式主要是针对于实地址存储模式的应位寻址方式主要是针对于实地址存储模式的应用,兼容了用,兼容了用,兼容了用,兼容了Intel 8086Intel 8086的工作模式。存储器的的工作模式。存储器的的工作模式。存储器的的工作模式。存储器的最大分段不超过最大分段不超过最大分段不超过最大分段不超过64KB64KB,最大线性地址空间是,最大线性地址空间是,最大线性地址空间是,最大线性地址空间是1
13、MB1MB。oo3232位寻址方式主要是用于保护模式下,程序只能位寻址方式主要是用于保护模式下,程序只能位寻址方式主要是用于保护模式下,程序只能位寻址方式主要是用于保护模式下,程序只能存取最低存取最低存取最低存取最低4GB4GB地址空间,使用地址空间,使用地址空间,使用地址空间,使用1616位或位或位或位或3232位地址。位地址。位地址。位地址。使用使用使用使用1616位的分段选择子以及位的分段选择子以及位的分段选择子以及位的分段选择子以及3232位的段内偏移地位的段内偏移地位的段内偏移地位的段内偏移地址,每个段最大可达址,每个段最大可达址,每个段最大可达址,每个段最大可达4GB4GB。oo6
14、464位寻址方式采用位寻址方式采用位寻址方式采用位寻址方式采用6464位线性地址空间,支持位线性地址空间,支持位线性地址空间,支持位线性地址空间,支持4040位物理地址空间。通常不采用分段方式,而是将位物理地址空间。通常不采用分段方式,而是将位物理地址空间。通常不采用分段方式,而是将位物理地址空间。通常不采用分段方式,而是将CSCS,DSDS,ESES和和和和SSSS的段基址看成的段基址看成的段基址看成的段基址看成0 0,这样线性地,这样线性地,这样线性地,这样线性地址等于有效地址,是一种平展存储管理模式。址等于有效地址,是一种平展存储管理模式。址等于有效地址,是一种平展存储管理模式。址等于有
15、效地址,是一种平展存储管理模式。不同方式下的寻址空间不同方式下的寻址空间汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回826 八月 20243.3 各种寻址方式各种寻址方式一、立即寻址一、立即寻址操作数作为立即数直接包含在指令中操作数作为立即数直接包含在指令中,在指令执行时不需再访问存储器。立即在指令执行时不需再访问存储器。立即数可以是数可以是8、16、32、64位。位。MOV BL,12H ;字节传送;字节传送MOV AX,1020H ;字传送;字传送MOV EDX,12345678H ;32位传送位传送MOV RAX,1122334455667788H ;64位传送
16、位传送(四字四字)代码段代码段AH ALAH AL操作码操作码20H10H汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回926 八月 2024二、寄存器寻址方式二、寄存器寻址方式寄存器寻址方式下,被访问的操作数存放在指令规定寄存器寻址方式下,被访问的操作数存放在指令规定寄存器寻址方式下,被访问的操作数存放在指令规定寄存器寻址方式下,被访问的操作数存放在指令规定的寄存器中。的寄存器中。的寄存器中。的寄存器中。INCCL ;8位寄存器加位寄存器加1MOVDS,AX ;16位寄存器传送位寄存器传送MOVECX,EAX ;32位寄存器传送位寄存器传送MOV RBX,RAX ;6
17、4位寄存器传送位寄存器传送CPUCPU执行指令时,不需要使用访问总线,所以指令的执行指令时,不需要使用访问总线,所以指令的执行指令时,不需要使用访问总线,所以指令的执行指令时,不需要使用访问总线,所以指令的执行速度快。执行速度快。执行速度快。执行速度快。DSAX汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1026 八月 2024三存储器寻址方式三存储器寻址方式AX2001H2000H高地址高地址低地址低地址操作码操作码0000202034H34H12H12H12H 34H 含义:操作数在存储区中,指令的操作数部分指出此操作数的含义:操作数在存储区中,指令的操作数部分指
18、出此操作数的含义:操作数在存储区中,指令的操作数部分指出此操作数的含义:操作数在存储区中,指令的操作数部分指出此操作数的有效地址有效地址有效地址有效地址EAEA。根据。根据。根据。根据EAEA的生成方式的不同,可分为以下几种的生成方式的不同,可分为以下几种的生成方式的不同,可分为以下几种的生成方式的不同,可分为以下几种寻址分式寻址分式寻址分式寻址分式:(1)直接寻址)直接寻址:是存储器直接寻址的简称,指令中的操作数部分直接是存储器直接寻址的简称,指令中的操作数部分直接给出操作数的有效地址给出操作数的有效地址EA,是,是16位或位或32位的位移量数据,它放位的位移量数据,它放在代码段中,操作数一
19、般在数据段中,也可以进行段超越在代码段中,操作数一般在数据段中,也可以进行段超越。MOV AX,2000H;将;将DS段中段中2000H和和2001H单元内容单元内容 ;分别送分别送AL和和AHMOV AX,ES:2000H ;将;将ES段中段中2000H和和2001H单单 ;元内容分别送;元内容分别送AL和和AH汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1126 八月 2024(2)寄存器间接寻址)寄存器间接寻址操作数在存储器中,而操作数的有效地址操作数在存储器中,而操作数的有效地址操作数在存储器中,而操作数的有效地址操作数在存储器中,而操作数的有效地址EAEA却
20、在指定的寄存器中,却在指定的寄存器中,却在指定的寄存器中,却在指定的寄存器中,即即即即 EAEA 寄存器寄存器寄存器寄存器 1 1)1616位寻址时,位寻址时,位寻址时,位寻址时,EAEA放在放在放在放在SISI、DIDI、BPBP或或或或BXBX中中中中。oo若以若以若以若以SISI、DIDI、BXBX间接寻址,则默认操作数在间接寻址,则默认操作数在间接寻址,则默认操作数在间接寻址,则默认操作数在DSDS段中。段中。段中。段中。MOV AXMOV AX,SISI;默认;默认;默认;默认DSDS为段基址为段基址为段基址为段基址oo若以寄存器若以寄存器若以寄存器若以寄存器BPBP间接寻址,则默认
21、操作数在堆栈段中。间接寻址,则默认操作数在堆栈段中。间接寻址,则默认操作数在堆栈段中。间接寻址,则默认操作数在堆栈段中。MOV AXMOV AX,BPBP;默认;默认;默认;默认SSSS为段基址为段基址为段基址为段基址oo如果操作数不在上述规定的默认段,则必须在指令中相应的操作数前加上如果操作数不在上述规定的默认段,则必须在指令中相应的操作数前加上如果操作数不在上述规定的默认段,则必须在指令中相应的操作数前加上如果操作数不在上述规定的默认段,则必须在指令中相应的操作数前加上段超越前缀。段超越前缀。段超越前缀。段超越前缀。MOV CXMOV CX,DSDS:BPBP;DSDS:是段超越前缀,:是
22、段超越前缀,:是段超越前缀,:是段超越前缀,表示访问表示访问表示访问表示访问 数据段,而非堆栈段数据段,而非堆栈段数据段,而非堆栈段数据段,而非堆栈段2 2)3232位寻址时,位寻址时,位寻址时,位寻址时,8 8个个个个3232位通用寄存器均可作寄存器间接寻址。位通用寄存器均可作寄存器间接寻址。位通用寄存器均可作寄存器间接寻址。位通用寄存器均可作寄存器间接寻址。MOVMOVCHCH,EAXEAX MOV MOVDXDX,EBXEBXoo除除除除EBPEBP、ESPESP默认段寄存器为默认段寄存器为默认段寄存器为默认段寄存器为SSSS外,其余外,其余外,其余外,其余6 6个寄存器均默认段寄存器个
23、寄存器均默认段寄存器个寄存器均默认段寄存器个寄存器均默认段寄存器DSDS,可以采用段超越前缀对其它段进行寻址。,可以采用段超越前缀对其它段进行寻址。,可以采用段超越前缀对其它段进行寻址。,可以采用段超越前缀对其它段进行寻址。ooCSCS和和和和ESES不能被超越,在堆栈操作时,不能被超越,在堆栈操作时,不能被超越,在堆栈操作时,不能被超越,在堆栈操作时,SSSS也不能被超越。也不能被超越。也不能被超越。也不能被超越。汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1226 八月 20243 3)6464位寻址时,位寻址时,1616个个3232位位/64/64位通用寄存器均
24、可作寄存器间接寻址使用。位通用寄存器均可作寄存器间接寻址使用。MOV CLMOV CL,R10 R10 ;操作数是;操作数是8 8位的,操作数地址由位的,操作数地址由6464位寄存器位寄存器R10R10指出指出MOV RDXMOV RDX,EBX EBX;操作数是;操作数是6464位的,操作数地址由位的,操作数地址由3232位寄存器位寄存器EBXEBX,指,指 出经零扩展后形成出经零扩展后形成6464位有效地址位有效地址MOV AX,BX MOV AX,BX MOV AX,BX MOV AX,BX 的执行过程:假设的执行过程:假设的执行过程:假设的执行过程:假设BXBXBXBX寄存器的内容为寄
25、存器的内容为寄存器的内容为寄存器的内容为1000H,1000H,1000H,1000H,则把则把则把则把DSDSDSDS段中的段中的段中的段中的1000H1000H1000H1000H号单元的号单元的号单元的号单元的16161616位数据传送给位数据传送给位数据传送给位数据传送给AXAXAXAX寄存器,该指令的机器码为寄存器,该指令的机器码为寄存器,该指令的机器码为寄存器,该指令的机器码为8B07H8B07H8B07H8B07H。AX1001H1000H高地址高地址低地址低地址8BH 07H04H20H20H 04HBX 1000H注意:直接寻址中有效地址注意:直接寻址中有效地址EA来自指令自
26、身,相当于一个常量;来自指令自身,相当于一个常量;而寄存器间接寻址中有效地址而寄存器间接寻址中有效地址EA来自寄存器,该内容由前面的指来自寄存器,该内容由前面的指 令确定,相当于一个变量。令确定,相当于一个变量。汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1326 八月 2024(3)寄存器相对寻址)寄存器相对寻址 EAEA 基址基址基址基址/变址寄存器变址寄存器变址寄存器变址寄存器 位移量位移量位移量位移量oo其中位移量由指令直接给出,是指令的一部分。其中位移量由指令直接给出,是指令的一部分。其中位移量由指令直接给出,是指令的一部分。其中位移量由指令直接给出,是指令
27、的一部分。基址寄存器的基址寄存器的基址寄存器的基址寄存器的使用规则使用规则使用规则使用规则:1 1)1616位寻址时位寻址时位寻址时位寻址时,BPBP和和和和BXBX作为基址寄存器,默认情况下,作为基址寄存器,默认情况下,作为基址寄存器,默认情况下,作为基址寄存器,默认情况下,BXBX以以以以DSDS作为段寄存器,作为段寄存器,作为段寄存器,作为段寄存器,BPBP以以以以SSSS作为段寄存器;作为段寄存器;作为段寄存器;作为段寄存器;SISI(源变址)(源变址)(源变址)(源变址)和和和和DIDI(目的变址)作为变址寄存器,默认(目的变址)作为变址寄存器,默认(目的变址)作为变址寄存器,默认(
28、目的变址)作为变址寄存器,默认DSDS作为段基址寄作为段基址寄作为段基址寄作为段基址寄存器。位移量是存器。位移量是存器。位移量是存器。位移量是8 8位或位或位或位或1616位。位。位。位。2 2)3232位寻址时,位寻址时,位寻址时,位寻址时,8 8个个个个3232位通用寄存器都能作为基址或变址寄存位通用寄存器都能作为基址或变址寄存位通用寄存器都能作为基址或变址寄存位通用寄存器都能作为基址或变址寄存器。其中器。其中器。其中器。其中ESPESP、EBPEBP默认段寄存器为默认段寄存器为默认段寄存器为默认段寄存器为SSSS,其余,其余,其余,其余6 6个寄存器均个寄存器均个寄存器均个寄存器均默认段
29、寄存器为默认段寄存器为默认段寄存器为默认段寄存器为DSDS,段可以超越;除,段可以超越;除,段可以超越;除,段可以超越;除ESPESP外的任何外的任何外的任何外的任何3232位通位通位通位通用寄存器均可作变址寄存器。且用寄存器均可作变址寄存器。且用寄存器均可作变址寄存器。且用寄存器均可作变址寄存器。且EBPEBP以以以以SSSS为默认段寄存器,为默认段寄存器,为默认段寄存器,为默认段寄存器,其余以其余以其余以其余以DSDS为默认段寄存器。位移量是为默认段寄存器。位移量是为默认段寄存器。位移量是为默认段寄存器。位移量是8 8位或位或位或位或3232位,当位移量位,当位移量位,当位移量位,当位移量
30、超过超过超过超过8 8位则按照位则按照位则按照位则按照3232位处理。位处理。位处理。位处理。汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1426 八月 20243 3)6464位寻址时位寻址时位寻址时位寻址时,1616个个个个3232位位位位/64/64位通用寄存器都能作位通用寄存器都能作位通用寄存器都能作位通用寄存器都能作为基址寄存器。当使用为基址寄存器。当使用为基址寄存器。当使用为基址寄存器。当使用3232位通用寄存器时,先将位通用寄存器时,先将位通用寄存器时,先将位通用寄存器时,先将3232位通用寄存器内容零扩展为位通用寄存器内容零扩展为位通用寄存器内容零扩展
31、为位通用寄存器内容零扩展为6464位,再与经过符号扩位,再与经过符号扩位,再与经过符号扩位,再与经过符号扩展为展为展为展为6464位的位移量相加形成位的位移量相加形成位的位移量相加形成位的位移量相加形成6464位有效地址。只有位有效地址。只有位有效地址。只有位有效地址。只有MOVMOV指令允许使用指令允许使用指令允许使用指令允许使用6464位的位移量,而其他指令只位的位移量,而其他指令只位的位移量,而其他指令只位的位移量,而其他指令只能使用不超过能使用不超过能使用不超过能使用不超过3232位的位移量。位的位移量。位的位移量。位的位移量。MOV RAXMOV RAX,R15R1555;有效地址为
32、有效地址为;有效地址为;有效地址为R15R15寄存器内容加寄存器内容加寄存器内容加寄存器内容加5 5 的和的和的和的和MOV RCXMOV RCX,EDXEDX0F0H 0F0H ;有效地址为;有效地址为;有效地址为;有效地址为EDXEDX寄存器内容零扩展为寄存器内容零扩展为寄存器内容零扩展为寄存器内容零扩展为6464位后,再与位移量位后,再与位移量位后,再与位移量位后,再与位移量0F0H0F0H符号扩展成符号扩展成符号扩展成符号扩展成6464位(位(位(位(0FFFFFFFFFFFFFFF0H0FFFFFFFFFFFFFFF0H)相加的和)相加的和)相加的和)相加的和汇汇编编语语言言程程序
33、序设设计计及及上上机机指指导导第第3章章返回返回1526 八月 2024MOV AXMOV AX,BXBX2424;也可写成;也可写成;也可写成;也可写成 MOV AXMOV AX,24BX 24BX MOV ECXMOV ECX,EBPEBP50 50 ;也可写成;也可写成;也可写成;也可写成 MOV ECXMOV ECX,50EBP50EBPMOV DXMOV DX,EAXEAXBASE BASE ;也可写成;也可写成;也可写成;也可写成 MOV DX,BASEEAX MOV DX,BASEEAX BASE BASE是符号常量或变量是符号常量或变量是符号常量或变量是符号常量或变量 MOV
34、ECX,EBP+50MOV ECX,EBP+50指令执行时指令执行时指令执行时指令执行时,EBP,EBP寄存器内容为寄存器内容为寄存器内容为寄存器内容为3000H,3000H,再加上再加上再加上再加上位移量位移量位移量位移量50H50H之和为之和为之和为之和为3050H,3050H,然后把由然后把由然后把由然后把由SSSS寄存器寻址的段中的寄存器寻址的段中的寄存器寻址的段中的寄存器寻址的段中的3050H3050H单元的单元的单元的单元的3232位数据传送给位数据传送给位数据传送给位数据传送给ECXECX。CX3053H3052H00003050H+ECX3051H3050H高地址高地址低地址低
35、地址机器机器指令指令78H56H34H12H1234H 5678HEBP00003000H50H汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1626 八月 2024(4)基址加变址寻址)基址加变址寻址 EAEA 基址寄存器基址寄存器基址寄存器基址寄存器+变址寄存器变址寄存器变址寄存器变址寄存器 ooMOV AXMOV AX,BX+SI BX+SI ;或写成;或写成;或写成;或写成MOV AXMOV AX,BXSIBXSI,BXBX决定默认段基址由决定默认段基址由决定默认段基址由决定默认段基址由DSDS指出指出指出指出ooMOV EAXMOV EAX,EDXEBP ED
36、XEBP ;由;由;由;由EBPEBP决定默认决定默认决定默认决定默认SSSS为段基址寄存器为段基址寄存器为段基址寄存器为段基址寄存器ooMOV R12MOV R12,EAX+EDX EAX+EDX ;用于;用于;用于;用于6464位方式,有效地址为位方式,有效地址为位方式,有效地址为位方式,有效地址为EAX+EDXEAX+EDX的和再扩展为的和再扩展为的和再扩展为的和再扩展为6464位位位位ooMOV RBXMOV RBX,R10+RBP R10+RBP ;有效地址为;有效地址为;有效地址为;有效地址为R10+RBPR10+RBP的的的的6464位和。位和。位和。位和。ALAHAX56H 7
37、8H5001H5000HSI5000H和高地址低地址机器机器指令指令78H56HBX2000H3000H图3.6 基址加变址寻址的执行过程汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1726 八月 2024(5)带位移的基址加变址寻址)带位移的基址加变址寻址 EAEA 基址寄存器基址寄存器基址寄存器基址寄存器 变址寄存器变址寄存器变址寄存器变址寄存器 位移量位移量位移量位移量MOV AX,BX+SI+SOME;16位寻址位寻址MOV EAX,EBX+EBP+2 ;32位寻址位寻址MOV R8,R9+R10+4 ;64位寻址位寻址(6 6)比例变址寻址)比例变址寻址 E
38、A变址寄存器变址寄存器比例因子位移量比例因子位移量 乘比例因子的操作是在乘比例因子的操作是在CPU内部靠硬件完成的。内部靠硬件完成的。MOV EAX,ARRAYESI4 ;32位寻址位寻址 MOV RAX,RBX8+10H ;64位寻址位寻址汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1826 八月 2024(7)基址加比例变址寻址)基址加比例变址寻址EAEA 基址寄存器基址寄存器基址寄存器基址寄存器 变址寄存器变址寄存器变址寄存器变址寄存器比例因子比例因子比例因子比例因子只适于只适于只适于只适于32/6432/64位寻址的情况位寻址的情况位寻址的情况位寻址的情况【例
39、例例例】MOV EDX MOV EDX,EAX8EBX EAX8EBX 或或或或MOV EDXMOV EDX,EAX4EAX4EBXEBX MOV EAX MOV EAX,EBX4ESI EBX4ESI 或或或或MOVMOVEAXEAX,EBX4EBX4ESIESI MOV RBX MOV RBX,RAX4+RCX RAX4+RCX;6464位方式位方式位方式位方式(8)带位移的基址加比例变址寻址)带位移的基址加比例变址寻址EA基址寄存器基址寄存器变址寄存器变址寄存器比例因子位移量比例因子位移量【例例例例】MOV AX MOV AX,EBX8+ECX+100EBX8+ECX+100 ;或;或;
40、或;或 MOV AXMOV AX,EBX8ECXEBX8ECX100 100 -只能是只能是只能是只能是3232位或位或位或位或6464位寻址位寻址位寻址位寻址 汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第3章章返回返回1926 八月 2024四端口寻址方式四端口寻址方式o端口寻址方式只在对外部设备的访问端口寻址方式只在对外部设备的访问指令中适用,包括端口的直接寻址和指令中适用,包括端口的直接寻址和间接寻址两种方式,具体细节在间接寻址两种方式,具体细节在3.3.1节的节的I/O数据传送类指令的叙数据传送类指令的叙述中,结合具体指令详细介绍。述中,结合具体指令详细介绍。汇汇编编语语言
41、言程程序序设设计计及及上上机机指指导导第第3章章返回返回2026 八月 2024段寄存器的使用规则段寄存器的使用规则 存储器操作类型存储器操作类型存储器操作类型存储器操作类型默认默认默认默认段寄存器段寄存器段寄存器段寄存器允许超越的允许超越的允许超越的允许超越的段寄存器段寄存器段寄存器段寄存器偏移地址偏移地址偏移地址偏移地址取指令取指令取指令取指令CSCS无无无无(E)IP(E)IP堆栈操作堆栈操作堆栈操作堆栈操作SSSS无无无无(E)SP(E)SP源串数据访问源串数据访问源串数据访问源串数据访问DSDSCSCS、ESES、SSSS、FSFS、GSGS(E)SI(E)SI目的串数据访问目的串数据访问目的串数据访问目的串数据访问ESES无无无无(E)DI(E)DI通用数据访问通用数据访问通用数据访问通用数据访问DSDSCSCS、ESES、SSSS、FSFS、GSGS偏移地址偏移地址偏移地址偏移地址以以以以(E)BP(E)BP、(E)SP(E)SP间间间间接寻址的指令接寻址的指令接寻址的指令接寻址的指令SSSSCSCS、DSDS、ESES、FSFS、GSGS偏移地址偏移地址偏移地址偏移地址






