第 3 章 IA-32 指令系统
description
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