Jeg vet ikke om noen omfattende liste, men her ( 32-bit / 64-bit) er en veldig nyttig referanse som inneholder mesteparten av informasjonen du vil ha.
Legg merke til beskrivelsen av operandkolonnene:
Hvis en operand er satt opp med kursiv, er den er en implisitt operand, som ikke brukes eksplisitt. Hvis en operand er satt opp med fet skrift, blir den endret av instruksjonen.
Så for eksempel i 8-biters versjonen av MUL
instruksjonen ( AX = AL * r / m8 ), viser de operandene som AX , AL og r / m8. Vær oppmerksom på at de to første operandene er kursiv fordi de er implisitte, og den første operanden er fet skrift fordi den er modifisert.
Dessverre dekker dette ikke alle tilfeller av registerendring. For eksempel viser MOVSD
bare m32 og m32 for operandene og nevner ikke det faktum at ESI
og EDI
blir referert og justert med 4.
Det dekker likevel nesten alle tilfeller, inkludert: AAA
, AAD
, AAM
, AAS
, CBW , CDQ
, CLTS
, CMPXCHG
, CMPXCHG8B
, CPUID kode>, CWD
, CWDE
, DAA
, DAS
, DIV
, ENTER
, IDIV
, IMUL
, IN
, LAHF
, LEAVE
, LGDT
, LIDT
, LLDT
, LMSW
, LOOP
, LOOPcc
, MONITOR
, MUL
, OUT
, POPA
, PUSHA
, RDMSR
, RDPMC
, RDTSC
, RDTSCP
, REP
, SAHF
, SALC
, SGDT
, WRMSR
, og mange av instruksjonene for flyt og SSE, samt et par instruksjoner som ikke har mnemonics.
Det dekker ikke (helt) noen andre, inkludert g: CMPS
, INS
, LODS
, MASKMOVDQU
, MASKMOVQ
, MOVS
, OUTS
, SCAS
, STOS
. Endringer i stabelpekeren er generelt ikke nevnt.
Hvis du bryr deg om segmentregistre, er det også LDS
, LES
, LFS
, LGS
, LSS
, og segmentprefikset. Flere andre instruksjoner kan imidlertid implisitt endre segmentregistrene. I tillegg gir instruksjoner som får tilgang til minne implisitt tilgang til hurtigbufret informasjon fra segmentregistrene.
Merk: Ovennevnte er ikke omfattende lister!
Til slutt må du les Intel Manuals for å få den offisielle dokumentasjonen, men dette diagrammet bør likevel spare deg for mye tid.