Assembly Base con NASM

Sommario prima parte



Capitolo 1:
Strumenti necessari per la sezione Assembly Base

1.1 Il linguaggio Assembly
1.2 Ambiente operativo
1.3 Strumenti di sviluppo per l'Assembly
1.4 Assembler disponibili


Capitolo 2:
Introduzione

2.1 Il concetto di algoritmo
2.2 L'architettura di Von Neumann
2.3 Codifica dell'informazione


Capitolo 3:
La matematica del computer

3.1 Un computer immaginario che lavora in base 10
3.2 Numeri interi senza segno
3.2.1 Addizione tra numeri interi senza segno
3.2.2 Sottrazione tra numeri interi senza segno
3.2.3 Moltiplicazione tra numeri interi senza segno
3.2.4 Caso particolare per la moltiplicazione tra numeri interi senza segno
3.2.5 Divisione tra numeri interi senza segno
3.2.6 Caso particolare per la divisione tra numeri interi senza segno

3.3 Numeri interi con segno (positivi e negativi)
3.3.1 Complemento a 10
3.3.2 Addizione e sottrazione tra numeri interi con segno
3.3.3 Moltiplicazione tra numeri interi con segno
3.3.4 Caso particolare per la moltiplicazione tra numeri interi con segno
3.3.5 Divisione tra numeri interi con segno
3.3.6 Caso particolare per la divisione tra numeri interi con segno

3.4 Estensione del segno
3.5 Equivalenza tra le quattro operazioni
3.6 Numeri reali


Capitolo 4:
Il sistema di numerazione binario

4.1 Sistema di numerazione posizionale in base b = 6
4.2 Sistema di numerazione posizionale in base b = 2
4.3 Numeri interi senza segno
4.3.1 Addizione tra numeri interi senza segno
4.3.2 Sottrazione tra numeri interi senza segno
4.3.3 Moltiplicazione tra numeri interi senza segno
4.3.4 Divisione tra numeri interi senza segno

4.4 Numeri interi con segno
4.4.1 Complemento a 1 e complemento a 2
4.4.2 Addizione e sottrazione tra numeri interi con segno
4.4.3 Moltiplicazione tra numeri interi con segno
4.4.4 Divisione tra numeri interi con segno

4.5 Estensione del segno
4.6 Proprietà generali delle codifiche numeriche a n cifre in base b
4.7 Rappresentazione dei numeri in altre basi
4.7.1 Sistema di numerazione posizionale in base b = 8
4.7.2 Sistema di numerazione posizionale in base b = 16
4.7.3 Conversioni numeriche che coinvolgono la base 10


Capitolo 5:
La logica del computer

5.1 Segnali analogici e segnali logici
5.2 I dispositivi logici
5.3 L'algebra di Boole
5.4 Concetti fondamentali dell'algebra di Boole
5.5 Interpretazione dei concetti fondamentali
5.5.1 OR logico
5.5.2 AND logico
5.5.3 NOT logico
5.5.4 Uguaglianza logica ( = )

5.6 Postulati fondamentali dell'algebra di Boole
5.7 Dimostrazione dei postulati fondamentali
5.8 Teoremi dell'algebra di Boole
5.9 Altre porte logiche importanti
5.9.1 Porta OR Esclusivo
5.9.2 Porta NOR Esclusivo
5.9.3 Porta NOR
5.9.4 Porta NAND
5.9.5 Porte logiche derivate dalla porta NAND

5.10 Le famiglie logiche
5.10.1 La famiglia DL (Diode Logic)
5.10.2 La famiglia TTL (Transistor Transistor Logic)
5.10.3 La famiglia CMOS


Capitolo 6:
Reti combinatorie per funzioni matematiche

6.1 Circuiti Multiplexer e Demultiplexer
6.2 Comparazione tra numeri binari
6.3 Addizione tra numeri binari
6.4 Sottrazione tra numeri binari
6.5 Circuiti complementatori
6.6 Moltiplicazione tra numeri binari
6.7 Divisione tra numeri binari
6.8 Scorrimento dei bit di un numero binario
6.8.1 Moltiplicazione di un numero intero binario per una potenza intera del 2
6.8.2 Divisione di un numero intero binario per una potenza intera del 2
6.8.3 Verifica del risultato attraverso i flags
6.8.4 Esempio di shifter a 4 bit

6.9 Rotazione dei bit di un numero binario


Capitolo 7:
L'architettura generale del computer

7.1 La macchina di Von Neumann
7.2 Il programma
7.3 Il microprocessore
7.4 La struttura generale di un computer
7.4.1 Memoria RAM
7.4.2 Memoria ROM
7.4.3 Interfaccia tra la CPU e le periferiche

7.5 Un esempio reale: la CPU Intel 8080
7.5.1 Le interruzioni hardware
7.5.2 L'accesso diretto alla memoria RAM
7.5.3 Il segnale di clock


Capitolo 8:
Struttura hardware della memoria

8.1 Configurazione delle memorie di lavoro
8.1.1 Accesso in memoria con Data Bus a 8 bit
8.1.2 Accesso in memoria con Data Bus a 16 bit
8.1.3 Accesso in memoria con Data Bus a 32 bit

8.2 Le reti sequenziali
8.2.1 Il flip-flop set/reset
8.2.2 Il flip-flop data
8.2.3 Struttura circuitale di un FF

8.3 Registri di memoria
8.3.1 Registri a scorrimento
8.3.2 Registri paralleli

8.4 Memorie RAM
8.4.1 Memorie RAM statiche (SRAM)
8.4.2 Memorie RAM dinamiche (DRAM)
8.4.3 le nuove memorie Double Data Rate (DDRX)

8.5 Memorie ROM


Capitolo 9:
La memoria dal punto di vista del programmatore

9.1 La modalità di indirizzamento reale 8086
9.2 La modalità di indirizzamento protetto
9.3 Sistemi operativi per la modalità reale: il DOS
9.3.1 Vettori di interruzione - da 00000000h a 000003FFh
9.3.2 Area dati ROM-BIOS - da 00000400h a 000004FFh
9.3.3 Area comunicazioni del DOS - da 00000500h a 000006FFh
9.3.4 Kernel del DOS, Device Drivers, etc - da 00000700h a ????????h
9.3.5 Disponibile per i programmi DOS - da ????????h a 000A0000h
9.3.6 Buffer video - modo grafico - da 000A0000h a 000AFFFFh
9.3.7 Buffer video - modo testo in b/n - da 000B0000h a 000B7FFFh
9.3.8 Buffer video - modo testo a colori - da 000B8000h a 000BFFFFh
9.3.9 Video ROM BIOS - da 000C0000h a 000CFFFFh
9.3.10 Disponibile per altri BIOS e buffers - da 000D0000h a 000EFFFFh
9.3.11 PC ROM BIOS - da 000F0000h a 000FFFFFh

9.4 Organizzazione della memoria sotto DOS
9.5 Indirizzamento di un programma DOS
9.6 Supporto del DOS sui sistemi operativi per la modalità protetta


Capitolo 10:
Architettura interna della CPU

10.1 Struttura generale di un programma
10.1.1 Il Data Segment di un programma
10.1.2 Lo Stack Segment di un programma
10.1.3 Segmento misto Data + Stack
10.1.4 Il Code Segment di un programma
10.1.5 Struttura a segmenti di un programma

10.2 Architettura generale della CPU
10.2.1 Execution Unit
10.2.2 Bus Interface Unit

10.3 Registri interni delle CPU a 16 bit
10.3.1 Associazioni predefinite tra registri puntatori e registri di segmento
10.3.2 Indirezione o deriferimento di un puntatore NEAR
10.3.3 Indirezione o deriferimento di un puntatore FAR
10.3.4 Flags Register

10.4 Registri interni delle CPU a 32 bit
10.5 Logica di controllo e temporizzazioni della CPU
10.6 Prefetch Queue, Cache Memory e Pipeline
10.6.1 La Prefetch Queue
10.6.2 La Cache Memory
10.6.3 La Pipeline



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