《微机原理03Pentium微处理器的指令系统CH3.ppt》由会员分享,可在线阅读,更多相关《微机原理03Pentium微处理器的指令系统CH3.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.1 概述概述3.2 Pentium微处理器的寻址方式微处理器的寻址方式3.3 数据传送指令数据传送指令3.4 算术运算指令算术运算指令3.5 逻辑运算指令逻辑运算指令3.6 串操作指令串操作指令3.7 程序控制指令程序控制指令3.8 保护模式的系统控制指令保护模式的系统控制指令3.9 浮点运算指令浮点运算指令3.10 MMX指令简介指令简介3.1 概述概述指令是微处理器执行某种操作的命令,微处理器全指令是微处理器执行某种操作的命令,微处理器全部指令的集合称为指令系统。部指令的集合称为指令系统。指令有两种书写格式:机器指令和符号指令。指令有两种书写格式:机器指令和符号指令。符号指令是用规定的
2、助记符和规定的书写格式书写符号指令是用规定的助记符和规定的书写格式书写的指令。符号指令的书写格式为:的指令。符号指令的书写格式为:操作码助记符操作码助记符 操作数助记符操作数助记符MOV AL, 1 10110000 000000013.2 Pentium微处理器的寻址方式微处理器的寻址方式寻址方式:寻找指令中操作数地址的方式。寻址方式:寻找指令中操作数地址的方式。操作数有三种可能的存放方式:操作数有三种可能的存放方式:直接包含在指令中直接包含在指令中 立即数立即数 立即数寻址立即数寻址包含在某个寄存器中包含在某个寄存器中 寄存器操作数寄存器操作数 寄存器寻址寄存器寻址在内存中在内存中 存储器
3、操作数(内存操作数)存储器操作数(内存操作数) 存储器寻址存储器寻址内存实际地址由两部分组成:存储单元所在段的基内存实际地址由两部分组成:存储单元所在段的基地址地址/段内偏移地址(偏移量)段内偏移地址(偏移量)MOV ES:3000H, AL段内偏移地址可以由如下四个部分组成(称为偏移段内偏移地址可以由如下四个部分组成(称为偏移地址四元素):地址四元素):基址寄存器内容基址寄存器内容变址寄存器内容变址寄存器内容比例因子比例因子位移量位移量由四元素组合形成的偏移地址称为有效地址由四元素组合形成的偏移地址称为有效地址EA:EA=基址基址+(变址变址 比例因子比例因子)+位移量位移量对于实模式(对于
4、实模式(16位寻址):位寻址):基址寄存器:基址寄存器:BX,BP变址寄存器:变址寄存器:SI,DI比例因子:比例因子: 0,1位移量:位移量: 0,8,16位位对于保护模式(对于保护模式(32位寻址):位寻址):基址寄存器:任何基址寄存器:任何32位通用寄存器位通用寄存器变址寄存器:除变址寄存器:除ESP外的任何外的任何32位通用寄存器位通用寄存器比例因子:比例因子: 1,2,4,8位移量:位移量: 0,8,32位位由四元素可组合出由四元素可组合出9种存储器寻址方式。种存储器寻址方式。Pentium微处理器共有微处理器共有11种寻址方式:种寻址方式:1. 立即数寻址立即数寻址操作数作为立即数
5、直接存在指令中,可为字节、字、操作数作为立即数直接存在指令中,可为字节、字、双字双字MOV ECX, 12345678H低地址低地址高地址高地址CS段段操作码操作码78H56H34H12H78H56H34H12HECX2. 寄存器寻址寄存器寻址操作数包含在指令规定的操作数包含在指令规定的8位、位、16位、位、32位寄存器位寄存器中中MOV ECX, EDX78H56H34H12HECX78H56H34H12HEDX寄存器寻址由于无需从存储器中取操作数,故执行寄存器寻址由于无需从存储器中取操作数,故执行速度快速度快3. 直接寻址直接寻址指令中的操作数部分直接给出操作数的有效地址指令中的操作数部分
6、直接给出操作数的有效地址EA,操作数可以是,操作数可以是16位或位或32位整数,操作数默认位整数,操作数默认在在DS段中段中MOV AX, 3000H低地址低地址高地址高地址CS段段操作码操作码00H30H34H12H34H12HAXDS段段5000053000DS5000 0300053000+如果操作数在如果操作数在DS以外的其他段(以外的其他段(CS,SS,ES,FS,GS)中,指令中必须指明段寄存器中,指令中必须指明段寄存器MOV AX, FS:3000H低地址低地址高地址高地址CS段段操作码操作码00H30H34H12H34H12HAXFS段段2000023000FS2000 030
7、0023000+4. 寄存器间接寻址寄存器间接寻址操作数地址的偏移量(有效地址操作数地址的偏移量(有效地址EA)存放在寄存)存放在寄存器中器中16位寻址:偏移地址放在位寻址:偏移地址放在SI,DI,BP,BX中中以以SI,DI, BX间接寻址,默认操作数在间接寻址,默认操作数在DS段中段中MOV AX, SI以以BP间接寻址,默认操作数在间接寻址,默认操作数在SS段中段中MOV AX, BP32位寻址:偏移地址放在位寻址:偏移地址放在8个个32位通用寄存器中位通用寄存器中除除ESP,EBP默认段寄存器为默认段寄存器为SS外,其余均默认外,其余均默认段寄存器为段寄存器为DSMOV EAX, ES
8、P低地址低地址高地址高地址CS段段操作码操作码34H12H34H12HAXSS段段7000073000SS7000 0300073000+MOV AX, BPBP5. 基址寻址基址寻址EA=基址寄存器基址寄存器+位移量位移量16位寻址:位寻址:BP,BX为基址寄存器为基址寄存器BX, DS为默认段寄存器为默认段寄存器BP, SS为默认段寄存器为默认段寄存器32位寻址:位寻址:8个个32位通用寄存器均可作为基址寄存位通用寄存器均可作为基址寄存器,除器,除ESP,EBP默认段寄存器为默认段寄存器为SS外,其余均默认外,其余均默认段寄存器为段寄存器为DSMOV EAX, BX+24MOV DX, E
9、AX+1500低地址低地址高地址高地址CS段段操作码操作码00H15H34H12H34H12HAXFS段段7000073500BX150073500+MOV DX, BX+1500DS7000 020006. 变址寻址变址寻址EA=变址寄存器变址寄存器+位移量位移量16位寻址:位寻址:SI,DI为基址寄存器为基址寄存器, DS为默认段寄存器为默认段寄存器32位寻址:除位寻址:除ESP外其余外其余7个个32位通用寄存器均可位通用寄存器均可作为变址寄存器,作为变址寄存器,EBP默认默认SS为段寄存器,其余均为段寄存器,其余均默认段寄存器为默认段寄存器为DSMOV AH, SI+5变址寻址适用于对一
10、维数组的元素进行操作。变址寻址适用于对一维数组的元素进行操作。7. 比例变址寻址比例变址寻址EA=变址寄存器变址寄存器 比例因子比例因子+位移量位移量只适用于只适用于32位寻址位寻址 MOV EAX, ESI*4+50比例变址寻址适用于一维数组操作,当数组元素大比例变址寻址适用于一维数组操作,当数组元素大小为小为2/4/8字节时,它更方便、有效字节时,它更方便、有效8. 基址加变址寻址基址加变址寻址EA=基址寄存器基址寄存器+变址寄存器变址寄存器适用于适用于16位和位和32位寻址位寻址 MOV AX, BX+SI MOV EAX, EDX+EBP基址加变址寻址主要用于二维数组操作和二重循环基址
11、加变址寻址主要用于二维数组操作和二重循环9. 基址加比例变址寻址基址加比例变址寻址EA=变址寄存器变址寄存器 比例因子比例因子+基址寄存器基址寄存器只适用于只适用于32位寻址位寻址 MOV EAX, EDX*8+EAX适用于数组元素大小为适用于数组元素大小为2/4/8字节时二维数组操作字节时二维数组操作10. 带位移的基址加变址寻址带位移的基址加变址寻址EA=基址寄存器基址寄存器+变址寄存器变址寄存器+位移量位移量适用于适用于16位和位和32位寻址位寻址 MOV AX, BX+SI+50 MOV EAX, EDX+EBP+0FFFF000H主要用于二维数组操作主要用于二维数组操作,位移量为数组
12、起始地址位移量为数组起始地址11. 带位移的基址加比例变址寻址带位移的基址加比例变址寻址EA=变址寄存器变址寄存器 比例因子比例因子+基址寄存器基址寄存器+位移量位移量只适用于只适用于32位寻址位寻址 MOV AX, BX+SI+50 MOV EAX, EDX+EBP+0FFFF000H适用于数组元素大小为适用于数组元素大小为2/4/8字节时二维数组操作字节时二维数组操作,位位移量为数组起始地址移量为数组起始地址3.3 数据传送指令数据传送指令执行后不影响标志位,源操作数不变执行后不影响标志位,源操作数不变1. 通用数据传送指令通用数据传送指令MOV 目标操作数,目标操作数, 源操作数源操作数
13、1)源操作数可以是)源操作数可以是8/16/32位的立即数、寄存器操位的立即数、寄存器操作数、内存操作数。目标操作数不允许为立即数,作数、内存操作数。目标操作数不允许为立即数,其余同源操作数。源、目不能同时为内存操作数。其余同源操作数。源、目不能同时为内存操作数。2)源、目操作数类型必须匹配)源、目操作数类型必须匹配MOV BYTE PTR BX, 12H3) 不能向段寄存器写立即数不能向段寄存器写立即数MOV AX, 2000MOV DX, AX4) 以以CS为目标的一切传送指令都是非法的为目标的一切传送指令都是非法的MOVSX 目标寄存器,目标寄存器, 源操作数源操作数符号扩展传送指令符号
14、扩展传送指令MOV DL, -16MOVSX BX, DLMOVZX 目标寄存器,目标寄存器, 源操作数源操作数零扩展传送指令零扩展传送指令MOV DL, -16MOVZX BX, DLXCHG 目标操作数,目标操作数, 源操作数源操作数交换指令,源、目不能同为内存操作数交换指令,源、目不能同为内存操作数XCHG AX, SI+0400HBSWAP 32位寄存器位寄存器字节交换指令,字节交换指令,MOV EAX, 12345678HBSWAP EAXXLAT 表头变量名表头变量名查表指令,用来取表中某指定数的值查表指令,用来取表中某指定数的值TABLE DB 48, 49, 50, 51, 5
15、2, 53, 54, 55, 56, 57 MOV BX, OFFSET TABLE MOV AL, 5 XLAT TABLE执行后执行后AL=53LAHF SAHF标志寄存器传送指令标志寄存器传送指令2. 堆栈操作指令堆栈操作指令PUSH 源操作数源操作数进栈指令,先调整堆栈指针,再把源操作数压栈进栈指令,先调整堆栈指针,再把源操作数压栈PUSH AXPUSH DWORD PTR SI+5POP 目标操作数目标操作数出栈指令,先将栈顶出栈指令,先将栈顶2/4字节送目标操作数,再调字节送目标操作数,再调整堆栈指针整堆栈指针POP AXPOP DWORD PTR SI+5PUSHF POPF16
16、位标志寄存器进栈位标志寄存器进栈/出栈指令出栈指令PUSHFD POPFD32位标志寄存器进栈位标志寄存器进栈/出栈指令出栈指令PUSHA POPA16位通用寄存器进栈位通用寄存器进栈/出栈指令出栈指令PUSHAD POPAD32位通用寄存器进栈位通用寄存器进栈/出栈指令出栈指令3. 目标地址传送指令目标地址传送指令LEA 目标寄存器,目标寄存器, 源操作数源操作数有效地址传送指令,源操作数为内存操作数,将有效地址传送指令,源操作数为内存操作数,将内存单元的有效地址(而不是内容)传送到目标内存单元的有效地址(而不是内容)传送到目标寄存器寄存器LEA EAX, SI+5LDS/LES/LFS/L
17、GS/LSS 目标寄存器,目标寄存器, 源操作数源操作数指针传送指令指针传送指令ADDR DD 1A2B3C4DH LDS SI, ADDR4. I/O数据传送指令数据传送指令完成累加器和完成累加器和I/O端口之间的数据传送端口之间的数据传送IN 累加器,端口号累加器,端口号端口号为端口号为8位时,直接寻址位时,直接寻址,最多可访问最多可访问256个端口个端口IN AX, PORT端口地址为端口地址为16位时,间接寻址,端口地址必须放位时,间接寻址,端口地址必须放在在DX寄存器中,最多可访问寄存器中,最多可访问65536个端口个端口IN AL, DXOUT 端口号端口号,累加器累加器3.4 算
18、术运算指令算术运算指令加、减、乘、除,运算对象加、减、乘、除,运算对象8/16/32位有符号位有符号/无符号无符号整数,以及整数,以及BCD码码影响标志位影响标志位1. 加法指令加法指令ADD 目标操作数,目标操作数, 源操作数源操作数源操作数源操作数+目标操作数目标操作数目标操作数目标操作数ADC 目标操作数,目标操作数, 源操作数源操作数源操作数源操作数+目标操作数目标操作数+CF目标操作数目标操作数影响影响A,C,O,P,S,Z6个标志位个标志位INC 目标操作数目标操作数目标操作数目标操作数+1目标操作数目标操作数影响影响A,O,P,S,Z5个标志位个标志位2. 减法指令减法指令SUB
19、 目标操作数,目标操作数, 源操作数源操作数目标操作数目标操作数-源操作数源操作数目标操作数目标操作数SBB 目标操作数,目标操作数, 源操作数源操作数目标操作数目标操作数-源操作数源操作数-CF目标操作数目标操作数DEC 目标操作数目标操作数目标操作数目标操作数-1目标操作数目标操作数NEG 目标操作数目标操作数0-目标操作数目标操作数目标操作数目标操作数影响影响A,C,O,P,S,Z6个标志位个标志位CMP 目标操作数,目标操作数, 源操作数源操作数比较指令比较指令3. 乘法指令乘法指令MUL 乘数乘数无符号乘法无符号乘法IMUL 乘数乘数有符号乘法有符号乘法4. 除法指令除法指令DIV 除数除数无符号除法无符号除法IDIV 除数除数有符号除法有符号除法5. 十进制调整指令十进制调整指令DAA加法的压缩加法的压缩BDC码调整指令码调整指令AAA加法的非压缩加法的非压缩BDC码调整指令码调整指令DAS减法的压缩减法的压缩BDC码调整指令码调整指令AAS减法的非压缩减法的非压缩BDC码调整指令码调整指令AAM乘法的非压缩乘法的非压缩BDC码调整指令码调整指令AAD除法的非压缩除法的非压缩BDC码调整指令码调整指令
限制150内