《汇编语言程序设计及上机指导 指令系统.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计及上机指导 指令系统.pptx(90页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回115 二月 202380X86指令集指令集8086指令集指令集Pentium X指令集指令集Core2指令集指令集oo指指指指令令令令系系系系统统统统是是是是C C C CPUPUPUPU所所所所能能能能执执执执行行行行的的的的各各各各种种种种指指指指令令令令的的的的集集集集合合合合,定定定定义义义义了了了了计计计计算算算算机机机机硬硬硬硬件件件件所所所所能能能能完完完完成成成成的的的的基基基基本本本本操操操操作作作作,不不不不同同同同的的的的C C C CPUPUPUPU有有有有不不不不同同同同的的的的指指指指令系统。令
2、系统。令系统。令系统。oo8 8 8 80 0 0 086/886/886/886/80 0 0 088C88C88C88CPUPUPUPU的的的的 指指指指 令令令令 系系系系 统统统统 是是是是 基基基基 本本本本 指指指指 令令令令 集集集集,8 8 8 80X0X0X0X86868686、PentiumXPentiumXPentiumXPentiumX以以以以及及及及C C C Coreoreoreore2 2 2 2系系系系列列列列的的的的指指指指令令令令系系系系统统统统保保保保留留留留了了了了基基基基本本本本指指指指令令令令集集集集,又进行了扩充。又进行了扩充。又进行了扩充。又进行
3、了扩充。4.1 指令系统概述指令系统概述 第第第第1 1页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回215 二月 2023oo8086/80888086/8088指令系指令系指令系指令系统统是基本指令集,指令是基本指令集,指令是基本指令集,指令是基本指令集,指令的的的的操作数操作数操作数操作数宽宽度是度是度是度是8 8位或位或位或位或1616位,偏移地址位,偏移地址位,偏移地址位,偏移地址宽宽度是度是度是度是1616位位位位。ooIA-32IA-32扩扩充指令和系充指令和系充指令和系充指令和系统统控制指令控制指令控制指令控制指令的的的
4、的操作数操作数操作数操作数宽宽度可以是度可以是度可以是度可以是8 8位、位、位、位、1616位或位或位或位或3232位,偏移地址位,偏移地址位,偏移地址位,偏移地址宽宽度一般是度一般是度一般是度一般是3232位位位位。oo6464位方式指令位方式指令位方式指令位方式指令的的的的操作数可以是操作数可以是操作数可以是操作数可以是8 8位、位、位、位、1616位、位、位、位、3232位或位或位或位或6464位,操作数位,操作数位,操作数位,操作数的的的的偏移地址可以是偏移地址可以是偏移地址可以是偏移地址可以是1616位、位、位、位、3232位或位或位或位或6464位位位位。oo指令系指令系指令系指令
5、系统统大体可以分成大体可以分成大体可以分成大体可以分成7 7个功能个功能个功能个功能组组:数据:数据:数据:数据传传送送送送类类、算、算、算、算术术运算运算运算运算类类、逻辑逻辑运算与移位运算与移位运算与移位运算与移位类类、串操作、串操作、串操作、串操作类类、控制、控制、控制、控制转转移移移移类类、处处理器控制和其他理器控制和其他理器控制和其他理器控制和其他类类。第第第第2 2页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回315 二月 2023符符 号号意意 义义OPROPRD D,OPROPRD DN N操作操作数数,第第N N个操作
6、个操作数数如如OPROPRD1D1、OPROPRD2D2、OPROPRD3D3等等DESDEST T,S SR RC C目的操作目的操作数数,源操作源操作数数R REG8EG88 8位通用寄存器位通用寄存器AHAH/ALAL/BHBH/BLBL/C/CH H/C/CL L/D/DH H/D/DL L/S/SILIL/D/DILIL/S/SPLPL/BPLBPL以及以及R R8 8LRLR1 15L5LR REG16EG161616位通用寄存器位通用寄存器AXAX/BXBX/C/CX X/D/DX X/S/SI I/D/DI I/BPBP/S/SP P以及以及R R8 8WRWR1 15W5WR
7、 REG32EG323232位通用寄存器位通用寄存器E EAXAX/E/EBXBX/EC/ECX X/ED/EDX X/ES/ESI I/ED/EDI I/E/EBPBP/ES/ESP P以及以及R R8D8DRR1 15 5D DR REG64EG646464位通用寄存器位通用寄存器RAXRAX/RBXRBX/R RC CX X/R RD DX X/R RS SI I/R RD DI I/RBPRBP/R RS SP P以及以及R R8 8RR1 15 5R REGEGR REG8/EG8/R REGEGL L6/6/R REG32/EG32/R REG64EG64SEGSEG段寄存器段寄存
8、器DS/CS/SS/ES/FS/GSDS/CS/SS/ES/FS/GSM ME EM M8/8/M ME EM M16/16/M ME EM M32/32/M ME EM M64648 8位位/16/16位位/32/32位位/64/64位位内内存存操作操作数数M ME EM MM ME EM M8/8/M ME EM M16/16/M ME EM M32/32/M ME EM M6464IMMIMM8/8/IMMIMM16/16/IMMIMM32/32/IMIMM M64648 8位位/16/16位位/32/32位位/64/64位立即数位立即数IMMIMMIMMIMM8/8/IMMIMM16/
9、16/IMMIMM32/32/IMMIMM6464第第第第3 3页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回415 二月 20234.2 数据传送类指令数据传送类指令指指指指 令令令令 书书书书 写写写写 格格格格 式式式式指指指指 令令令令 功功功功 能能能能MOV REG/MEM/SEGMOV REG/MEM/SEGMOV REG/MEM/SEGMOV REG/MEM/SEG,REG/MEM/SEG/IMMREG/MEM/SEG/IMMREG/MEM/SEG/IMMREG/MEM/SEG/IMMXCHG REG/MEMXCHG R
10、EG/MEMXCHG REG/MEMXCHG REG/MEM,REG/MEMREG/MEMREG/MEMREG/MEMXLATXLATXLATXLATBSWAP REG32BSWAP REG32BSWAP REG32BSWAP REG32从从从从SRCSRCSRCSRC传送到传送到传送到传送到DESTDESTDESTDEST交换两个操作交换两个操作交换两个操作交换两个操作数数数数的内容的内容的内容的内容字节翻译字节翻译字节翻译字节翻译字节交换指令字节交换指令字节交换指令字节交换指令(486(486(486(486新增新增新增新增)1.通用数据传送通用数据传送2.堆栈操作堆栈操作3.地址传送地址
11、传送4.标志位传送标志位传送5.I/O数据传送数据传送传送类指令执行后对标志位都没有影响(除传送类指令执行后对标志位都没有影响(除SAHF、POPF和和POPFD外)。外)。通用数据传送指令通用数据传送指令 第第第第4 4页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回515 二月 2023(1)MOV指令指令oo指令格式:指令格式:指令格式:指令格式:MOV OPRD1MOV OPRD1,OPRD2OPRD2oo功能:将源操作数功能:将源操作数功能:将源操作数功能:将源操作数传传送送送送给给目目目目标标操作数操作数操作数操作数【例例例例
12、】MOV AL MOV AL,BH BH ;通用寄存器之;通用寄存器之;通用寄存器之;通用寄存器之间传间传送字送字送字送字节节数据数据数据数据 MOV DSMOV DS,AX AX ;通用寄存器与段寄存器(;通用寄存器与段寄存器(;通用寄存器与段寄存器(;通用寄存器与段寄存器(CSCS不能是目不能是目不能是目不能是目标标)之)之)之)之间传间传送数据送数据送数据送数据 MOV EAXMOV EAX,12345678H 12345678H;立即数;立即数;立即数;立即数传传送到通用寄存器送到通用寄存器送到通用寄存器送到通用寄存器 MOV RAXMOV RAX,BUFFERBUFFER ;通用寄存
13、器与存;通用寄存器与存;通用寄存器与存;通用寄存器与存储储器之器之器之器之间间6464位数据位数据位数据位数据传传送送送送 MOV DATBP+DIMOV DATBP+DI,ES ES ;段寄存器与存;段寄存器与存;段寄存器与存;段寄存器与存储储器之器之器之器之间传间传送数据送数据送数据送数据第第第第5 5页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回615 二月 2023MOV指令操作数要求指令操作数要求 段寄存器段寄存器DS/CS/SS/ES/FS/GSDS/CS/SS/ES/FS/GS通用寄存器通用寄存器8 8位、位、1616位、
14、位、3232位、位、6464位位存储器存储器立即数立即数8 8位、位、1616位、位、3232位、位、6464位位注意:注意:注意:注意:立即数和段寄存器立即数和段寄存器立即数和段寄存器立即数和段寄存器CSCS不能作不能作不能作不能作为为目目目目标标操作数;操作数;操作数;操作数;立即数不能直接立即数不能直接立即数不能直接立即数不能直接传传送到段寄存器;送到段寄存器;送到段寄存器;送到段寄存器;两个存两个存两个存两个存储单储单元之元之元之元之间间不能直接不能直接不能直接不能直接传传送数据;送数据;送数据;送数据;两个段寄存器之两个段寄存器之两个段寄存器之两个段寄存器之间间不能直接不能直接不能直
15、接不能直接传传送数据;送数据;送数据;送数据;两个操作数两个操作数两个操作数两个操作数宽宽度必度必度必度必须须一致一致一致一致 。第第第第6 6页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回715 二月 2023(2)交换指令)交换指令XCHGoo指令格式:指令格式:指令格式:指令格式:XCHGXCHGOPRD1OPRD1,OPRD2OPRD2oo功能:将功能:将功能:将功能:将OPRD1OPRD1与与与与OPRD2OPRD2进进行交行交行交行交换换。二者都是源操作数也都是目二者都是源操作数也都是目二者都是源操作数也都是目二者都是源操作
16、数也都是目的的的的操作数操作数操作数操作数。操作数可以是寄存器或内存数操作数可以是寄存器或内存数操作数可以是寄存器或内存数操作数可以是寄存器或内存数变变量量量量。【例例例例】MOV MOVEAXEAX,12345678H 12345678H ;EAXEAX12345678H12345678H MOV MOVEBXEBX,56781234H 56781234H ;EBXEBX56781234H56781234H XCHG XCHGEAXEAX,EBX EBX ;交交交交换换后,后,后,后,EAXEAX56781234H56781234H,EBXEBX12345678H12345678H XCHG
17、 R8 XCHG R8,100 100 ;R8R8寄存器内容与内存寄存器内容与内存寄存器内容与内存寄存器内容与内存100100号地址号地址号地址号地址 中中中中的的的的6464位数据交位数据交位数据交位数据交换换 注意:注意:注意:注意:不能在两个存不能在两个存不能在两个存不能在两个存储单储单元之元之元之元之间间直接交直接交直接交直接交换换数据;数据;数据;数据;段寄存器和立即数不能作段寄存器和立即数不能作段寄存器和立即数不能作段寄存器和立即数不能作为为操作数操作数操作数操作数。第第第第7 7页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返
18、回815 二月 2023(3)查表转换指令)查表转换指令XLAToo指令格式:指令格式:指令格式:指令格式:XLAT XLAT oo功能:完成一个字功能:完成一个字功能:完成一个字功能:完成一个字节节的的的的查查表表表表转换转换,将数据段中偏移地址,将数据段中偏移地址,将数据段中偏移地址,将数据段中偏移地址为为BX/ebx/RBXBX/ebx/RBX与与与与ALAL寄存器之和寄存器之和寄存器之和寄存器之和的的的的存存存存储单储单元元元元的的的的内容送入内容送入内容送入内容送入ALAL寄存寄存寄存寄存器,即:器,即:器,即:器,即:BX+ALBX+ALALAL。例:若例:若例:若例:若(BX)=
19、0100H,(AL)=05H,(BX)=0100H,(AL)=05H,执执行行行行XLATXLAT指令后指令后指令后指令后,(AL)=2CH,(AL)=2CH。注意:注意:注意:注意:由于由于由于由于ALAL只有只有只有只有8 8位位位位,所以表所以表所以表所以表的的的的长长度不能超度不能超度不能超度不能超过过256256字字字字节节。第第第第8 8页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回915 二月 2023(4)字节交换指令)字节交换指令BSWAP 是是是是8048680486新增新增新增新增的的的的指令指令指令指令oo指令格
20、式:指令格式:指令格式:指令格式:BSWAPBSWAP reg32reg32oo功能:将功能:将功能:将功能:将3232位通用寄存器中位通用寄存器中位通用寄存器中位通用寄存器中的的的的双字以字双字以字双字以字双字以字节为单节为单位位位位进进行行行行高、低字高、低字高、低字高、低字节节交交交交换换,改,改,改,改变变双字数据双字数据双字数据双字数据的的的的存放方式存放方式存放方式存放方式。oo指令指令指令指令执执行行行行时时,字字字字节节0(b0b7)0(b0b7)与字与字与字与字节节3(b24b31)3(b24b31)交交交交换换,字字字字节节1(b8b15)1(b8b15)与字与字与字与字节
21、节2(b16b23)2(b16b23)交交交交换换。字节字节3 字节字节2 字节字节1 字节字节0第第第第9 9页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1015 二月 2023堆栈操作指令堆栈操作指令指指指指 令令令令 书书书书 写写写写 格格格格 式式式式指指指指 令令令令 功功功功 能能能能PUSH REG/MEM/SEGPUSH REG/MEM/SEGPUSH REG/MEM/SEGPUSH REG/MEM/SEGPOP REG/MEM/SEGPOP REG/MEM/SEGPOP REG/MEM/SEGPOP REG/MEM
22、/SEGPUSH IMM PUSH IMM PUSH IMM PUSH IMM PUSHA PUSHA PUSHA PUSHA POPA POPA POPA POPA PUSHADPUSHADPUSHADPUSHADPOPAD POPAD POPAD POPAD 压入堆栈压入堆栈压入堆栈压入堆栈弹出堆栈弹出堆栈弹出堆栈弹出堆栈IMMIMMIMMIMM扩展为扩展为扩展为扩展为16/3216/3216/3216/32位位位位后进栈后进栈后进栈后进栈(286(286(286(286新增新增新增新增)8 8 8 8个个个个16161616位通用寄存器位通用寄存器位通用寄存器位通用寄存器进栈进栈进栈进栈
23、(286(286(286(286新增新增新增新增)8 8 8 8个个个个16161616位通用寄存器位通用寄存器位通用寄存器位通用寄存器出栈出栈出栈出栈(286(286(286(286新增新增新增新增)8 8 8 8个个个个32323232位通用寄存器位通用寄存器位通用寄存器位通用寄存器进栈进栈进栈进栈(386(386(386(386新增新增新增新增)8 8 8 8个个个个32323232位通用寄存器位通用寄存器位通用寄存器位通用寄存器出栈出栈出栈出栈(386(386(386(386新增新增新增新增)(1)PUSH/POP 堆栈是内存的一个数据区,是按照先进后出原则组织的一段内存区域,堆栈是内
24、存的一个数据区,是按照先进后出原则组织的一段内存区域,段寄存器段寄存器SS指向段基址,堆栈指针指向段基址,堆栈指针SP始终指向堆栈的顶部。始终指向堆栈的顶部。PUSH REG16/REG32/REG64/MEM16/MEM32/MEM64 POP REG16/REG32/REG64/MEM16/MEM32/MEM64第第第第1010页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1115 二月 2023ooPUSHPUSH指令:指令:指令:指令:SP-NSP-NSPSP;16/32/6416/32/64位位位位的的的的源操作数源操作数源操
25、作数源操作数压压入堆入堆入堆入堆栈栈 源操作数可以是通用寄存器、段寄存器和存源操作数可以是通用寄存器、段寄存器和存源操作数可以是通用寄存器、段寄存器和存源操作数可以是通用寄存器、段寄存器和存储储器,器,器,器,NN为为源操作数源操作数源操作数源操作数的的的的字字字字节节数数数数2 2或或或或4 4或或或或8 8。ooPOPPOP指令:指令:指令:指令:从从从从栈顶弹栈顶弹出操作数到目出操作数到目出操作数到目出操作数到目标标操作数;操作数;操作数;操作数;SP+NSP+NSPSP 目目目目标标操作数可以是通用寄存器、段寄存器(操作数可以是通用寄存器、段寄存器(操作数可以是通用寄存器、段寄存器(操
26、作数可以是通用寄存器、段寄存器(CSCS除外)或存除外)或存除外)或存除外)或存储储器器器器。PUSH/POP指令指令第第第第1111页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1215 二月 2023(2)PUSH/PUSHA/POPA 是是是是8028680286新增新增新增新增的的的的指令指令指令指令oo指令格式:指令格式:指令格式:指令格式:PUSHPUSH imm16 imm16 PUSHA PUSHA POPA POPAoo指令功能:指令功能:指令功能:指令功能:PUSH imm16PUSH imm16将字立即数将字立即数
27、将字立即数将字立即数压压入堆入堆入堆入堆栈栈,如果,如果,如果,如果给给出出出出的的的的数数数数 不不不不够够1616位,它会在自位,它会在自位,它会在自位,它会在自动扩动扩展后展后展后展后压压入堆入堆入堆入堆栈栈;PUSHAPUSHA指令将所有通用寄存器指令将所有通用寄存器指令将所有通用寄存器指令将所有通用寄存器的的的的内容内容内容内容压压入堆入堆入堆入堆栈栈,压压 入入入入的的的的顺顺序是:序是:序是:序是:AXAX、CXCX、DXDX、BXBX、SPSP、BPBP、SISI、DIDI;POPAPOPA指令将指令将指令将指令将栈顶栈顶内容内容内容内容弹弹出,出,出,出,顺顺序与序与序与序与
28、压压入入入入的的的的相反相反相反相反(弹弹出出出出 到到到到SPSP的的的的值值被被被被丢丢弃弃弃弃)。第第第第1212页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1315 二月 2023(3)PUSHAD/POPAD386新增指令新增指令 oPUSHAD指令将所有指令将所有扩展通用寄存器展通用寄存器的的内内容容压入堆入堆栈,压入入的的顺序是:序是:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI;oPOPAD弹出出的的顺序与序与PUSHAD压入入的的相相反(反(弹出到出到ESP的的值被被丢弃)弃)。注意:注意:在在64
29、64位模式下,入位模式下,入栈和出和出栈指令指令的的操作操作数只能是数只能是1616位或位或6464位,不支持位,不支持3232位操作数位操作数。第第第第1313页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1415 二月 2023地址传送指令地址传送指令(1 1)有效地址)有效地址)有效地址)有效地址传传送指令送指令送指令送指令LEALEAoo指令格式:指令格式:指令格式:指令格式:LEA REG16/REG32/REG64LEA REG16/REG32/REG64,MEM MEM 功能:将源操作数在当前段内功能:将源操作数在当前段内
30、功能:将源操作数在当前段内功能:将源操作数在当前段内的的的的有效地址(即地址偏移量)有效地址(即地址偏移量)有效地址(即地址偏移量)有效地址(即地址偏移量)传传送至目送至目送至目送至目标标操操操操作数作数作数作数。区区区区别别:MOVMOV指令指令指令指令传传送操作数送操作数送操作数送操作数的的的的内容,而内容,而内容,而内容,而LEALEA传传送送送送的的的的是操作数是操作数是操作数是操作数的的的的地址地址地址地址。MOVMOV DI DI,LISTS LISTS ;将;将;将;将变变量量量量LISTSLISTS的的的的内容内容内容内容传传送至送至送至送至DIDI,DI=1234HDI=12
31、34HLEALEA DX DX,LISTS LISTS ;将;将;将;将变变量量量量LISTSLISTS的的的的偏移地址偏移地址偏移地址偏移地址传传送至送至送至送至DXDX,DX=2000HDX=2000HLEA AXLEA AX,3000H 3000H ;将;将;将;将3000H3000H单单元元元元的的的的偏移地址偏移地址偏移地址偏移地址传传送至送至送至送至AXAX,AX=3000HAX=3000HLEA ESILEA ESI,LISTS LISTS ;将;将;将;将变变量量量量LISTSLISTS的的的的3232位偏移地址位偏移地址位偏移地址位偏移地址传传送至送至送至送至ESIESI,E
32、SI=00002000HESI=00002000HLEA RDXLEA RDX,LISTS LISTS ;将;将;将;将变变量量量量LISTSLISTS的的的的6464位有效地址位有效地址位有效地址位有效地址传传送至送至送至送至RDXRDXLEA EDXLEA EDX,RAX RAX ;将;将;将;将RAXRAX的的的的6464位地址位地址位地址位地址的的的的低低低低3232位(即位(即位(即位(即EAXEAX的的的的值值)传传送至送至送至送至EDXEDXLEA SILEA SI,RAX RAX ;将;将;将;将RAXRAX的的的的6464位地址位地址位地址位地址的的的的低低低低1616位(即
33、位(即位(即位(即AXAX的的的的值值)传传送至送至送至送至SISI第第第第1414页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1515 二月 2023(2)地址指针传送指令)地址指针传送指令LDS和和LESoo指令格式:指令格式:指令格式:指令格式:LDSLDSREG16/REG32REG16/REG32,MEM MEM LES LESREG16/REG32REG16/REG32,MEMMEMoo指令功能:都是将由源操作数偏移地址决定指令功能:都是将由源操作数偏移地址决定指令功能:都是将由源操作数偏移地址决定指令功能:都是将由源操作
34、数偏移地址决定的的的的双字(或三字)双字(或三字)双字(或三字)双字(或三字)单单元中元中元中元中的第的第的第的第一一一一个(或前两个)字个(或前两个)字个(或前两个)字个(或前两个)字的的的的内容送入指令指定内容送入指令指定内容送入指令指定内容送入指令指定的的的的1616位(或位(或位(或位(或3232位)通用寄存器,位)通用寄存器,位)通用寄存器,位)通用寄存器,第第第第二个(或二个(或二个(或二个(或第第第第三个)字三个)字三个)字三个)字的的的的内容内容内容内容传传送送送送给给段寄存器段寄存器段寄存器段寄存器DSDS或或或或ESES,这这两个段寄存器是两个段寄存器是两个段寄存器是两个段
35、寄存器是隐隐含含含含的的的的目目目目的的的的操作数操作数操作数操作数。TAB1 DF 123456789ABCH TAB1 DF 123456789ABCH;定;定;定;定义义TAB1TAB1为为6 6个字个字个字个字节节数据数据数据数据TAB2 DD 56781234H TAB2 DD 56781234H ;定;定;定;定义义TAB2TAB2为为4 4个字个字个字个字节节数据数据数据数据LDS BXLDS BX,TAB1 TAB1 ;将;将;将;将9ABCH9ABCHBXBX,5678H5678HDSDSLES SILES SI,TAB2 TAB2 ;将;将;将;将1234H1234HSIS
36、I,5678H5678HESESLES EAXLES EAX,TAB1 TAB1 ;将;将;将;将56789ABCH56789ABCHEAXEAX,1234H1234HESES只适用于只适用于只适用于只适用于1616位或位或位或位或3232位地址模式,在位地址模式,在位地址模式,在位地址模式,在6464位地址下不能使用位地址下不能使用位地址下不能使用位地址下不能使用 第第第第1515页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1615 二月 20233)地址指针传送指令)地址指针传送指令LFS、LGS和和LSSo386新增指令新增指令
37、o指令功能:与上述指令功能:与上述的的LDS功能基本一功能基本一样,不同,不同的的是将是将第第二个(或二个(或第第三个)字三个)字的的内容分内容分别传送送给隐含含的的段寄存器段寄存器FS、GS和和SS。注意:注意:在在16位模式下,偏移地址位模式下,偏移地址为16位,上述各位,上述各指令指令的的目目的的寄存器用寄存器用16位位的的;在;在32位保位保护模模式下,偏移地址式下,偏移地址为32位,上述各位,上述各传送指令送指令的的目目的的寄存器寄存器应该是是32位位的。的。但段寄存器但段寄存器总是是16位位的。的。第第第第1616页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及
38、及上上机机指指导导第第4章章返回返回1715 二月 2023标志位传送指令标志位传送指令(1 1)标标志寄存器志寄存器志寄存器志寄存器读读写指令写指令写指令写指令LAHF/SAHFLAHF/SAHFoo指令指令指令指令LAHFLAHF用于将用于将用于将用于将标标志寄存器志寄存器志寄存器志寄存器的的的的低字低字低字低字节节(含(含(含(含SFSF、ZFZF、AFAF、PFPF和和和和CFCF)读读出后出后出后出后传传送到送到送到送到AHAH寄存器寄存器寄存器寄存器。不影响不影响不影响不影响标标志位志位志位志位oo指令指令指令指令SAHFSAHF与与与与LAHFLAHF的的的的操作相反,它把寄存器
39、操作相反,它把寄存器操作相反,它把寄存器操作相反,它把寄存器AHAH中中中中的的的的内容写入内容写入内容写入内容写入标标志寄存器志寄存器志寄存器志寄存器的的的的低字低字低字低字节节,取代某些,取代某些,取代某些,取代某些标标志位(志位(志位(志位(SFSF、ZFZF、AFAF、PFPF和和和和CFCF)的的的的原来状原来状原来状原来状态态。指指指指 令令令令 书书书书 写写写写 格格格格 式式式式指指指指 令令令令 功功功功 能能能能LAHFLAHFLAHFLAHFSAHFSAHFSAHFSAHFPUSHFPUSHFPUSHFPUSHFPOPFPOPFPOPFPOPFPUSHFDPUSHFDP
40、USHFDPUSHFDPOPFDPOPFDPOPFDPOPFD将将将将FLAGFLAGFLAGFLAG低字节装入低字节装入低字节装入低字节装入AHAHAHAH寄存器寄存器寄存器寄存器将将将将AHAHAHAH内容装入内容装入内容装入内容装入FlagFlagFlagFlag低字节低字节低字节低字节将将将将FLAGFLAGFLAGFLAG内容压入堆栈内容压入堆栈内容压入堆栈内容压入堆栈从堆栈弹出从堆栈弹出从堆栈弹出从堆栈弹出FlagFlagFlagFlag内容内容内容内容将将将将EFLAGEFLAGEFLAGEFLAG内容压入堆栈内容压入堆栈内容压入堆栈内容压入堆栈(386(386(386(386新
41、增新增新增新增)从堆栈弹出从堆栈弹出从堆栈弹出从堆栈弹出32323232位位位位到到到到EFLAG(386EFLAG(386EFLAG(386EFLAG(386新增新增新增新增)第第第第1717页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1815 二月 20232)标志寄存器入栈出栈指令)标志寄存器入栈出栈指令ooPUSHFPUSHF指令指令指令指令的的的的执执行行行行过过程同程同程同程同PUSHPUSH指令,只是将指令,只是将指令,只是将指令,只是将标标志寄志寄志寄志寄存器存器存器存器FLAGFLAG的的的的内容内容内容内容压压入堆
42、入堆入堆入堆栈栈。ooPOPFPOPF则则将当前将当前将当前将当前栈顶栈顶的的的的一个字一个字一个字一个字传传送送送送给标给标志寄存器,同志寄存器,同志寄存器,同志寄存器,同时时修改修改修改修改SP+2SP+2SPSP。ooPUSHFDPUSHFD/POPFDPOPFD指令是指令是指令是指令是386386新增新增新增新增的的的的指令,功能与指令,功能与指令,功能与指令,功能与PUSHF/POPFPUSHF/POPF基本相同,但操作基本相同,但操作基本相同,但操作基本相同,但操作为为EFLAGEFLAG与堆与堆与堆与堆栈栈之之之之间间的的的的传传送送送送。ooPUSHFQPUSHFQ指令和指令和
43、指令和指令和POPFQPOPFQ指令是指令是指令是指令是6464位指令,用于位指令,用于位指令,用于位指令,用于RFLAGSRFLAGS与堆与堆与堆与堆栈栈之之之之间间的的的的6464位位位位传传送,只能用于送,只能用于送,只能用于送,只能用于6464位地位地位地位地址方式址方式址方式址方式。第第第第1818页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回1915 二月 2023输入输入/输出数据传送指令输出数据传送指令指指 令令 书书 写写 格格 式式指指 令令 功功 能能IN IN 累加累加器器,端口,端口OUT OUT 端口,累加端
44、口,累加器器INSB/INSW/INSDINSB/INSW/INSDOUTSB/OUTSW/OUTSDOUTSB/OUTSW/OUTSD输入字节或字输入字节或字输出字节或字输出字节或字串输入串输入(286/386(286/386新增新增)串输出串输出(286/386(286/386新增新增)(1)简单输入输出指令)简单输入输出指令IN/OUT指令格式:指令格式:IN AL/AX,IMM8/DX OUT IMM8/DX,AL/AX 指令功能:专门用于在指令功能:专门用于在AL或或AX寄存器与寄存器与I/O端口之间传送数据端口之间传送数据 例:例:IN AX,30H ;从端口;从端口30H输入输入
45、16位数到位数到AXMOV DX,300HIN AL,DX ;从端口;从端口300H输入输入8位数到位数到ALOUT 60H,AL ;将;将8位数从位数从AL输出到端口输出到端口60HOUT DX,AX ;将;将16位数从位数从AX输出到输出到DX指定的端口指定的端口在在80386以后的以后的32位位CPU中,还可以通过中,还可以通过EAX对对I/O端口进行双字数据操作。端口进行双字数据操作。在在64位系统中,使用方法和位系统中,使用方法和16位位/32位方式下相同。位方式下相同。第第第第1919页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返
46、回返回2015 二月 2023(2)字符串输入指令)字符串输入指令INSoo指令形式:指令形式:指令形式:指令形式:INSB:从:从DX指定指定的的端口端口输入一个入一个字字节到到ES:DI指定指定的的 内存内存单元中去元中去。INSW:从:从DX指定指定的的端口端口输入一个入一个字字到到ES:DI指定指定的的内内 存存单元中去元中去。INSD:从:从DX指定指定的的端口端口输入入双字双字到到ES:DI指定指定的的内存内存 单元中去元中去。注意:注意:注意:注意:n若方向若方向标志志DF=0,则DI中中的的地址自地址自动+1(输入字入字节)或或+2(输入字入字)或或+4(输入双字入双字);n若
47、方向若方向标志志DF=1,则DI中中的的地址自地址自动-1(输入字入字节)或或-2(输入字入字)或或-4(输入双字入双字)。n在在64位方式下目位方式下目标地址偏移量由地址偏移量由EDI或或RDI指明,指令功指明,指令功能和用法不能和用法不变 第第第第2020页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回2115 二月 2023(3)字符串输出指令字符串输出指令OUTSooOUTSBOUTSB:从:从:从:从DS:SIDS:SI指定指定指定指定的的的的内存内存内存内存单单元元元元输输出出出出 一个字一个字一个字一个字节节到到到到DXDX
48、指定指定指定指定的的的的端口中去端口中去端口中去端口中去。ooOUTSWOUTSW:从:从:从:从DS:SIDS:SI指定指定指定指定的的的的内存内存内存内存单单元址元址元址元址 输输出一个字到出一个字到出一个字到出一个字到DXDX指定指定指定指定的的的的端口中去端口中去端口中去端口中去。ooOUTSDOUTSD:从:从:从:从DS:SIDS:SI指定指定指定指定的的的的内存内存内存内存单单元元元元输输出出出出 双字到双字到双字到双字到DXDX指定指定指定指定的的的的端口中去端口中去端口中去端口中去。方向方向方向方向标标志志志志DFDF的的的的用法同用法同用法同用法同INSINS指令指令指令指
49、令第第第第2121页页页页/共共共共9090页页页页汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第4章章返回返回2215 二月 20234.3 算术运算类指令算术运算类指令oo加法加法oo减法减法oo乘法乘法除扩展指令外,指令的执行除扩展指令外,指令的执行结果都影响状态标志位结果都影响状态标志位 指指指指 令令令令 名名名名 称称称称指指指指 令令令令 书书书书 写写写写 格格格格 式式式式状状状状 态态态态 标标标标 志志志志 位位位位OF SF ZF AF PF CFOF SF ZF AF PF CFOF SF ZF AF PF CFOF SF ZF AF PF CF加加加加法法
50、法法加法加法加法加法带进带进带进带进位位位位加法加法加法加法加加加加1 1 1 1交换加交换加交换加交换加 (486)(486)(486)(486)ADD reg/mem,reg/mem/immADD reg/mem,reg/mem/immADD reg/mem,reg/mem/immADD reg/mem,reg/mem/immADC reg/mem,reg/mem/immADC reg/mem,reg/mem/immADC reg/mem,reg/mem/immADC reg/mem,reg/mem/immINC reg/memINC reg/memINC reg/memINC reg/m