Assembly Base con NASM

Sommario seconda parte



Capitolo 11:
Il codice macchina e il codice Assembly

11.1 Caratteristiche generali delle istruzioni per le CPU 80x86
11.1.1 Combinazioni permesse tra gli operandi di una istruzione
11.1.2 Operando di riferimento

11.2 Codice macchina delle istruzioni 8086
11.2.1 Struttura generale di una istruzione in codice macchina
11.2.2 Campo Prefisso (Instruction Prefix e Segment Override Prefix)
11.2.3 Campo Opcode
11.2.4 Campo mod_reg_r/m
11.2.5 Campo Displacement
11.2.6 Campo Immediate

11.3 Esempi pratici di codici macchina per la CPU 8086
11.3.1 Addizione tra operandi di tipo Reg/Mem
11.3.2 Addizione tra sorgente Imm e destinazione Reg/Mem
11.3.3 Operandi di tipo SegReg
11.3.4 Espressioni costanti

11.4 Codice macchina delle istruzioni 80386
11.4.1 Confronto tra "modo 16 bit" e "modo 32 bit"
11.4.2 Il campo S.I.B. - Scale Index Base
11.4.3 Esempi pratici per il S.I.B. byte

11.5 Il codice Assembly
11.6 Ottimizzare il codice macchina con NASM


Capitolo 12:
Struttura di un programma Assembly

12.1 Struttura generale di un segmento di programma
12.1.1 L'attributo "Allineamento"
12.1.2 L'attributo "Combinazione"
12.1.3 L'attributo "Dimensione"
12.1.4 L'attributo "Classe"
12.1.5 Considerazioni finali sui segmenti di programma

12.2 Definizione dei dati statici elementari dell'Assembly
12.2.1 Formati IEEE per i numeri in floating point
12.2.2 Base predefinita per i valori immediati

12.3 Definizione dei dati statici complessi dell'Assembly
12.3.1 Dati strutturati di tipo STRUC
12.3.2 Dati strutturati di tipo UNION
12.3.3 Dati strutturati di tipo RECORD
12.3.4 Le direttive TIMES e %REP %ENDREP
12.3.5 Creazione diretta di vettori monodimensionali e multidimensionali
12.3.6 Caratteri e stringhe alfanumeriche

12.4 Creazione di un Data Segment
12.5 Creazione di uno Stack Segment
12.6 Creazione di un Code Segment
12.6.1 L'entry point
12.6.2 NASM doesn't ASSUME!
12.6.3 Inizializzazione dei registri di segmento per i dati
12.6.4 Inizializzazione della coppia SS:SP
12.6.5 Terminazione di un programma DOS
12.6.6 Struttura generale di un Code Segment

12.7 Schema generale di un programma Assembly
12.7.1 Costanti simboliche
12.7.2 Commenti nel linguaggio Assembly
12.7.3 La direttiva CPU
12.7.4 Modello di un programma Assembly


Capitolo 13:
Assembling & Linking

13.1 Programma Assembly di esempio
13.2 Installazione dell'assembler
13.3 Scrittura del codice sorgente
13.4 La fase di assemblaggio (assembling)
13.4.1 Il Listing File
13.4.2 Assemblaggio di DATASEGM
13.4.3 Assemblaggio di CODESEGM
13.4.4 Assemblaggio di STACKSEGM
13.4.5 La Symbol Table

13.5 La fase di linkaggio (linking)
13.5.1 Linking di DATASEGM
13.5.2 Linking di CODESEGM
13.5.3 Linking di STACKSEGM
13.5.4 Il Map File

13.6 Struttura di un file EXE
13.7 Esecuzione di un file EXE
13.7.1 L'environment segment
13.7.2 Il program segment
13.7.3 Caricamento in memoria di EXETEST.EXE
13.7.4 Esecuzione di EXETEST.EXE

13.8 Le direttive ALIGN e ALIGNB
13.8.1 Allineamento in memoria dei dati statici
13.8.2 Allineamento in memoria dei dati temporanei
13.8.3 Allineamento in memoria delle istruzioni

13.9 Calcolo delle componenti Seg e Offset con NASM
13.10 Programmi eseguibili in formato COM
13.10.1 Struttura di un eseguibile in formato COM
13.10.2 La direttiva ORG
13.10.3 Modello di programma Assembly in formato COM
13.10.4 Esempio di programma Assembly in formato COM
13.10.5 Assembling & Linking di un programma in formato COM
13.10.6 Caricamento in memoria ed esecuzione di un programma in formato COM
13.10.7 Generazione diretta di eseguibili in formato COM


Capitolo 14:
Disassembling

14.1 Analisi di un file eseguibile con un editor binario
14.2 Analisi di un file eseguibile con un debugger
14.2.1 Esecuzione a passo singolo di un programma
14.2.2 I breakpoint

14.3 Il debugger del DOS
14.3.1 I comandi di DEBUG

14.4 Il disassemblatore NDISASM
14.5 Conclusioni


Capitolo 15:
Libreria di procedure per l'I/O

15.1 Le librerie EXELIB e COMLIB
15.1.1 Parametri in ingresso e valore in uscita di una procedura
15.1.2 Descrizione delle procedure presenti nella libreria
15.1.3 Ulteriori dettagli sulle librerie EXELIB e COMLIB

15.2 Collegamento di una libreria ad un programma Assembly
15.2.1 Le direttive GLOBAL e EXTERN
15.2.2 Assembling & linking di un programma diviso in due o più moduli

15.3 L'istruzione CALL
15.4 Programma di prova EXETEST2.ASM per la libreria EXELIB
15.4.1 Assembling & Linking del programma EXETEST2
15.4.2 Esecuzione del programma EXETEST2.EXE

15.5 Programma di prova COMTEST2.ASM per la libreria COMLIB
15.5.1 Assembling & Linking del programma COMTEST2.ASM
15.5.2 Esecuzione del programma COMTEST2.COM

15.6 I batch file
15.7 Esercitazioni consigliate
15.7.1 Visualizzazione dell'indirizzo logico di una informazione
15.7.2 Gestione di un dato attraverso un puntatore NEAR o FAR
15.7.3 Accesso allo stack con SS:BP
15.7.4 Visualizzazione dei codici ASCII contenuti in una stringa
15.7.5 Analisi del risultato di una operazione attraverso i flags
15.7.6 Visualizzazione del campo CommandLineParameters del PSP di un programma


Capitolo 16:
Istruzioni per il trasferimento dati

16.1 L'istruzione MOV
16.1.1 Il dato si trova in DATASEGM
16.1.2 Il dato si trova in CODESEGM
16.1.3 Il dato si trova in STACKSEGM
16.1.4 Trasferimento dati da Imm a Reg/Mem
16.1.5 Indirizzamenti a 32 bit
16.1.6 Effetti provocati da MOV sugli operandi e sui flags

16.2 Le istruzioni MOVZX e MOVSX
16.2.1 L'istruzione MOVZX
16.2.2 L'istruzione MOVSX
16.2.3 Inserimento diretto di codici macchina in un programma Assembly
16.2.4 Effetti provocati da MOVZX e MOVSX sugli operandi e sui flags

16.3 Le istruzioni PUSH e POP
16.3.1 L'istruzione PUSH
16.3.2 Istruzione PUSH con operando di tipo Imm
16.3.3 L'istruzione POP
16.3.4 Effetti provocati da PUSH e POP sugli operandi e sui flags

16.4 Le istruzioni PUSHA, PUSHAD, POPA, POPAD
16.4.1 Le istruzioni PUSHA e PUSHAD
16.4.2 Le istruzioni POPA e POPAD
16.4.3 Effetti provocati da PUSHA, PUSHAD, POPA e POPAD, sugli operandi e sui flags

16.5 Le istruzioni PUSHF, PUSHFD, POPF, POPFD
16.5.1 Le istruzioni PUSHF e PUSHFD
16.5.2 Le istruzioni POPF e POPFD
16.5.3 Effetti provocati da PUSHF, PUSHFD, POPF e POPFD, sugli operandi e sui flags

16.6 Le istruzioni LAHF e SAHF
16.6.1 L'istruzione LAHF
16.6.2 L'istruzione SAHF
16.6.3 Effetti provocati da LAHF e SAHF sugli operandi e sui flags

16.7 L'istruzione LEA
16.7.1 Effective address a 16 bit e registro DEST a 16 bit
16.7.2 Effective address a 16 bit e registro DEST a 32 bit
16.7.3 Effective address a 32 bit e registro DEST a 16 bit
16.7.4 Effective address a 32 bit e registro DEST a 32 bit
16.7.5 Effetti provocati da LEA sugli operandi e sui flags

16.8 Le istruzioni LDS, LES, LFS, LGS, LSS
16.8.1 Operando DEST di tipo Reg16
16.8.2 Operando DEST di tipo Reg32
16.8.3 Effetti provocati da LDS, LES, LFS, LGS e LSS, sugli operandi e sui flags

16.9 Le istruzioni IN e OUT
16.9.1 L'istruzione IN
16.9.2 L'istruzione OUT
16.9.3 Effetti provocati da IN e OUT sugli operandi e sui flags

16.10 L'istruzione XCHG
16.10.1 Uso di XCHG con operandi di ampiezza arbitraria
16.10.2 Effetti provocati da XCHG sugli operandi e sui flags


Capitolo 17:
Istruzioni aritmetiche

17.1 L'istruzione ADD
17.1.1 Istruzione ADD con operando sorgente di tipo Imm
17.1.2 Effetti provocati da ADD sugli operandi e sui flags

17.2 L'istruzione ADC
17.2.1 Somma tra numeri interi senza segno di ampiezza arbitraria
17.2.2 Somma tra numeri interi con segno di ampiezza arbitraria
17.2.3 Effetti provocati da ADC sugli operandi e sui flags

17.3 L'istruzione SUB
17.3.1 Effetti provocati da SUB sugli operandi e sui flags

17.4 L'istruzione SBB
17.4.1 Sottrazione tra numeri interi senza segno di ampiezza arbitraria
17.4.2 Sottrazione tra numeri interi con segno di ampiezza arbitraria
17.4.3 Effetti provocati da SBB sugli operandi e sui flags

17.5 Le istruzioni INC e DEC
17.5.1 Effetti provocati da INC e DEC sugli operandi e sui flags

17.6 L'istruzione NEG
17.6.1 Complemento a 1 e complemento a 2
17.6.2 Negazione di numeri interi con segno di ampiezza arbitraria
17.6.3 Effetti provocati da NEG sugli operandi e sui flags

17.7 L'istruzione CMP
17.7.1 Comparazione tra numeri interi senza segno
17.7.2 Comparazione tra numeri interi con segno
17.7.3 Istruzioni per il controllo del flusso
17.7.4 Comparazione tra numeri interi di ampiezza arbitraria
17.7.5 Effetti provocati da CMP sugli operandi e sui flags

17.8 Le istruzioni CBW, CWD, CWDE e CDQ
17.8.1 L'istruzione CBW
17.8.2 Le istruzioni CWD e CWDE
17.8.3 L'istruzione CDQ
17.8.4 Estensione di numeri interi con segno di ampiezza arbitraria
17.8.5 Effetti provocati da CBW, CWD, CWDE e CDQ, sugli operandi e sui flags

17.9 L'istruzione MUL
17.9.1 Moltiplicazione tra numeri interi senza segno a 8 bit
17.9.2 Moltiplicazione tra numeri interi senza segno a 16 bit
17.9.3 Moltiplicazione tra numeri interi senza segno a 32 bit
17.9.4 Moltiplicazione tra numeri interi senza segno di ampiezza arbitraria
17.9.5 Effetti provocati da MUL sugli operandi e sui flags

17.10 L'istruzione IMUL
17.10.1 Istruzione IMUL con un solo operando esplicito
17.10.2 Istruzione IMUL con due operandi espliciti
17.10.3 Istruzione IMUL con tre operandi espliciti
17.10.4 Moltiplicazione tra numeri interi con segno di ampiezza arbitraria
17.10.5 Effetti provocati da IMUL sugli operandi e sui flags

17.11 L'istruzione DIV
17.11.1 Divisione tra numeri interi senza segno a 8 bit
17.11.2 Divisione tra numeri interi senza segno a 16 bit
17.11.3 Divisione tra numeri interi senza segno a 32 bit
17.11.4 Divisione tra numeri interi senza segno di ampiezza arbitraria
17.11.5 Effetti provocati da DIV sugli operandi e sui flags

17.12 L'istruzione IDIV
17.12.1 Divisione tra numeri interi con segno a 8 bit
17.12.2 Divisione tra numeri interi con segno a 16 bit
17.12.3 Divisione tra numeri interi con segno a 32 bit
17.12.4 Divisione tra numeri interi con segno di ampiezza arbitraria
17.12.5 Effetti provocati da IDIV sugli operandi e sui flags


Capitolo 18:
Istruzioni aritmetiche per i numeri BCD

18.1 Rappresentazione dei numeri interi decimali in formato BCD
18.1.1 Rappresentazione dei numeri interi decimali in formato Unpacked BCD
18.1.2 Rappresentazione dei numeri interi decimali in formato Packed BCD
18.1.3 Rappresentazione dei numeri interi decimali in formato Packed BCD standard

18.2 L'istruzione AAA
18.2.1 Somma tra numeri Unpacked BCD di ampiezza arbitraria
18.2.2 Effetti provocati da AAA sugli operandi e sui flags

18.3 L'istruzione AAS
18.3.1 Differenza tra numeri Unpacked BCD di ampiezza arbitraria
18.3.2 Effetti provocati da AAS sugli operandi e sui flags

18.4 L'istruzione AAM
18.4.1 Codifica binaria di numeri interi non decimali
18.4.2 Prodotto tra numeri Unpacked BCD di ampiezza arbitraria
18.4.3 Effetti provocati da AAM sugli operandi e sui flags

18.5 L'istruzione AAD
18.5.1 Codifica binaria di numeri interi non decimali
18.5.2 Divisione tra numeri Unpacked BCD di ampiezza arbitraria
18.5.3 Effetti provocati da AAD sugli operandi e sui flags

18.6 L'istruzione DAA
18.6.1 Somma tra numeri Packed BCD di ampiezza arbitraria
18.6.2 Effetti provocati da DAA sugli operandi e sui flags

18.7 L'istruzione DAS
18.7.1 Differenza tra numeri Packed BCD di ampiezza arbitraria
18.7.2 Effetti provocati da DAS sugli operandi e sui flags

18.8 Conversione da Packed BCD a Unpacked BCD e viceversa
18.8.1 Conversione da Packed BCD a Unpacked BCD
18.8.2 Conversione da Unpacked BCD a Packed BCD

18.9 Conversione da BCD a binario e viceversa
18.9.1 Conversione da BCD a binario
18.9.2 Conversione da binario a BCD


Capitolo 19:
Istruzioni logiche

19.1 L'istruzione AND
19.1.1 Istruzione AND con maschere di bit
19.1.2 AND logico tra operandi di ampiezza arbitraria
19.1.3 Effetti provocati da AND sugli operandi e sui flags

19.2 L'istruzione TEST
19.2.1 Istruzione TEST con maschere di bit
19.2.2 TEST tra operandi di ampiezza arbitraria
19.2.3 Effetti provocati da TEST sugli operandi e sui flags

19.3 L'istruzione NOT
19.3.1 Complemento a 1 di un operando di ampiezza arbitraria
19.3.2 Complemento a 2 di un operando di ampiezza arbitraria
19.3.3 Effetti provocati da NOT sugli operandi e sui flags

19.4 L'istruzione OR
19.4.1 Istruzione OR con maschere di bit
19.4.2 OR logico inclusivo tra operandi di ampiezza arbitraria
19.4.3 Effetti provocati da OR sugli operandi e sui flags

19.5 L'istruzione XOR
19.5.1 OR logico esclusivo tra operandi di ampiezza arbitraria
19.5.2 Effetti provocati da XOR sugli operandi e sui flags

19.6 L'istruzione SHL
19.6.1 Significato matematico dell'istruzione SHL
19.6.2 Shift logical left su operandi di ampiezza arbitraria
19.6.3 Effetti provocati da SHL sugli operandi e sui flags

19.7 L'istruzione SAL
19.7.1 Significato matematico dell'istruzione SAL
19.7.2 Shift arithmetic left su operandi di ampiezza arbitraria
19.7.3 Effetti provocati da SAL sugli operandi e sui flags

19.8 L'istruzione SHR
19.8.1 Significato matematico dell'istruzione SHR
19.8.2 Shift logical right su operandi di ampiezza arbitraria
19.8.3 Effetti provocati da SHR sugli operandi e sui flags

19.9 L'istruzione SAR
19.9.1 Significato matematico dell'istruzione SAR
19.9.2 Shift arithmetic right su operandi di ampiezza arbitraria
19.9.3 Effetti provocati da SAR sugli operandi e sui flags

19.10 Le istruzioni SHLD e SHRD
19.10.1 L'istruzione SHLD
19.10.2 L'istruzione SHRD
19.10.3 Effetti provocati da SHLD e SHRD, sugli operandi e sui flags

19.11 L'istruzione ROL
19.11.1 ROL su operandi di ampiezza arbitraria
19.11.2 Effetti provocati da ROL sugli operandi e sui flags

19.12 L'istruzione RCL
19.12.1 RCL su operandi di ampiezza arbitraria
19.12.2 Effetti provocati da RCL sugli operandi e sui flags

19.13 L'istruzione ROR
19.13.1 ROR su operandi di ampiezza arbitraria
19.13.2 Effetti provocati da ROR sugli operandi e sui flags

19.14 L'istruzione RCR
19.14.1 RCR su operandi di ampiezza arbitraria
19.14.2 Effetti provocati da RCR sugli operandi e sui flags

19.15 Istruzioni logiche nei linguaggi di alto livello
19.16 Applicazioni pratiche delle istruzioni logiche


Capitolo 20:
Istruzioni per il trasferimento del controllo

20.1 Nozioni generali sulle istruzioni di salto
20.1.1 Salto diretto intrasegmento
20.1.2 Salto indiretto intrasegmento
20.1.3 Salto diretto intersegmento
20.1.4 Salto indiretto intersegmento

20.2 Gli operatori di distanza
20.3 L'istruzione JMP
20.3.1 Casi particolari
20.3.2 Il salto incondizionato nei linguaggi di alto livello
20.3.3 Effetti provocati da JMP sugli operandi e sui flags

20.4 Le istruzioni Jcond
20.4.1 Istruzioni Jcond riferite esplicitamente ai flags
20.4.2 Istruzioni Jcond riferite implicitamente ai flags
20.4.3 Esempi pratici per le istruzioni Jcond
20.4.4 Reverse logic (logica inversa)
20.4.5 Effetti provocati dalle istruzioni Jcond, sugli operandi e sui flags

20.5 Le istruzioni JCXZ e JECXZ
20.5.1 Effetti provocati dalle istruzioni JCXZ e JECXZ, sugli operandi e sui flags

20.6 Le istruzioni LOOP, LOOPZ/LOOPE, LOOPNZ/LOOPNE
20.6.1 L'istruzione LOOP
20.6.2 L'istruzione LOOPZ/LOOPE
20.6.3 L'istruzione LOOPNZ/LOOPNE
20.6.4 Considerazioni generali sulle istruzioni LOOP, LOOPZ/LOOPE, LOOPNZ/LOOPNE
20.6.5 Effetti provocati dalle istruzioni LOOP, LOOPZ/LOOPE e LOOPNZ/LOOPNE, sugli operandi e sui flags

20.7 Le istruzioni CALL e RET
20.7.1 I sottoprogrammi
20.7.2 L'istruzione CALL
20.7.3 L'istruzione RET
20.7.4 Esempio pratico per le istruzioni CALL e RET
20.7.5 Effetti provocati dalle istruzioni CALL e RET sugli operandi e sui flags

20.8 Le istruzioni INT, INTO e IRET
20.8.1 L'istruzione INT
20.8.2 L'istruzione INTO
20.8.3 L'istruzione IRET
20.8.4 Esempio pratico sulla gestione delle ISR
20.8.5 Effetti provocati dalle istruzioni INT, INTO e IRET, sugli operandi e sui flags

20.9 Allineamento degli indirizzi di destinazione dei salti


Capitolo 21:
Istruzioni per il controllo della CPU

21.1 L'istruzione CLC
21.1.1 Effetti provocati dall'istruzione CLC sugli operandi e sui flags

21.2 L'istruzione STC
21.2.1 Effetti provocati dall'istruzione STC sugli operandi e sui flags

21.3 L'istruzione CMC
21.3.1 Effetti provocati dall'istruzione CMC sugli operandi e sui flags

21.4 L'istruzione CLD
21.4.1 Effetti provocati dall'istruzione CLD sugli operandi e sui flags

21.5 L'istruzione STD
21.5.1 Effetti provocati dall'istruzione STD sugli operandi e sui flags

21.6 L'istruzione CLI
21.6.1 Effetti provocati dall'istruzione CLI sugli operandi e sui flags

21.7 L'istruzione STI
21.7.1 Effetti provocati dall'istruzione STI sugli operandi e sui flags

21.8 Gestione del Trap Flag (TF)

21.9 L'istruzione WAIT
21.9.1 Effetti provocati dall'istruzione WAIT/FWAIT sugli operandi e sui flags


Capitolo 22:
Istruzioni per la manipolazione delle stringhe

22.1 Stringhe ASCII generiche, stringhe C e stringhe Pascal
22.1.1 Convenzione C per le stringhe ASCII
22.1.2 Convenzione Pascal per le stringhe ASCII
22.1.3 Gestione delle stringhe C e Pascal in Assembly

22.2 Le istruzioni STOS, STOSB, STOSW, STOSD
22.2.1 Forme implicite dell'istruzione STOS
22.2.2 Effetti provocati da STOS, STOSB, STOSW e STOSD, sugli operandi e sui flags

22.3 Le istruzioni LODS, LODSB, LODSW, LODSD
22.3.1 Forme implicite dell'istruzione LODS
22.3.2 Effetti provocati da LODS, LODSB, LODSW e LODSD, sugli operandi e sui flags

22.4 Le istruzioni MOVS, MOVSB, MOVSW, MOVSD
22.4.1 Forme implicite dell'istruzione MOVS
22.4.2 Effetti provocati da MOVS, MOVSB, MOVSW e MOVSD, sugli operandi e sui flags

22.5 Le istruzioni SCAS, SCASB, SCASW, SCASD
22.5.1 Forme implicite dell'istruzione SCAS
22.5.2 Effetti provocati da SCAS, SCASB, SCASW e SCASD, sugli operandi e sui flags

22.6 Le istruzioni CMPS, CMPSB, CMPSW, CMPSD
22.6.1 Forme implicite dell'istruzione CMPS
22.6.2 Effetti provocati da CMPS, CMPSB, CMPSW e CMPSD, sugli operandi e sui flags

22.7 Le istruzioni INS, INSB, INSW, INSD
22.7.1 Forme implicite dell'istruzione INS
22.7.2 Effetti provocati da INS, INSB, INSW e INSD, sugli operandi e sui flags

22.8 Le istruzioni OUTS, OUTSB, OUTSW, OUTSD
22.8.1 Forme implicite dell'istruzione OUTS
22.8.2 Effetti provocati da OUTS, OUTSB, OUTSW e OUTSD, sugli operandi e sui flags

22.9 I prefissi REP, REPE/REPZ, REPNE/REPNZ
22.9.1 Il prefisso REP
22.9.2 Il prefisso REPE/REPZ
22.9.3 Il prefisso REPNE/REPNZ

22.10 Istruzioni per le stringhe e registri di segmento


Capitolo 23:
Istruzioni varie

23.1 L'istruzione BOUND
23.1.1 Uso pratico dell'istruzione BOUND
23.1.2 Effetti provocati da BOUND sugli operandi e sui flags

23.2 Le istruzioni BSF e BSR
23.2.1 L'istruzione BSF
23.2.2 L'istruzione BSR
23.2.3 Effetti provocati da BSF e BSR, sugli operandi e sui flags

23.3 L'istruzione BSWAP
23.3.1 Effetti provocati da BSWAP sugli operandi e sui flags

23.4 Le istruzioni BT, BTC, BTR, BTS
23.4.1 L'istruzione BT
23.4.2 L'istruzione BTC
23.4.3 L'istruzione BTR
23.4.4 L'istruzione BTS
23.4.5 Effetti provocati da BT, BTC, BTR e BTS, sugli operandi e sui flags

23.5 L'istruzione CMPXCHG
23.5.1 Effetti provocati da CMPXCHG sugli operandi e sui flags

23.6 L'istruzione CMPXCHG8B
23.6.1 Effetti provocati da CMPXCHG8B sugli operandi e sui flags

23.7 L'istruzione CPUID
23.7.1 Effetti provocati da CPUID sugli operandi e sui flags

23.8 L'istruzione NOP
23.8.1 Effetti provocati da NOP sugli operandi e sui flags

23.9 L'istruzione SETcond
23.9.1 Istruzioni SETcond riferite esplicitamente ai flags
23.9.2 Istruzioni SETcond riferite implicitamente ai flags
23.9.3 Effetti provocati da SETcond sugli operandi e sui flags

23.10 L'istruzione XADD
23.10.1 Effetti provocati da XADD sugli operandi e sui flags

23.11 Le istruzioni XLAT, XLATB
23.11.1 Effetti provocati da XLAT/XLATB sugli operandi e sui flags

23.12 Il prefisso LOCK



Appendici


Appendice A: Tabella dei codici ASCII estesi
Appendice B: Tabella dei codici di scansione della tastiera
Appendice C: Tabella di conversione tra le principali basi numeriche
Appendice D: Header di un file EXE per DOS
Appendice E: Il Program Segment Prefix
Appendice F: Tabella delle istruzioni della CPU (RM)
Appendice G: Vettori di interruzione in modalità reale