第 3 章 IA-32 指令系统

73
3.1 基基基基基基 3.1 基基基基基基 3.2 3.2 IA-32 IA-32 基基基基基 基基基基基 3.3 3.3 IA-32 IA-32 基基基基基基基基基基 基基基基基基基基基基 3.4 3.4 IA-32 IA-32 基基基基基 基基基基基 基基 基基 3 3 IA-32 IA-32 第第第第第第

description

第 3 章 IA-32 指令系统. 3.1 基本数据类型 3.2 IA-32 的指令格式 3.3 IA-32 指令的操作数寻址方式 3.4 IA-32 的通用指令. 退出. 3.1 基本数据类型. IA-32 结构的基本数据类型是字节、字、双字、四字和双四字,如图 3-1 所示。. 一个字节是 8 位,一个字是两个字节( 16 位),双字是 4 字节( 32 位),四字是 8 字节( 64 位),双四字是 16 字节( 128 位)。 3.1.1 字、双字、四字和双四字的对齐 - PowerPoint PPT Presentation

Transcript of 第 3 章 IA-32 指令系统

  • 3 IA-323.1 3.2 IA-323.3 IA-323.4 IA-32

  • 3.1 IA-323-1

  • 816432864161283.1.1 48

  • 3.1.2 1IA-3202102550655350232102641

  • 22128+12732 768+32 767231+2311263+26312IA-32IEEE754

  • 3.1.3 3-4IA-32Near32Far48Near32NearFar481632Far

  • 3.1.4 323.1.5 2321023214G

  • 3.2 IA-32labelmnemonicargument11argument22argument33 label mnemonic

  • 1argument12argument23argument3

  • 3.3 IA-323.3.1

  • 3.3.2 3.3.3 1

  • 2 81632 24823-9

  • 3.3.4 I/O655368I/OI/OI/O1632I/ODX8I/O256DXI/O

  • 3.4 IA-323.4.1

  • 1MOVMOVMOVDOPDSOPDDOPDSOPD81632

  • 2CMOVcc DOPDSOPDPentium PROEFLAGSCFSFZFOFSOPDDOPD

  • 31XCHGXCHGDOPDSOPDDOPDSOPD2BSWAPBSWAP DOPD320724318151623

  • 3XADDXADDDOPDSOPD

  • 4CMPXCHG CMPXCHGDOPDSOPDALAXEAXSOPDDOPDALAXEAX

  • 5CMPXCHG8B8CMPXCHG8BDOPD6464EDX:EAX64ECX:EBX64EDX:EAX8EDX:EAXECX:EBXEDXECX6432EAXEBX6432

  • 41PUSH DOPDSPESPSP-1SPAHSPSP-1SPALSP

  • 2POP DOPDSPSP+2SP3PUSHA/PUSHAD PUSHAPush All168086PUSHADPush All Double32

  • 4POPA/POPADPOPAPop All16POPADPop All Double3251INportALAXEAX2OUTALAXEAX

  • 61CWD/CDQ CWDAXDX32AX
  • 2CBW/CWDE CBWALAH16AL=80HFFHAHCWDEAXEAX1632AX
  • 3MOVSXMOVSX DOPDSOPDDOPDSOPD

  • 4MOVZXMOVZXDOPDSOPDDOPDSOPD

  • 3.4.2 1 1ADD DOPDSOPDDOPDDOPD+SOPD2ADCAdd with CarryADC DOPDSOPDCDOPD

  • 21SUBSUB DOPDSOPDDOPDSOPDDOPD2SBBSubtract with BorrowSBBDOPDSOPDSUBCF

  • 31MULMUL SOPDALAXALAH8AXDX2IMULMUL

  • 41DIVAXAHALDX:AX8AL16AX8AH16DX2IDIVInteger divisionDIV

  • 51INC12DEC16NEG7CMP

  • 3.4.3 1DAADecimal Adjust for AdditionAL2DASDecimal Adjust for SubtractionDAAAL

  • 3AAAUnpacked BCD[ASCll] Adjust for AdditionASCIIAL4AASUnpacked BCD[ASCII] Adjust for SubtractionASCIIAAAALAL

  • 5AAMUnpacked BCD[ASCII] Adjust for MultiplyASCIIAXAXAXAL6AADUnpacked BCD[ASCII] Adjust for Division AX

  • 3.4.4 1AND1AND1102TESTANDTEST

  • 2OR11103XOR10104NOT

  • 3.4.5 1SALSHLSARSHRSAL DOPDOPD2SHL DOPDOPD2SAR DOPDOPD2SHR DOPDOPD2

  • 80861CLCLIA-3232CL8031

  • 21SHLDSHLD DOPDSOPDOPD316328CL1312SHRD

  • 3ROLRotate LeftRORPorate RightRCLRorate through CF LeftRCRRotate through CF RightROL DOPDOPD28CL131CFCF

  • 3.4.6 1BTBTSBTRBTCBT DOPDSOPD0

  • 2BSFBSRBSF DOPDSOPDSOPD1632BSF0116320

  • 3SETccSETcc DOPD810

  • 3.4.7 1JMPJMP DOPD

  • CS nearEIP128+127

  • 2JccJcc LabelLabel

  • 3CXECXCXECXCX0+127-128

  • 1LOOPLOOPCXECX1CXECX0IP+162LOOPZLQOPELOOPZLOOPECX1CX0ZF1IP+3LOOPNZLOOPNECX1CX0ZF0IP+

  • 41CALLCALL NearCS Far far

  • 2RETRETRET OPDCALLCALL

  • RET NearCS Far farCALL

  • 3IRETIRETIRETDCALL

  • 8086 8086 IRET

  • 4INTINTOINT nn02558INTO4EFLAGSOFOF1

  • 51BOUNDBOUNDOPD1.OPD2

  • 2ENTERENTER OPD1OPD2031

  • 3.4.8 1MOVSMove StringMOVS/MOVSB /MOVS/MOVSW /MOVS/MOVSD /SIESIMOVSBMOVSWMOVSDDIEDI

  • 2CMPSCompare StringCMPS/CMPSB/CMPS/CMPSW/CMPS/CMPSD/SIESIDIEDI-

  • 3SCASScan StringSCAS/SCASB/SCAS/SCASW/SCAS/SCASD/ALAXEAXALAXEAXDIEDI

  • 4LODSLoad StringLODS/LODSB/LODS/LODSW/LODS/LODSD/SIESIALAXEAXSIESI

  • 5STOSStore StringSTOS/STOSB/STOS/STOSW/STOS/STOSD/ALAXEAXDIEDIDIEDI

  • 6INS/INSB/INSW/INSDINS m8DXINS m16DXINS m32DXINSBINSWINSD

  • I/O065535DXES:DIES:EDI1632ESI/O8I/O1632I/ODXES:EDI

  • 7OUTSB/OUTSW/OUTSDOUTS DXm8OUTS DXm16OUTS DXm32OUTSBOUTSWOUTSD

  • I/ODS:DIDS:EDI1632DSI/O065535DX

  • 3.4.9 EFLAGS3.4.10 far[]48323216/16DSESSSFSGS3216

  • 3.4.11 1LEALEA r16mLEA r32m

  • 2NOP3UD24XLAT/XLATBALALAL5CPUID