X86寻址方式和指令系统.ppt
《X86寻址方式和指令系统.ppt》由会员分享,可在线阅读,更多相关《X86寻址方式和指令系统.ppt(113页珍藏版)》请在三一办公上搜索。
1、第三章 80X86寻址方式和指令系统,3.1 80X86寻址方式3.2 80X86指令格式3.3 80X86指令系统,3.1 80X86寻址方式,3.1.1 数据寻址方式 操作数有可能在:(1)代码段中,作为指令中的立即数(2)CPU寄存器中(3)存储器的数据段或堆栈段或附加数据段中所以,总的来说,数据寻址方式分为三种:立即寻址 寄存器寻址 存储器寻址,一、立即寻址,操作数直接包含在代码段的指令中。如:MOV EAX,80000000H MOV BX,6688H MOV AL,12H立即数只能作为源操作数立即寻址主要用来给通用寄存器或存储器赋值不允许给段寄存器直接赋值,例3.1 立即寻址,立即
2、寻址过程示意,立即寻址动态示意,二、寄存器寻址,操作数在寄存器中。32位寄存器:EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI16位寄存器:AX、BX、CX、DX、SP、BP、SI、DI、CS、DS、SS、ES、FS、GS8 位寄存器:AH、AL、BH、BL、CH、CL、DH、DL 如:MOV AX,BX MOV EDI,ESI MOV AL,CL,例3.2 寄存器寻址,三、存储器寻址,操作数在存储器中,其地址由指令以某种方式指出。(一)16位指令模式下:物理地址=段基址 10H 有效地址EA(二)32位指令模式下:物理地址=段基址 有效地址EAEA的计算方法根据采用的寻址方式
3、不同而不同。,(一)16位指令模式下的存储器寻址,16位指令模式寻址结构:段基址10H基址变址偏移量 基址:BX、BP 变址:SI、DI 偏移量:8位或16位 如果有效地址在BX,SI或DI中,则以DS寄存器内容为段基址;如果有效地址在BP中,则以SS段寄存器之内容为段基址。如果使用段超越前缀(CS:ES:DS:SS:),操作数可以放在冒号前指定的段。16位指令模式寻址方式:直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址,1、直接寻址,操作数在存储器单元中。操作数所在的有效地址EA直接由指令指出。例1 MOV AX,3000H 例2 MOV BL,BLOCK 例3 M
4、OV BX,DATA1,例3.3 直接寻址,直接寻址过程示意,直接寻址动态示意,2、寄存器间接寻址,操作数的有效地址在BX、BP或SI、DI中,EA可表示为例1 MOV AX,BX例2 MOV DL,SI,例3.4 寄存器间接寻址,寄存器间接寻址过程示意,寄存器间接寻址动态示意,3、寄存器相对寻址,操作数在存储单元中,其有效地址EA可表示为 例1 MOV AL,BX4000H亦可写成:MOV AL,4000HBX 例2 MOV AX,BP+2000H,例3.6 寄存器相对寻址,寄存器相对寻址过程示意,寄存器相对寻址动态示意,4、基址变址寻址,操作数在存储单元中,其有效地址EA可表示为 例1 M
5、OV AX,BXSI 或写成:MOV AX,BXSI 例2 MOV AX,BX+DI 例3 MOV AX,BP+SI 例4 MOV AX,BP+DI,例3.7 基址变址寻址,基址变址寻址过程示意,基址变址寻址动态示意,5、相对基址变址寻址,操作数在存储单元中,其有效地址EA可表示为 例1 MOV AX,BXSI1500H或写成 MOV AX,1500BXSI 例2 MOV AX,BP+DI+1000H,例3.8 相对基址变址寻址,相对基址变址寻址过程示意,相对基址变址寻址动态示意,(二)32位指令模式下的存储器寻址,32位指令模式寻址结构由5部分组成:段址基址变址比例因子偏移量 其中基址寄存器
6、或变址寄存器可以是除ESP以外的任何32位通用寄存器。当基址寄存器为EBP时,默认段寄存器SS存放段选择符,否则,默认DS存放段选择符。也可使用段超越前缀来指定。比例因子为1,2,4,8。偏移量为8位或32位。,32位指令模式下的存储器寻址方式,1、直接寻址 如:MOV EAX,10000000H2、间接寻址 如:MOV EDX,ECX3、相对基址寻址 如:MOV ECX,EAX+80H4、相对比例变址寻址 如:MOV EBX,ESI*4+80H5、相对比例基址变址寻址 如:MOV EAX,EBP+EDI*4+80H,3.1.2 程序地址寻址方式一、相对寻址 相对寻址为段内寻址,指令中给出带符
7、号的相对偏移量,程序目标地址为当前IP值加上相对偏移量作为偏移地址。二、直接寻址 直接寻址是指指令中直接给出转移指令的目标地址。在段间转移中,指令中给出目标段地址或代码段的段描述符。三、间接寻址 间接寻址 分段内和段间间接寻址,指令中以间接方式给出转移指令的目标地址,通常存放在数据段。,3.1.3 堆栈地址寻址方式,字数据进栈步骤:1、(E)SP1(E)SP2、高8位堆栈3、(E)SP1(E)SP4、低8位堆栈字数据出栈步骤:1、栈顶内容目标寄存器或目标单元的低8位2、(E)SP1(E)SP3、栈顶内容目标寄存器或目标单元的高8位4、(E)SP1(E)SP,堆栈操作示意,思考题,1、设DS=2
8、000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=00001000H,EBX=00002000H,假设按16位实模式操作,确定下列每条指令访问内存的物理地址,并且指出源操作数及目的操作数的寻址方式。(1)MOV AL,1234H(2)MOV EDX,BX(3)MOV CL,BX100H(4)MOV SI,EBX(5)MOV AH,BUFBXSI(6)MOV EAX,BP1234H,3.2 80X86指令格式,指令基本格式:标号:助记符 操作数;注释BYTE PTR。WORD PTR。DWORD PTR。如 INC WORD PTR BX,3.3 80X
9、86指令系统,按功能分类:数据传送指令算术运算指令逻辑运算指令控制转移类指令串操作指令输入/输出指令处理器控制指令中断指令与DOS功能调用,3.3.1 数据传送指令,通用数据传送指令堆栈操作指令地址传送指令标志寄存器传送指令查表指令符号扩展指令,数据传送指令包括:,3.3.1 数据传送指令,数据传送指令包括:,通用数据传送指令堆栈操作指令地址传送指令标志寄存器传送指令查表指令符号扩展指令,传送指令数据流,*CS不能为目的操作数,不能对(E)IP直接传送数据*堆栈操作不允许为字节操作,一、通用数据传送指令,DEST:目的操作数SRC:源操作数1、一般传送指令 MOV DEST,SRC如:MOV
10、AL,CL MOV BX,SI MOV EAX,EBX,使用MOV指令应注意:,立即数不允许直接送段寄存器,且立即数不能做目的操作数源操作数和目的操作数不允许同时为存储器操作数源操作数和目的操作数不允许同时为段寄存器两操作数的数据类型要一致传送操作不影响标志位不允许对CS、(E)IP传送数据,2、扩展传送指令 MOVSX DEST,SRC MOVZX DEST,SRC如 MOV BL,80H MOVSX AX,BL;AX=FF80H MOVZX AX,BL;AX=0080H*目的操作数为通用寄存器(16位或32位)*源操作数长度必须小于目的操作数长度,为通用寄存器或存储器操作数(8位或16位)
11、,3、交换指令 XCHG DEST,SRC如:XCHG EAX,EBX XCHG AX,SI XCHG AL,SI*两操作数中不允许出现立即数*两操作数不允许同时为存储器操作数*两操作数数据类型必须一致,二、堆栈操作指令,压栈指令 PUSH SRC如:PUSH EAX PUSH DS PUSH SI PUSH DWORD PTR SI PUSH 1234H PUSHD 80H 出栈指令 POP DEST如:POP AX POP DS POP BX POP DWORD PTR DI,三、地址传送指令,格式:LEA DEST,SRC*DEST为16位或32位通用寄存器*SRC为16位或32位存储器
12、操作数例1:LEA BX,SI+1005H 若SI=1000H 则BX=?例2:LEA DI,BLOCK MOV DI,BLOCK 有何区别?,四、标志寄存器传送指令,格式1:LAHF SAHF格式2:PUSHF POPF格式3:PUSHFD POPFD*SAHF、POPF、POPFD影响标志位,五、查表指令,格式:XLAT指令规定:表格存于数据段中 表首偏移地址BX 表内偏移量AL 查找结果AL所找单元的物理地址:(DS)10H+(BX)+(AL),查表指令应用举例,LEA BX,BLOCK MOV AL,3 XLAT结果:AL内容为4FH,例:试编程将内存中以BLOCK为起始地址的编码表中
13、顺序号为3的编码送AL寄存器。,六、符号扩展指令,针对带符号数,按带符号数扩展。1、CBW 功能:AL(8位)AX(16位)2、CWD 功能:AX(16位)DX:AX(32位)3、CWDE 功能:AX(16位)EAX(32位)4、CDQ 功能:EAX(32位)EDX:EAX(64位),3.3.2 算术运算指令,加法指令减法指令加1减1指令比较指令乘法指令除法指令BCD算术运算指令,算术运算类指令特点,影响标志位操作数不允许为段寄存器不允许两个操作数同为存储器操作数若无特别规定,操作数类型必须一致目的操作数不允许为立即数当操作数类型不明确时必须使用PTR伪指令,一、加法指令,格式(1)ADD D
14、EST,SRC功能:源操作数+目的操作数目的操作数格式(2)ADC DEST,SRC功能:源操作数+目的操作数+CF目的操作数例:32F2H+A020H=?MOV AX,32F2H 或 MOV AX,32F2HMOV BX,0A020H MOV BX,0A020HADD AX,BX ADD AL,BL ADC AH,BH,二、减法指令,格式(1)SUB DEST,SRC功能:目的操作数源操作数目的操作数格式(2)SBB DEST,SRC功能:目的操作数源操作数CF目的操作数*SUB、SBB指令与ADD、ADC一样,影响标志位OF、SF、ZF、AF,PF,CF,三、加1减1指令,加1指令 INC
15、 DEST功能:目的操作数1目的操作数减1指令 DEC DEST功能:目的操作数1目的操作数*不影响CF,影响OF、SF、ZF、AF、PF例:INC BX INC BYTE PTR BX DEC EAX DEC WORD PTRSI,四、比较指令,格式 CMP DEST,SRC功能:目的操作数源操作数(1)若目、源为无符号数 CF=0 则目源(若ZF=1,则目=源)CF=1 则目源(2)若目、源为带符号数 若目、源为同号数(OF=0)若均为正,SF=0 则目源(若ZF=1,则目=源)SF=1 则目源 若均为负,SF=0 则目源(若ZF=1,则目=源)SF=1 则目源,若目、源为异号数(OF=0
16、或1)若目为正,源为负 则目源 若此时 SF=0 则OF=0 若此时 SF=1 则OF=1 若目为负,源为正 则目源 若此时 SF=1 则OF=0 若此时 SF=0 则OF=1综合起来,若目、源为带符号数 OFSF=0 则目源 OFSF=1 则目源,五、交换相加指令,格式 XADD DEST,SRC功能:目的操作数源操作数目的操作数 且原目的操作数源操作数影响标志位OF、SF、ZF、AF、PF、CF六、求补指令格式 NEG DEST功能:求目的操作数的相反数的补码影响标志位OF、SF、ZF、AF、PF、CF,七、乘法指令,格式 MUL SRC(针对无符号数)IMUL SRC(针对带符号数)隐含
17、规定:SRC为一乘数因子,可为 8位/16位/32位寄存器或存储器另一乘数因子在累加器中(AL/AX/EAX)结果为乘积,乘积隐含在(AX/DX:AX/EDX:EAX)字节乘 字乘 双字乘*若乘积高位为0,则CF=0,OF=0 若乘积高位含有效数据,则CF=1,OF=1 对其它标志位无定义,例:计算存于下列内存中的两个无符号数的乘积 1234H2345H=?结果放RESULT单元,LEA BX,BLOCKMOV AX,BXMUL WORD PTR BX+4MOV RESULT,AXMOV RESULT+2,DX结果为02820404HCF=1,OF=1,八、除法指令,格式 DIV SRC(针对
18、无符号数)IDIV SRC(针对带符号数)隐含规定:SRC为除数,为 8位/16位/32位寄存器或存储器被除数隐含在(AX/DX:AX/EDX:EAX)商隐含在(AL/AX/EAX)余数隐含在(AH/DX/EDX)字节除 字除 双字除*当除数为0或商溢出时会产生中断*被除数必须是除数的双倍长度,否则,需要进行高位扩展 无符号数高位扩展为全0,带符号数按符号扩展指令扩展,九、组合型BCD算术运算指令,组合BCD码也称压缩格式的BCD码,用一个字节存储2位BCD码。如十进制数12的组合BCD码为 00010010B 35的组合BCD码为 00110101B该类指令使用场合:当参与运算的十进制数以其
19、组合BCD码形式存放,加减时,计算机会当作二进制数来运算,其结果一定不是理想要得的组合型BCD码结果,这时,必须用组合型BCD算术运算指令加以调整,即将二进制结果调整为BCD码表示形式。加法调整指令一般紧跟在ADD或ADC之后,减法调整指令一般紧跟在SUB或SBB之后。,1、组合型BCD加法调整指令,格式 DAA功能:AL(二进制和)组合BCD码例:26+68=?分析:用组合BCD码存放时,两个数应分别为26H和68H,理想结果应该为94H。编程如下:,MOV AL,26HMOV BL,68HADD AL,BL;AL=8EHDAA;AL=94H,2、组合型BCD减法调整指令,格式 DAS功能:
20、AL(二进制差)组合BCD码例:6556=?MOV AL,65H MOV BL,56H SUB AL,BL;AL=0FH DAS;AL=09H,十、非组合型BCD算术运算指令,非 组合BCD码也称非压缩格式的BCD码,用一个字节存储1位BCD码,高4位无意义。如非组合BCD码 00010010B表示的数为2 非组合BCD码 00110101B表示的数为5 3635H即表示的数是65由于09的ASCII码为30H39H,机器采用一个字节存放一位ASCII码,所以,ASCII码是一种非组合型BCD码。非组合型BCD调整指令有加、减、乘、除四种调整指令。,1、非组合型BCD加法调整指令,格式 AAA
21、功能:AL(二进制和)非组合BCD码例:5+9=?分析:用非组合BCD码存放时,两个数应分别为05H和09H,理想结果应该为0104H。编程如下:,MOV AL,05HMOV BL,09HADD AL,BL;AL=0EHAAA;AX=0104H,2、非组合型BCD减法调整指令,格式 AAS功能:AL(二进制差)非组合BCD码 3、非组合型BCD乘法调整指令格式 AAM功能:AL(二进制乘积)非组合BCD码 4、非组合型BCD除法调整指令格式 AAD功能:AX(两位非组合BCD码)二进制数*AAD指令必须放在除法指令之前进行。其他调整指令都是先运算后调整。,思考题,判断下列指令是否正确,若有错误
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- X86 寻址 方式 指令系统
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6523987.html