1、第9章 80 x86/Pentium 汇编语言介绍 9.1 80 x86/Pentium微处理器简介 Intel 8086/8088 CPU诞生至今已经20年了,其间不断有新产品,如80286、80386、80486(统称80 x86)及Pentium处理器。这些CPU都是向下兼容的,并进行了指令扩展,从而提供了更加强大的功能。2.80286、80386、80486、Pentium的指令的指令 80286、80386、80486、Pentium的指令比的指令比8086/8088的指令的指令 除了寄存器增多了,操作数类型可以使用双字类型以外,除了寄存器增多了,操作数类型可以使用双字类型以外,增加
2、了一些指令和一些新的指令类型。增加了一些指令和一些新的指令类型。新增加的指令类型是:新增加的指令类型是:条件设置指令条件设置指令 位处理指令(位测试、位扫描)位处理指令(位测试、位扫描)支持高级语言的指令(边界测试、栈空间处理)。支持高级语言的指令(边界测试、栈空间处理)。2.80386、80486、80586、Pentium 扩充了三种寻址方式:扩充了三种寻址方式:带比例因子的变址寻址带比例因子的变址寻址 基址加比例因子的变址寻址基址加比例因子的变址寻址 相对基址加比例因子的变址寻址。相对基址加比例因子的变址寻址。9.1.1 80286微处理器CPU增加了一个极其状态字MSW。新增指令:1.
3、PUSH2.PUSHA 依次将通用寄存器AX.BX.CX.DX.SP.SI.DI的内容压入堆栈3.POPA 依次将栈顶的内容弹至DI.SI.SP.DX.CX.BX.AX9.2.2 有符号数乘法指令(1)IMUL Reg,Imm;Reg只能是16位或32位通用寄存器(2)IMUL Reg1,Reg2/Mem,Imm;Reg1,Reg2只能是16位通用寄存器(3)移位指令 可直接用立即数表示移位次数。SAL ax,2 RCR bx,49.3 80386新增指令80386 可对32位数据直接操作。其内部寄存器也是32位,同时增加了一种32位的内存寻址方式,其偏移地址由3部分构成:(1)一个32位的基
4、址寄存器(2)一个可以乘上1、2、4、8的32位变址寄存器(3)一个32位的偏移量。EA=32位基址寄存器+32位变址寄存器*(1.2.4.8)+32位偏移量9.3.1 数据传送与填充指令1.MOVSX Reg,Reg/Mem将位数较少的源操作数传送到位数较多的目的操作数中。2.MOVZX Reg,Reg/Mem与上面的区别是党员操作输得位数少于目的操作数位数时,目的操作数的高位用0填充。不影响标志位9.3.2 堆栈操作指令1.PUSH Imm32 ;将32位立即数压入堆栈2.PUSHAD 将所有通用寄存器的内容依次压入堆栈。3.POPAD 将当前栈顶内容依次弹出至相应寄存器4.PUSHFD9
5、.3.3 取段寄存器指令1.LFS Reg,Mem将源操作数所指存储单元的4字节或6字节内容传送到指定的寄存器及段寄存器FS.2.LGS Reg,Mem与上相同,但寄存器为GS3.LSS Reg,Mem与上相同,但寄存器为SS9.3.4 有符号数乘法指令IMUL Reg1,Reg2/Mem ;16位或32位通用寄存器但指令中原操作数和目的操作数必须一致9.3.5符号扩展指令1.CWDE将AX中16位有符号数的符号扩展到EAX的高16为中,不影响标志位。2.CDQ将EAX中32位有符号数的符号扩展到EDX寄存器。9.3.6移位指令1.SHLD Reg/Mem,Reg,CL/Imm将第一位操作数左
6、移若干位,空出位用第二操作数(与第一操作数相同的通用寄存器)高位部分填充,但第二操作数内容不变,标志位CF中保留地一操作数最后的移出位。受影响的标志位有CF.OF.PF.SF.ZF2.SHRD Reg/Mem,Reg,CL/Imm基本功能与上相同,但是为向右移动。9.3.7 位操作指令1.位扫描指令 BSF Reg,Reg,Mem对第二操作树丛最低位到最高位进行扫描,将首先扫描到的“1”位送到第一操作数,且使zF置1。否则,置0。2.位检测指令(1)BT Reg/Mem,Reg/Mem第一操作数指定要检测的内容,第二操作数指要测定的位,将被测内容指定测试位的值送至CF.(2)BTC Reg/M
7、em,Reg/Mem(3)BTC Reg/Mem,Reg/Mem该指令在BT指令功能的基础上,将被测位清0。(4)BTC Reg/Mem,Reg/Mem该指令在BT指令功能基础上,将被测位置1。9.4 80486新增指令9.4.1 字节交换指令 BSWAP Reg32 将32位通用寄存器的高低字节以字节位单位进行交换,该指令不影响标志位。9.4.2 交换并相加指令 XADDReg/Mem,Reg先交换两个操作数的值,再进行加法操作,结果送至第一操作数。9.4.3 比较交换指令 CMPXCHG Reg/Mem,reg将第一操作数的内容与相同的位数的第二操作数的内容比较,若相等,则ZF置1,否则Z
8、F清零。9.4.4 Cache管理指令1.使整个片内的Cache无效 INVD2.写回并使Cache无效指令 WBINNVD3.使TLB无效指令 INVLPG9.5 Pentium 新增指令1.8字节比较交换指令 CMPXCHGB Mem64将EDX:EAX重的内容送至指定的8字节存储器操作数相比较。相等,ZF置1,否则,Zf清零。2.处理器特征识别指令 CPUID将处理器的信息送至EAX,特征标志字送EDX.3.读时间表记计数器指令 RDTSC将Pentium CPU 中64位时间表记计数器的低32位送至EAX,高32位送至EDX.4.读模型专用寄存器指令 RDMSR将ECX所制定的模型专用寄存器的低32位送至EAX,高32位送至EDX.5.写模型专用寄存器指令 WRMSP将ECX:EAX的内容送至ECX指定的模型专用寄存器。谢谢指导,本课件到此结束!