Assembly Base con MASM

Sommario terza parte



Capitolo 24:
Operatori, direttive e macro

24.1 Gli operatori per la fase di assemblaggio
24.1.1 Operatori aritmetici
24.1.2 Operatori logici
24.1.3 Operatori di scorrimento dei bit
24.1.4 Operatori relazionali
24.1.5 Ordine di precedenza degli operatori

24.2 Gli operatori per la fase di esecuzione
24.3 Le direttive
24.3.1 Le direttive condizionali per la fase di assemblaggio
24.3.2 Le direttive condizionali per la fase di esecuzione
24.3.3 La direttiva LABEL

24.4 Le macro
24.4.1 La direttiva EQU
24.4.2 La direttiva MACRO
24.4.3 Le macro predefinite di MASM

24.5 Analogie tra macro e sottoprogrammi


Capitolo 25:
I sottoprogrammi

25.1 Analogie tra sottoprogrammi e funzioni matematiche
25.2 La struttura generale di una procedura Assembly
25.3 Procedure e trasferimento del controllo
25.3.1 Indirizzo in memoria di una procedura
25.3.2 Chiamata diretta intrasegmento
25.3.3 Chiamata indiretta intrasegmento
25.3.4 Chiamata diretta intersegmento
25.3.5 Chiamata indiretta intersegmento

25.4 Considerazioni generali sulle procedure
25.5 Passaggio di argomenti alle procedure
25.5.1 Passaggio degli argomenti per valore e per indirizzo
25.5.2 Convenzione C per il passaggio di argomenti ai sottoprogrammi
25.5.3 Convenzione Pascal per il passaggio di argomenti ai sottoprogrammi

25.6 Convenzioni per le variabili locali dei sottoprogrammi
25.7 Gestione degli argomenti e delle variabili locali con EQU
25.8 L'indirizzo di una variabile locale
25.9 Convenzioni per i valori di ritorno dei sottoprogrammi
25.10 Programmi Assembly vecchio stile
25.11 Esercitazioni consigliate


Capitolo 26:
La ricorsione

26.1 La ricorsione nei linguaggi di programmazione
26.2 La ricorsione in Assembly
26.3 Vantaggi e svantaggi delle procedure ricorsive
26.4 Le Torri di Hanoi


Capitolo 27:
I modelli di memoria

27.1 Convenzioni DOS per i programmi eseguibili
27.1.1 Convenzioni DOS per il formato EXE
27.1.2 Convenzioni DOS per il formato COM

27.2 Il modello di memoria TINY
27.2.1 Programma TINY in formato EXE
27.2.2 Programma TINY in formato COM

27.3 Il modello di memoria SMALL
27.4 Il modello di memoria MEDIUM
27.5 Il modello di memoria COMPACT
27.6 Il modello di memoria LARGE
27.7 Il modello di memoria HUGE
27.8 La direttiva GROUP


Capitolo 28:
Linking tra moduli Assembly

28.1 Programmi Assembly contenuti in un unico file
28.1.1 Eseguibili in formato COM

28.2 Programmi Assembly distribuiti su due o più file
28.2.1 Le direttive EXTRN e PUBLIC
28.2.2 Assembling di TESTMAIN.ASM e TESTLIB1.ASM
28.2.3 Linking di TESTMAIN.OBJ e TESTLIB1.OBJ

28.3 Programmi in formato COM distribuiti su due o più moduli
28.4 Caso generale
28.5 I file di inclusione (Include file)
28.5.1 Uso degli include file per l'ordinamento dei segmenti di programma


Capitolo 29:
Interfaccia con i linguaggi di alto livello

29.1 La direttiva .MODEL
29.1.1 Il parametro memory_model
29.1.2 Il parametro TINY
29.1.3 Il parametro SMALL
29.1.4 Il parametro MEDIUM
29.1.5 Il parametro COMPACT
29.1.6 Il parametro LARGE
29.1.7 Il parametro HUGE
29.1.8 Il parametro FLAT
29.1.9 Memory model override
29.1.10 Il parametro language
29.1.11 Language override
29.1.12 I parametri NEARSTACK e FARSTACK

29.2 Sintassi avanzata per le procedure
29.2.1 Riscrittura di TestProc con la sintassi avanzata

29.3 La direttiva INVOKE
29.4 L'operatore ADDR di MASM
29.5 Convenzioni per i segmenti di programma
29.5.1 Il segmento principale per i dati statici inizializzati
29.5.2 Il segmento principale per i dati statici non inizializzati
29.5.3 Il segmento principale per i dati statici costanti
29.5.4 Il segmento di stack per i dati dinamici
29.5.5 Il gruppo DGROUP
29.5.6 I segmenti aggiuntivi per i dati statici inizializzati
29.5.7 I segmenti aggiuntivi per i dati statici non inizializzati
29.5.8 Il segmento principale per il codice
29.5.9 I segmenti aggiuntivi per il codice
29.5.10 Considerazioni generali sulle convenzioni per i segmenti di programma

29.6 Variabili simboliche create dall'assembler
29.7 Esempi pratici
29.7.1 Modello TINY
29.7.2 Modello SMALL
29.7.3 Modello MEDIUM
29.7.4 Modello COMPACT
29.7.5 Modelli LARGE e HUGE
29.7.6 Modello FLAT

29.8 Programmi Assembly distribuiti su due o più file
29.9 Le istruzioni ENTER e LEAVE
29.10 Considerazioni finali


Capitolo 30:
Interfaccia tra C e Assembly

30.1 Tipi di dati del C
30.2 Convenzioni per i compilatori C
30.2.1 Segmenti di programma
30.2.2 Stack frame
30.2.3 Valori di ritorno

30.3 Le classi di memoria del C
30.4 Gestione degli indirizzamenti in C
30.5 Protocollo di comunicazione tra C e Assembly
30.6 Esempi pratici
30.6.1 Chiamate incrociate tra moduli C e moduli Assembly
30.6.2 Generazione dell'eseguibile
30.6.3 Riscrittura di ASMMOD1.ASM con l'uso delle caratteristiche avanzate di MASM
30.6.4 Ulteriori dettagli sul programma CMOD1.EXE
30.6.5 Programma CMOD1.EXE con modello LARGE
30.6.6 Funzioni che restituiscono strutture per valore
30.6.7 Interscambio di variabili di tipo Floating Point
30.6.8 Allineamento dei dati al BYTE e alla WORD

30.7 Argomenti dalla linea di comando
30.8 Assembly inline


Capitolo 31:
Interfaccia tra Pascal e Assembly

31.1 Tipi di dati del Pascal
31.2 Convenzioni per i compilatori Pascal
31.2.1 Segmenti di programma
31.2.2 Stack frame
31.2.3 Valori di ritorno

31.3 Le classi di memoria del Pascal
31.4 Gestione degli indirizzamenti in Pascal
31.5 Protocollo di comunicazione tra Pascal e Assembly
31.6 Esempi pratici
31.6.1 Generazione dell'eseguibile
31.6.2 Allineamento dei dati al BYTE e alla WORD

31.7 Assembly inline


Capitolo 32:
Interfaccia tra BASIC e Assembly

32.1 Tipi di dati del BASIC
32.2 Convenzioni per i compilatori BASIC
32.2.1 Segmenti di programma
32.2.2 Stack frame
32.2.3 Valori di ritorno

32.3 Le classi di memoria del BASIC
32.4 Gestione degli indirizzamenti in BASIC
32.5 Protocollo di comunicazione tra BASIC e Assembly
32.6 Esempi pratici
32.6.1 Generazione dell'eseguibile



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