第3章 指令系统_第1页
第3章 指令系统_第2页
第3章 指令系统_第3页
第3章 指令系统_第4页
第3章 指令系统_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章第三章 指令系统指令系统College of physicsHunan University of Science and Technology第三章第三章 指令系统指令系统3.1 基本基本数据类型数据类型3.2 IA-32指令的指令的寻址方式寻址方式3.3 IA-32的的指令格式指令格式3.4 IA-32的的通用整数指令及应用通用整数指令及应用3.5 x87 FPU 指令指令3.6 关于指令系统的关于指令系统的说明说明3.7 指令应用指令应用举例举例以以Pentium MPU 为例进行讲解为例进行讲解3.1 基本数据类型基本数据类型n Pentium在其内部定点处理单元在其内部定点处理

2、单元CPU和浮点处和浮点处理单元理单元FPU的支持下,共可处理的支持下,共可处理7类数据:类数据:p 1. 无符号二进制数无符号二进制数p 2. 带符号的二进制定点整数带符号的二进制定点整数p 3. 浮点数浮点数p 4. BCD码数码数p 5. 串数据串数据p 6. ASCII码数据码数据p 7. 指针数据指针数据3.1 基本数据类型基本数据类型 1.无符号二进制数无符号二进制数(序数序数)n这类数不带任何这类数不带任何符号符号信息,只含有量值域,信息,只含有量值域,仅仅CPU支持。分为支持。分为:p字节:字节:任何逻辑地址上的任何逻辑地址上的8位相邻位串。位相邻位串。p字:字:任何字节地址开

3、始的任何字节地址开始的2个相邻字节,个相邻字节,低字节地低字节地址址为该字地址。为该字地址。p双字:双字:任何字节地址开始的任何字节地址开始的2个相邻字,即个相邻字,即4个相个相邻字节,邻字节,最小字节地址最小字节地址为双字的地址。为双字的地址。p四字:四字:任何字节地址开始的任何字节地址开始的4个相邻字,即个相邻字,即8个相个相邻字节。邻字节。p双四字:双四字:任何字节地址开始的任何字节地址开始的8个相邻字,即个相邻字,即16个个相邻字节。相邻字节。3.1 基本数据类型基本数据类型 1.无符号二进制数无符号二进制数(序数序数)FHEHDHCHBHAH9H8H7H6H5H4H3H2H1H0H8

4、6H12H7AHFEH06H36H1FHA4H23H0BH45H67H74HCBH31H12H在地址在地址CH的的字节字节包含包含FEH在地址在地址4H的的字字包含包含4567H在地址在地址9H的的字字包含包含361FH基本数据类型在内存中的字节顺序基本数据类型在内存中的字节顺序在地址在地址0H双四字包含双四字包含86127AFE06361FA4230B456774CB3112H在地址在地址8H的的四字四字包含包含86127AFE06361FA4H在地址在地址0H的的双字双字包含包含86127AFEH低字节低字节占用内占用内存中的存中的最低地最低地址址,此,此地址也地址也是此是此操操作数的作数

5、的地址地址。3.1 基本数据类型基本数据类型2.带符号的二进制定点整数带符号的二进制定点整数(整数整数)p这类数均以这类数均以补码补码表示表示,有有8位数位数(字节字节)、16位数位数(字字)、32位数位数(双字双字)、64位数位数(4字字)四四种。种。pCPU支持前支持前3种,种,FPU支持后支持后3种。种。n这类数由这类数由FPU支持支持,有有单精度单精度、双精度双精度和和扩展精度扩展精度三种形式:三种形式:3.1 基本数据类型基本数据类型 3.浮点数浮点数(实数实数) 单精度数单精度数 双精度数双精度数 扩展精度数扩展精度数1 179 78 64 63 079 78 64 63 0符号位

6、符号位阶阶 码码有有 效效 数数. .符号位符号位阶阶 码码有有 效效 数数1.1.63 62 52 51 063 62 52 51 031 30 23 22 031 30 23 22 0符号位符号位阶阶 码码有有 效效 数数1.1.3.1 基本数据类型基本数据类型 3.浮点数浮点数(实数实数)n浮点数格式浮点数格式的两点说明:的两点说明:p3种浮点数的有效数字段都做了种浮点数的有效数字段都做了规格化处理规格化处理,其整数位,其整数位总是总是1。但需注意。但需注意,只有扩展精度格式的整数位只有扩展精度格式的整数位1真的存真的存在,其余两种格式下整数位在,其余两种格式下整数位1是隐含的,并不真的

7、被存是隐含的,并不真的被存放起来。放起来。p格式中的阶码是以格式中的阶码是以偏置形式存放偏置形式存放的的(即其阶码要加上一即其阶码要加上一个常数偏置值才是格式阶码个常数偏置值才是格式阶码),且偏置后的格式阶码恒为且偏置后的格式阶码恒为正数。这样有利于简化符点数大小的比较过程:对两正数。这样有利于简化符点数大小的比较过程:对两个相同格式的实数进行比较时,就像对两个无符号二个相同格式的实数进行比较时,就像对两个无符号二进制整数进行比较一样方便,当从高位到低位比较两进制整数进行比较一样方便,当从高位到低位比较两个格式阶码时,若某位的阶码有大小之分,就不用再个格式阶码时,若某位的阶码有大小之分,就不用

8、再比较下去了。比较下去了。由于三种浮点数格式的由于三种浮点数格式的阶码位数阶码位数不同,其数值范围也不同,其数值范围也不同。为了保证统一偏置后的阶码恒为正数,其偏置不同。为了保证统一偏置后的阶码恒为正数,其偏置值必然也为不同正值。值必然也为不同正值。最大阶码值最大阶码值 +127 +1023 +16383+127 +1023 +16383参参 数数格格 式式单精度单精度双精度双精度扩展精度扩展精度格式总宽度(位)格式总宽度(位) 32 64 8032 64 80符号位位数符号位位数 1 1 11 1 1有效数位数有效数位数( (精度位数精度位数) 23+1() 23+1(隐)隐) 52+1(5

9、2+1(隐)隐) 6464阶码宽度(位)阶码宽度(位) 8 11 158 11 15最小阶码值最小阶码值 -128 -1024 -16384-128 -1024 -16384阶码偏置值阶码偏置值 +127 +1023 +16383+127 +1023 +16383 在作了上述偏置处理后,进行浮点数运算时,一个数的在作了上述偏置处理后,进行浮点数运算时,一个数的真阶码真阶码需要将其格式阶码减去偏置值来获得。需要将其格式阶码减去偏置值来获得。3.1 基本数据类型基本数据类型 4.BCD码数码数pBCD码数有码数有压缩压缩和和非压缩非压缩BCD码码数两种。数两种。p CPU两种数都支持;两种数都支持

10、;FPU只支持压缩只支持压缩BCD码数,码数,且最大长度为且最大长度为80位,最多可处理位,最多可处理20位位BCD码数。码数。5.串数据串数据 这类数据仅这类数据仅CPUCPU支持。包括支持。包括: : 位串位串: : 字节字节/ /字字/ /双字串双字串: :是从任何字节的任何位开始的相邻是从任何字节的任何位开始的相邻位的序列,最长可达位的序列,最长可达2 23232-1-1位。位。是字节是字节/ /字字/ /双字的相邻序双字的相邻序列,最长可达列,最长可达2 23232-1-1字节。字节。3.1 基本数据类型基本数据类型6.ASCII码数据码数据包括包括ASCIIASCII码码字符串字符

11、串和和ASCIIASCII码数码数(0(0F)F)两种两种。7.指针数据指针数据包括近指针和远指针两种包括近指针和远指针两种: : 近指针近指针即即3232位指针位指针, ,是一个是一个3232位的段内位的段内偏移量偏移量, ,段内寻址用。段内寻址用。 远指针远指针即即4848位指针位指针, ,由由1616位选择符和位选择符和3232位偏移量组成,用于跨段访问。位偏移量组成,用于跨段访问。关于数据类型的两点说明:关于数据类型的两点说明:(1)(1)在上述各类型数据中,基本的数据类型仍是字节、字和在上述各类型数据中,基本的数据类型仍是字节、字和双字。一般应尽可能将双字。一般应尽可能将字字操作对准

12、于操作对准于偶地址偶地址,将,将双字双字操作对操作对准于准于4 4的整数倍地址的整数倍地址。但也允许不对准操作,以便在数据结。但也允许不对准操作,以便在数据结构的处理上和存储器的有效利用上给系统设计人员和用户提构的处理上和存储器的有效利用上给系统设计人员和用户提供最大的灵活性。不过,对准和不对准获得的数据传递速度供最大的灵活性。不过,对准和不对准获得的数据传递速度不一样:对准的字和字节可一次传递完,而未对准的字和双不一样:对准的字和字节可一次传递完,而未对准的字和双字需几次才能传递完。字需几次才能传递完。(2)(2)对于字和双字数据,对于字和双字数据,8048680486是采用低端地址方式来存

13、储的。是采用低端地址方式来存储的。即字数据被存储在两个相邻的字节单元之中,低位字节在低即字数据被存储在两个相邻的字节单元之中,低位字节在低地址单元,高位字节在高地址单元;双字数据存储在四个连地址单元,高位字节在高地址单元;双字数据存储在四个连续字节单元中,最低位字节在最低地址单元,最高字节在最续字节单元中,最低位字节在最低地址单元,最高字节在最高地址单元。而字或双字数据的地址是指最低位字节所在的高地址单元。而字或双字数据的地址是指最低位字节所在的单元地址。单元地址。3.2 IA-32指令的寻址方式指令的寻址方式3.2.1 寻址方式和有效地址概念寻址方式和有效地址概念3.2.2 11种寻址方式种

14、寻址方式3.2.3 存储器寻址时的段约定存储器寻址时的段约定3.2.4 应用举例应用举例3.2 寻址方式寻址方式 1.寻址方式和有效地址概念寻址方式和有效地址概念 寻址方式寻址方式就是寻找指令中操作数地址的方式。操作数就是寻找指令中操作数地址的方式。操作数所在地址有三种可能:所在地址有三种可能: 直接包含在指令中直接包含在指令中,即指令的操作数部分就是操作数,即指令的操作数部分就是操作数本身。这种操作数叫立即数,对应的指令寻址方式称为本身。这种操作数叫立即数,对应的指令寻址方式称为立即数寻址立即数寻址。包含在包含在CPUCPU的某个内部寄存器中的某个内部寄存器中。这时指令中的操作数。这时指令中

15、的操作数部分是部分是CPUCPU的一个寄存器,这种指令寻址方式称为的一个寄存器,这种指令寻址方式称为寄存器寄存器寻址寻址。在内存储器中在内存储器中。这时指令的操作数部分包含着该操作。这时指令的操作数部分包含着该操作数所在的内存地址。这种指令寻址方式称为数所在的内存地址。这种指令寻址方式称为存储器寻址存储器寻址。3.2 寻址方式寻址方式 1.寻址方式和有效地址概念寻址方式和有效地址概念 在在PentiumPentium系列系列MPUMPU中,内存实际地址中,内存实际地址(PA)(PA)由段基由段基地址和段内偏移地址两部分组成。地址和段内偏移地址两部分组成。 为了适应处理各种数据结构的需要,段内偏

16、移地为了适应处理各种数据结构的需要,段内偏移地址可由以下几部分组合而成:址可由以下几部分组合而成:v 基址寄存器内容基址寄存器内容v 变址寄存器内容变址寄存器内容v 比例因子比例因子v 位移量位移量 这四个基本部分称为偏移地址四元素,一般又将这四个基本部分称为偏移地址四元素,一般又将由这四种元素组合形成的偏移地址称为有效地址由这四种元素组合形成的偏移地址称为有效地址EAEA。EA=EA=基址基址+(+(变址变址比例因子比例因子)+)+位移量位移量3.2 寻址方式寻址方式 1.寻址方式和有效地址概念寻址方式和有效地址概念有效地址元素有效地址元素1616位寻址位寻址3232位寻址位寻址基址寄存器基

17、址寄存器 BX,BP BX,BP 任何任何3232位通用寄存器位通用寄存器变址寄存器变址寄存器 SI,DI SI,DI 除除ESPESP外的任何外的任何3232位通用寄存器位通用寄存器比例因子比例因子 无(或无(或1 1) 1 1,2 2,4 4,8 8位移量位移量 0 0,8 8,1616位位 0 0,8 8,3232位位1616位和位和3232位寻址时的四元素定义位寻址时的四元素定义3.2 寻址方式寻址方式 1.寻址方式和有效地址概念寻址方式和有效地址概念寻址过程寻址过程( (地址转换过程地址转换过程) )有效地址计算有效地址计算变址变址位移位移基址基址比例因子比例因子+ +3232位位有

18、效地址有效地址31 031 0BE3BE3BE0BE0A31A31A2A232 32 位位32 32 位位1313位位通过段描述符通过段描述符提供段基址提供段基址段寄存器段寄存器选择符选择符 TITIRPLRPL15 3 2 1 015 3 2 1 0分段分段部件部件线性线性地址地址物理物理存储器存储器分页分页部件部件( (可选可选) )物理物理地址地址逻辑地址逻辑地址( (虚拟虚拟) )(CS,DS,ES,SS, FS,GSCS,DS,ES,SS, FS,GS)不分页不分页寻址过程寻址过程( (地址转换过程地址转换过程) )有效地址计算有效地址计算变址变址位移位移基址基址比例因子比例因子+

19、+3232位位有效地址有效地址31 031 0BE3BE3BE0BE0A31A31A2A2BE3BE3BE0BE0A31A31A2A232 32 位位32 32 位位1313位位通过段描述符通过段描述符提供段基址提供段基址段寄存器段寄存器选择符选择符 TITIRPLRPL15 3 2 1 015 3 2 1 0分段分段部件部件线性线性地址地址物理物理存储器存储器分页分页部件部件( (可选可选) )物理物理地址地址逻辑地址逻辑地址( (虚拟虚拟) )(CS,DS,ES,SS, FS,GSCS,DS,ES,SS, FS,GS)不分页不分页3.2 寻址方式寻址方式 2. 寻址方式寻址方式11种种 偏

20、移地址四元素可优化组合出偏移地址四元素可优化组合出9 9种存储器寻址方式种存储器寻址方式, ,加上立即数寻址和寄存器寻址,加上立即数寻址和寄存器寻址,8048680486共有共有1111种寻址方种寻址方式式: :(1) (1) 立即数寻址立即数寻址(2) (2) 寄存器寻址寄存器寻址(3) (3) 直接寻址直接寻址(4) (4) 寄存器间接寻址寄存器间接寻址(5) (5) 基址寻址基址寻址(6) (6) 变址寻址变址寻址(7) (7) 比例变址寻址比例变址寻址(8) (8) 基址加变址寻址基址加变址寻址(9) (9) 基址加比例变址寻址基址加比例变址寻址(10)(10)带位移的基址加变址寻址带

21、位移的基址加变址寻址(11)(11)带位移的基址加比例变址寻址带位移的基址加比例变址寻址3.2 寻址方式寻址方式 (1)立即数寻址立即数寻址 在这种寻址方式下在这种寻址方式下, ,操作数作为操作数作为立即数立即数直直接存在指令中接存在指令中, ,可为可为8 8位、位、1616位或位或3232位。位。例:例:MOV AXMOV AX,4567H4567HMOV BLMOV BL,78H78HMOV ECXMOV ECX,12345678H12345678H 以第以第3 3条指令为例,给出了立即数寻条指令为例,给出了立即数寻址方式的执行过程的址方式的执行过程的动画演示动画演示。3.2 寻址方式寻址

22、方式 (2)寄存器寄存器(直接直接)寻址寻址 在这种方式下在这种方式下, ,操作数包含在指令规定操作数包含在指令规定的的8 8位、位、1616位或位或3232位寄存器中。位寄存器中。例:例:MOV EAXMOV EAX,EDXEDXINC CLINC CLMOV DSMOV DS,AXAX 这种寻址方式指令编码短,无需从存储这种寻址方式指令编码短,无需从存储器取操作数,故执行速度快。器取操作数,故执行速度快。3.2 寻址方式寻址方式 (3) (存储器存储器)直接寻址直接寻址 在这种方式下,指令中的操作数部分直接在这种方式下,指令中的操作数部分直接给出操作数有效地址给出操作数有效地址EAEA,它

23、和操作码一起放在,它和操作码一起放在存储器代码段中,可以是存储器代码段中,可以是1616位或位或3232位整数。但位整数。但操作数一般在数据段操作数一般在数据段DSDS中。中。例:例: MOV AXMOV AX,DS:3000HDS:3000H 将将DSDS段中段中3000H3000H和和3OO1H3OO1H单元的内容送到单元的内容送到AXAX中。假设中。假设DS=5000HDS=5000H,则此指令是将物理地址为,则此指令是将物理地址为53000H53000H单元的内容送到单元的内容送到ALAL寄存器,将寄存器,将53001H53001H单单元的内容送到元的内容送到AHAH寄存器,详情请看直

24、接寻址方寄存器,详情请看直接寻址方式的执行过程的式的执行过程的动画演示动画演示。3.2 寻址方式寻址方式 (3) (存储器存储器)直接寻址直接寻址 实际中对于直接寻址实际中对于直接寻址, ,如操作数在如操作数在DSDS段中段中, ,则可则可直接写成直接写成: :MOV AX,3000HMOV AX,3000H 如操作数在如操作数在DSDS之外的其他段之外的其他段(CS,SS,ES,FS,GS)(CS,SS,ES,FS,GS)中中, ,指令中则必须用段寄存器名前缀指令中则必须用段寄存器名前缀( (称为段超越前称为段超越前缀缀) )予以指明。例如:予以指明。例如:MOV AX,FS:3000HMO

25、V AX,FS:3000H直接寻址主要用于单个操作数的相对寻址场合直接寻址主要用于单个操作数的相对寻址场合( (如简单的标量操作数寻址和静分配数组的起始如简单的标量操作数寻址和静分配数组的起始地址寻址等地址寻址等) )。叫段默认叫段默认3.2 寻址方式寻址方式 (4)寄存器间接寻址寄存器间接寻址 在这种方式下在这种方式下, ,操作数放在存储器中操作数放在存储器中, ,但其有效地址但其有效地址EAEA放在寄存器中放在寄存器中, ,即即EA=EA=寄寄存器存器 。寄存器的使用规定在。寄存器的使用规定在1616位寻址和位寻址和3232位寻址时不一样。位寻址时不一样。3.2 寻址方式寻址方式 (4)寄

26、存器间接寻址寄存器间接寻址1616位寻址时,偏移地址放在位寻址时,偏移地址放在SISI、DIDI、BPBP或或BXBX中。中。 这时又有两种段默认情况:这时又有两种段默认情况:q若以若以SISI、DIDI、BXBX间接寻址间接寻址, ,则默认操作数在则默认操作数在DSDS段中。段中。 例如:例如: MOV AX,SI ;MOV AX,SI ;默认默认DSDS为段基址为段基址q若以若以BPBP间接寻址间接寻址, ,则默认操作数在则默认操作数在SSSS段中。段中。 例如:例如: MOV AX,BP ;MOV AX,BP ;默认默认SSSS为段基址为段基址 动画演示动画演示 如果操作数不在上述规定的

27、默认段,而是在其他段,如果操作数不在上述规定的默认段,而是在其他段,则必须在指令中相应的操作数前加上段超越前缀。例如:则必须在指令中相应的操作数前加上段超越前缀。例如:MOV AX,ES:SIMOV AX,ES:SIMOV AX,DS:BPMOV AX,DS:BP3.2 寻址方式寻址方式 (4)寄存器间接寻址寄存器间接寻址3232为寻址时为寻址时,8,8个个3232位通用寄存器均可作寄存器位通用寄存器均可作寄存器 间接寻址。间接寻址。例如:例如:MOV EBX,EAX ;MOV EBX,EAX ;默认默认DSDS为段基址为段基址, ,传送双字给传送双字给EBXEBXMOV DX,EBX ;MO

28、V DX,EBX ;默认默认DSDS为段基址为段基址, ,传送字给传送字给DXDXMOV CH,EAX ;MOV CH,EAX ;默认默认DSDS为段基址为段基址, ,传送字节给传送字节给CHCH 除除ESPESP、EBPEBP默认段寄存器为默认段寄存器为SSSS外,其余外,其余6 6个通用寄存器个通用寄存器均默认段寄存器为均默认段寄存器为DSDS。如操作数在默认段之外,指令中必。如操作数在默认段之外,指令中必须加段超越前缀。须加段超越前缀。 寄存器间接寻址的应用场合与直接寻址的应用场合相寄存器间接寻址的应用场合与直接寻址的应用场合相似,当更灵活。似,当更灵活。3.2 寻址方式寻址方式 (5)

29、基址寻址基址寻址 在这种方式下在这种方式下, ,EA=EA=基址寄存器基址寄存器+位移量位移量。其中。其中位移量一定要为常数位移量一定要为常数, ,且跟随在操作码之后且跟随在操作码之后, ,与操作与操作码一起存放在代码段中。码一起存放在代码段中。1616位寻址情况下位寻址情况下,BX,BX和和BPBP作为基址寄存器。在缺省作为基址寄存器。在缺省段超越前缀时段超越前缀时,BX,BX以以DSDS作为默认段寄存器作为默认段寄存器,BP,BP以以SSSS作为作为默认段寄存器。位移量可为默认段寄存器。位移量可为8 8位或位或1616位;位;3232位寻址情况下,位寻址情况下,8 8个个3232位通用寄存

30、器均可作基址位通用寄存器均可作基址寄存器,其中寄存器,其中ESPESP、EBPEBP以以SSSS为默认段寄存器,其余为默认段寄存器,其余6 6个通用寄存器均以个通用寄存器均以DSDS为默认段寄存器。位移量为为默认段寄存器。位移量为8 8位位或或3232位。位。例如:例如: 动画演示动画演示MOV EAX,BX+24 ;MOV EAX,BX+24 ;也可写成也可写成MOV EAX,24BXMOV EAX,24BXMOV ECX,EBP+50 ;MOV ECX,EBP+50 ;也可写成也可写成MOV ECX,50EBPMOV ECX,50EBPMOV DX,EAX+1500;MOV DX,EAX+

31、1500;也可写成也可写成MOV DX,1500EAXMOV DX,1500EAX3.2 寻址方式寻址方式 (6)变址寻址变址寻址 在这种方式下在这种方式下, ,EA=EA=变址寄存器变址寄存器+位移量位移量。指令书写格式和寻址执行过程与基址寻址相同指令书写格式和寻址执行过程与基址寻址相同, ,区别仅在于将区别仅在于将基址寄存器基址寄存器改成改成变址寄存器变址寄存器。3.2 寻址方式寻址方式 (6)变址寻址变址寻址 1616位寻址时,仅位寻址时,仅SISI、DIDI可作变址寄存器,可作变址寄存器,且默认且默认DSDS作为段基址寄存器。如:作为段基址寄存器。如:MOV AX,COUNTSIMOV

32、 AX,COUNTSI 3232位寻址时位寻址时, ,除除ESPESP外的任何通用寄存器均外的任何通用寄存器均可作变址寄存器可作变址寄存器, ,且默认且默认EBPEBP以以SSSS作段基址寄存器作段基址寄存器, ,其余均以其余均以DSDS作段基址寄存器。作段基址寄存器。 如如: :MOV EAX,5EBPMOV EAX,5EBPMOV ECX,DATAEAXMOV ECX,DATAEAX基址、变址寻址适于对一维数组的数组元素进行检基址、变址寻址适于对一维数组的数组元素进行检索操作。位移量表示数组起始地址偏移量;基址索操作。位移量表示数组起始地址偏移量;基址/ /变址表示数组元素的下标,可变。变

33、址表示数组元素的下标,可变。3.2 寻址方式寻址方式 (7)比例变址寻址比例变址寻址在这种方式下:在这种方式下:EA=EA=变址寄存器变址寄存器 比例因子比例因子+ +位移量位移量这种寻址方式只适于这种寻址方式只适于3232位寻址一种情况。例如:位寻址一种情况。例如:MOV EAX,TABLEESIMOV EAX,TABLEESI* *44 ;TABLE;TABLE是位移量是位移量,4,4是比例因子是比例因子比例变址寻址和基址比例变址寻址和基址/ /变址寻址的作用相似变址寻址的作用相似, ,也适用也适用于对一维数组元素的检索。但当数组元素大小为于对一维数组元素的检索。但当数组元素大小为2/4/

34、82/4/8字节时,用它更方便、更高效。字节时,用它更方便、更高效。比例变址寻址方式的执行过程的比例变址寻址方式的执行过程的动画演示动画演示。3.2 寻址方式寻址方式 (8)基址加变址寻址基址加变址寻址在这种寻址方式下,在这种寻址方式下,EA=EA=基址寄存器基址寄存器+变址寄存器变址寄存器 例如:例如:MOV AX,BX+SI ;MOV AX,BX+SI ;或写成或写成MOV AX,BXSIMOV AX,BXSI 动画演示动画演示它有它有1616位寻址和位寻址和3232位寻址两种情况,每种情况下基址、变位寻址两种情况,每种情况下基址、变址寄存器的使用规定和段寄存器的默认规定与前面所述相址寄存

35、器的使用规定和段寄存器的默认规定与前面所述相同,但一种寻址方式中同,但一种寻址方式中既有基址寄存器又有变址寄存器,既有基址寄存器又有变址寄存器,而两个寄存器默认的段寄存器又不相同时,一般规定由而两个寄存器默认的段寄存器又不相同时,一般规定由基基址寄存器址寄存器来决定默认哪一个段寄存器作段基址指针来决定默认哪一个段寄存器作段基址指针。 基址加变址寻址主要用于二维数组元素的检索和二重基址加变址寻址主要用于二维数组元素的检索和二重循环等。循环等。3.2 寻址方式寻址方式 (9)基址加比例变址寻址基址加比例变址寻址在这种方式下在这种方式下, ,EA=EA=变址寄存器变址寄存器 比例因子比例因子+基址寄

36、存器基址寄存器 它只有它只有3232位寻址一种情况。位寻址一种情况。格式举例:格式举例:MOV ECX,EDXMOV ECX,EDX* *8EAX ;8EAX ;或或MOV ECX,EDXMOV ECX,EDX* *8+EAX8+EAXMOV AX,EBXMOV AX,EBX* *4ESI ;4ESI ;或或MOV AX,EBXMOV AX,EBX* *4+ESI4+ESI 这种方式主要用于数组元素大小为这种方式主要用于数组元素大小为2/4/82/4/8字节时字节时的二维数组检索操作等场合。的二维数组检索操作等场合。3.2 寻址方式寻址方式 (10)带位移的基址加变址寻址带位移的基址加变址寻址

37、在这种方式下:在这种方式下:EA=EA=变址寄存器变址寄存器+基址寄存器基址寄存器+位移量位移量 这种方式也分这种方式也分1616位寻址和位寻址和3232位寻址两种情况。变址、位寻址两种情况。变址、基址寄存器的使用约定和对段寄存器的默认约定与前基址寄存器的使用约定和对段寄存器的默认约定与前面所述相同。格式举例:面所述相同。格式举例:MOV AX,BX+DI+MASKMOV AX,BX+DI+MASK 或或 MOVAX,MASKBXDIMOVAX,MASKBXDIADD EDX,ESIEBP+0FFFF000HADD EDX,ESIEBP+0FFFF000H 或或 ADD EDX,0FFFF00

38、0HESIEBPADD EDX,0FFFF000HESIEBP 以第以第1 1条指令为例,给出了带位移的基址加变址寻条指令为例,给出了带位移的基址加变址寻址方式的执行过程的址方式的执行过程的动画演示动画演示。 这种寻址方式也是主要用于二维数组操作,位移这种寻址方式也是主要用于二维数组操作,位移量即为数组起始地址。量即为数组起始地址。3.2 寻址方式寻址方式 (11)带位移的基址加变址比例寻址带位移的基址加变址比例寻址这种方式将偏移地址四元素都用上了,即:这种方式将偏移地址四元素都用上了,即:EA=EA=变址寄存器变址寄存器 比例因子比例因子+基址寄存器基址寄存器+位移量位移量 它它只有只有32

39、32位寻址位寻址一种情况。各种约定和默认情况同一种情况。各种约定和默认情况同前所述。前所述。格式举例:格式举例:INC EDIINC EDI* *8ECX+40 ;8ECX+40 ;或或INC EDIINC EDI* *8+ECX+408+ECX+40 当二维数组的数组元素大小为当二维数组的数组元素大小为2/4/82/4/8字节,且数组字节,且数组起始地址不为起始地址不为0 0时,适于用这种寻址方式进行数组检索时,适于用这种寻址方式进行数组检索操作。操作。访存操作类型访存操作类型 默认段寄存器默认段寄存器 允许超越的段寄存器允许超越的段寄存器 偏移地址寄存器偏移地址寄存器取指令代码取指令代码

40、CS CS 无无 (E E)IPIP堆栈操作堆栈操作 SS SS 无无 (E)SP(E)SP目的串数据访问目的串数据访问 ES ES 无无 (E)DI(E)DI通用数据访问通用数据访问 DS CSDS CS、SSSS、ESES、FSFS、GS GS 偏移地址偏移地址以以(E)BP(E)BP、(E)SP(E)SP间接寻址的指令间接寻址的指令 SSSSCSCS、DSDS、ESES、FSFS、GSGS偏移地址偏移地址源串数据访问源串数据访问 DS CSDS CS、SSSS、ESES、FSFS、GS (E)SIGS (E)SI3.2 寻址方式寻址方式 3 存储器寻址时的段约定存储器寻址时的段约定以下的

41、默认段选择不能被超越:以下的默认段选择不能被超越: 必须从代码段必须从代码段取指令取指令; 在串操作中的在串操作中的目的串目的串必须存储在由必须存储在由ESES寄存器指向的寄存器指向的数据段数据段;1.1.推入和弹出推入和弹出操作必须总是引用操作必须总是引用SSSS段。段。3.3 IA-32的指令格式的指令格式nPentium指令系统概貌指令系统概貌 PentiumPentium的指令系统是在的指令系统是在80X8680X86系列指令系统的基础系列指令系统的基础上逐步发展而形成的,在代码级具有向上兼容性。它增上逐步发展而形成的,在代码级具有向上兼容性。它增加了指令的种类,增强了一些指令的功能,

42、提供了加了指令的种类,增强了一些指令的功能,提供了3232位位寻址方式和寻址方式和3232位操作方式,并且包含全部浮点运算指令。位操作方式,并且包含全部浮点运算指令。 PentiumPentium指令的操作数可以是指令的操作数可以是0 03 3个,根据寻址方个,根据寻址方式不同,可直接包含在指令中,也可存于寄存器或存储式不同,可直接包含在指令中,也可存于寄存器或存储器中。器中。 每条指令的长度因指令而异,平均指令长度为每条指令的长度因指令而异,平均指令长度为3.23.2字节。字节。 指令的操作数宽度可以是指令的操作数宽度可以是8 8位、位、1616位、位、3232位,寻址位,寻址宽度可以是宽度

43、可以是1616位或位或3232位。位。3.3 IA-32的指令格式的指令格式1、指令格式:、指令格式:Label(标号标号): mnemonic(助记符助记符) argument1(参数参数1) argument2(参数参数2)argument3(参数参数3)其中:其中:p标号标号(Label):在一标识符后面跟冒号在一标识符后面跟冒号(:);p助记符助记符(mnemonic):一类具有相同功能的指令操作码的一类具有相同功能的指令操作码的保留名;保留名;p操作数参数操作数参数(argument):任选,可以有任选,可以有03个,它们可个,它们可能是文字或数据项的标识符、操作数标识符,或者是寄存

44、能是文字或数据项的标识符、操作数标识符,或者是寄存器的保留名,或者是在程序的另一部分中声明的赋予数据器的保留名,或者是在程序的另一部分中声明的赋予数据项的标识符。项的标识符。 LOADREG:ADD EAX, 34H1、指令格式、指令格式 采用采用变字节(变字节(116)指令格式指令格式字段字段1 1字段字段2 2字段字段3 3mod r/mmod r/m字段字段4 4s-i-bs-i-b字段字段5 5displdispl字段字段6 6datadata1 1字节字节1 1字节字节寄存器寄存器/ /存储器寻址存储器寻址方式说明符字段方式说明符字段 主寻址字节主寻址字节, ,规定操作数的规定操作数

45、的寻址方式,包寻址方式,包括操作数的存括操作数的存放位置和存储放位置和存储器中操作数器中操作数EAEA的计算方法等的计算方法等比例比例- - 变变址址- - 基址基址字节,为字节,为第二寻址第二寻址字节字节位移量字段位移量字段, ,属存储器地属存储器地址的一部分。址的一部分。位移量足够位移量足够小时,通常小时,通常采用带符号采用带符号的的8 8位整数,位整数,CPUCPU自动将自动将它扩展到它扩展到1616位或位或3232位位立即数字段立即数字段8 8位立即数与位立即数与16/3216/32位操作位操作数一起使用时,数一起使用时,CPUCPU自动将其自动将其扩展至符号相扩展至符号相同的同的16

46、/3216/32位位数。同理也可数。同理也可将将1616位立即数位立即数扩展至扩展至3232位位1 14 4字节字节1 12 2字节字节前缀前缀PrefixPrefix操作码操作码OP codeOP code0,1,2,40,1,2,4字节字节0,1,2,40,1,2,4字节字节规定指令的规定指令的操作性质,操作性质,包括操作数包括操作数类型、操作类型、操作数传送方向、数传送方向、寄存器编码寄存器编码或符号扩展或符号扩展等等用于修改指令用于修改指令操作的某些属操作的某些属性性, ,有有5 5类前缀:类前缀:段超越前缀段超越前缀操作数宽度操作数宽度 前缀前缀地址宽度前地址宽度前 缀缀重复前缀重复

47、前缀总线锁定前总线锁定前 缀缀3.3 IA-32的指令格式的指令格式n2. 指令分类指令分类PentiumPentium指令系统分为:指令系统分为:整数指令整数指令-最常用部分最常用部分浮点数指令浮点数指令操作系统型指令操作系统型指令3.4 通用整数指令及应用通用整数指令及应用PentiumPentium的整数指令按功能分为:的整数指令按功能分为:4.4.位操作指令位操作指令5.5.控制转移指令控制转移指令10.10.高级语言指令高级语言指令1.1.数据传送指令数据传送指令2.2.算术运算指令算术运算指令6.6.逻辑运算与移位指令逻辑运算与移位指令3.3.串操作指令串操作指令7.7.标志操作指

48、令标志操作指令8.8.按条件设置字节指令按条件设置字节指令9.9.处理器控制指令处理器控制指令1. 1. 数据传送指令数据传送指令n数据传送数据传送是计算机中最基本、最常用、最重是计算机中最基本、最常用、最重要的一类操作。如:要的一类操作。如:n这类指令寻址方式最丰富,除这类指令寻址方式最丰富,除POPFPOPF外,均不外,均不影响标志寄存器的标志位。影响标志寄存器的标志位。在实际程序中,它的使用频率最高。在实际程序中,它的使用频率最高。 各种初始化操作各种初始化操作 取操作数取操作数 保存结果保存结果3.4 3.4 通用整数指令及应用通用整数指令及应用 用于实现存储器与寄存寄用于实现存储器与

49、寄存寄存器与寄存累加器与存器与寄存累加器与I/OI/O端口之间的数据传递端口之间的数据传递数据传送指令主要包括:数据传送指令主要包括:q 通用数据传送指令通用数据传送指令。如数值传送类指令。如数值传送类指令(MOV)(MOV)、装入有装入有效地址指令效地址指令(LEA)(LEA)、段装入指令、交换类指令段装入指令、交换类指令(XCHG(XCHG和和BSWAP)BSWAP)、查表转换指令查表转换指令(XLAT)(XLAT)等。等。q 堆栈指令堆栈指令。如。如PUSHPUSH类类/POP/POP类指令等。类指令等。q 数据类型变换指令数据类型变换指令。如数据宽度变换指令,带符号数符。如数据宽度变换

50、指令,带符号数符号位扩展号位扩展/ /无符号数位扩展指令等。无符号数位扩展指令等。q I/OI/O指令指令。如。如ININ类类/OUT/OUT类指令等。类指令等。3.4 3.4 通用整数指令及应用通用整数指令及应用 3.4 3.4 通用整数指令及应用通用整数指令及应用 立立即即数数通用寄存器通用寄存器(EAXEAX、EBXEBX、ECXECX、EDXEDX、 EBPEBP、ESPESP、ESIESI、EDI)EDI)CSCS存存储储器器段寄存器段寄存器(SS(SS、DSDS、ESES、FSFS、GS)GS)MOVMOV指令允许的传送关系指令允许的传送关系 传送指令传送指令n指令操作:指令操作:

51、( (源操作数源操作数)目的操作数目的操作数 n指令格式:指令格式:MOV MOV 目的操作数,源操作数目的操作数,源操作数n寻址规定:寻址规定: REG/MEM/SREGREG/MEM/SREG,REGREG REG/MEM REG/MEM, SREGSREG REG/SREG REG/SREG, MEM MEM REG/MEM REG/MEM, IMMIMM3.4 3.4 通用整数指令及应用通用整数指令及应用 IMMIMM8/16/32位位立即数立即数REGREG8/16/32位通位通用寄存器用寄存器MEMMEM8/16/32位位存储器存储器SREGSREG段寄存器段寄存器使用说明:使用说

52、明:n源操作数和目的操作数的源操作数和目的操作数的类型必须一致类型必须一致。n目的操作数目的操作数不能为立即数不能为立即数。nCSCS和和(E)IP(E)IP均不能用作指令的目的寄存器。均不能用作指令的目的寄存器。n段寄存器间不能直接传送,也不能直接将立段寄存器间不能直接传送,也不能直接将立即数送给段寄存器。即数送给段寄存器。n源操作数为立即数源操作数为立即数, ,而目的操作数类型不确而目的操作数类型不确定时定时, ,要给目的操作数加类型说明。要给目的操作数加类型说明。n源操作数和目的操作数源操作数和目的操作数不能同为存储器操作数不能同为存储器操作数。 目的操作数目的操作数, , 源操作数源操

53、作数 REG/MEM/SREGREG/MEM/SREG,REGREG REG/MEM REG/MEM, SREGSREG REG/SREG REG/SREG, MEM MEM REG/MEM REG/MEM, IMMIMM3.4 3.4 通用整数指令及应用通用整数指令及应用 MOV DS MOV DS,100100 MOV 1000H MOV 1000H,23H23H错。错。源、目的操作数不能同为存储器寻址。源、目的操作数不能同为存储器寻址。 MOV 1000H MOV 1000H,2000H2000H错。立即数不能直接赋给段寄存器。错。立即数不能直接赋给段寄存器。错。目的操作数长度不确定。错

54、。目的操作数长度不确定。 MOV DATA MOV DATA,1133H1133H MOV CS MOV CS,AX AX 依赖于依赖于DATADATA的定义的定义错。不能用传送指令改变代码段寄存器。错。不能用传送指令改变代码段寄存器。 MOV AX MOV AX,0100H+BX+BP0100H+BX+BP错。地址寄存器不能同为基址寄存器。错。地址寄存器不能同为基址寄存器。 例例2.32.3 识别下列指令的正确性,对错误的指令,识别下列指令的正确性,对错误的指令,说明错误的原因。说明错误的原因。3.4 3.4 通用整数指令及应用通用整数指令及应用 MOV AXMOV AX,100100MOV

55、 DSMOV DS,AXAXMOV MOV WORD PTRWORD PTR 1000H1000H,23H23HMOV AXMOV AX,2000H2000HMOV 1000HMOV 1000H,AXAX 交换指令交换指令n操作:操作: ( (目的操作数目的操作数) ) ( (源操作数源操作数) )n格式:格式:XCHG XCHG 目的操作数,源操作数目的操作数,源操作数REG/MEMREG/MEM, REGREG REG REG, MEMMEMn说明:说明: 基本用法同基本用法同MOVMOV指令指令; ; 当源或目的操作数为当源或目的操作数为MEMMEM操作数时,会自动操作数时,会自动 激活

56、激活LOCKLOCK信号信号, ,该特性常用于多机、多任务该特性常用于多机、多任务 或多用户系统中的临界段或多用户系统中的临界段( (共享资源共享资源) )访问。访问。3.4 3.4 通用整数指令及应用通用整数指令及应用 是是80486/Pentium CPU 80486/Pentium CPU 中中一条支持多机操作的指令一条支持多机操作的指令 例例2.42.4 临界段访问(测试与置操作)临界段访问(测试与置操作)3.4 3.4 通用整数指令及应用通用整数指令及应用 TESTTEST:MOV ALMOV AL,0FFH0FFH XCHG ALXCHG AL,SEMAPHORE ;SEMAPHO

57、RE ;读信号灯并置读信号灯并置 AND ALAND AL,AL AL ;产生条件码;产生条件码 JNZ TEST JNZ TEST ;忙时等待;忙时等待 ( (临界段程序临界段程序) ) MOV AL MOV AL,0 0 MOV SEMAPHOREMOV SEMAPHORE,AL AL ;清信号灯;清信号灯 I/O指令指令 说明:说明:I/OI/O端口有两种寻址方式端口有两种寻址方式 直接寻址直接寻址, ,寻址范围为寻址范围为0 0255255; ; 间接寻址间接寻址, ,寻址范围为寻址范围为0 02 21616-1-1。 输入指令输入指令 格式:格式:IN IN 累加器累加器, , 端口

58、端口 AL/AX/EAXAL/AX/EAX,IMM8IMM8 AL/AX/EAX AL/AX/EAX,DXDX 操作:操作: AL/AX/EAX(I/OAL/AX/EAX(I/O端口端口) )直接寻址直接寻址: : 指令给出的立即指令给出的立即数是数是I/OI/O端口地址端口地址间接寻址间接寻址: :DXDX寄存器给出的寄存器给出的是是I/OI/O端口地址端口地址3.4 3.4 通用整数指令及应用通用整数指令及应用 输出指令输出指令n格式:格式:OUT OUT 端口端口, , 累加器累加器 IMM8, AL/AX/EAXIMM8, AL/AX/EAX DX , AL/AX/EAX DX , A

59、L/AX/EAXn操作:(操作:(AL/AX/EAXAL/AX/EAX)I/OI/O端口端口3.4 3.4 通用整数指令及应用通用整数指令及应用 n说明说明: : XLATXLAT是一条是一条隐含寻址隐含寻址的指令。隐的指令。隐含两个操作数:含两个操作数:DSDS:(E)BX(E)BX存放表基址,存放表基址,ALAL存放查表参数存放查表参数。使用前要给隐含操作数赋。使用前要给隐含操作数赋初值。初值。 查表指令查表指令n 格式:格式: XLATXLATn 操作:操作: (EBX)+(AL)AL(EBX)+(AL)AL (BX)+(AL)AL (BX)+(AL)AL3.4 3.4 通用整数指令及应

60、用通用整数指令及应用 例例2.52.5 内存中自内存中自TABLETABLE开始的开始的1616个单元连续存个单元连续存放着自然数放着自然数0 0到到1515的平方值的平方值( (构成一个平方表构成一个平方表) ),任给一整数任给一整数M M在在XXXX单元中单元中( (该数为该数为0M15)0M15),查,查表求表求M M的平方值,并将结果存入的平方值,并将结果存入YYYY单元中。单元中。解解: :LEA BXLEA BX,TABLETABLEMOVMOV AL AL,XXXX XLATXLAT MOVMOV YY YY,ALALTABLE 0+1 1+2 4+3 9+15 225XX 53

温馨提示

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

评论

0/150

提交评论