Architettura client-server e modelli applicativi

✓Descrivere il modello client-server distinguendo i ruoli di client e server come processi, non come macchine fisiche
✓Illustrare l’evoluzione da architetture single-tier a multi-tier, spiegando i vantaggi della separazione dei livelli
✓Spiegare cosa sono i microservizi e come comunicano tramite API REST
✓Confrontare architettura monolitica e a microservizi, identificando vantaggi e limiti di ciascuna

Il livello di applicazione nello stack TCP/IP

✓Collocare il livello di applicazione nello stack TCP/IP e confrontarlo con il modello ISO/OSI
✓Elencare i compiti principali del livello applicativo e i servizi che offre alle applicazioni utente
✓Distinguere protocolli basati su TCP da quelli basati su UDP, motivando la scelta in base alle esigenze del servizio
✓Riconoscere il ruolo della crittografia a livello applicativo per garantire riservatezza e autenticazione

Ambiente di simulazione EMU8086

✓ Conoscere l’ambiente EMU8086 e le sue funzionalità di simulazione e debug
✓ Distinguere i modelli di memoria .COM e .EXE e scegliere quello appropriato
✓ Strutturare un programma Assembly con direttive standard (4 segmenti) o semplificate
✓ Dichiarare variabili e costanti nel Data Segment usando DB, DW, DD, EQU
✓ Implementare le tre strutture fondamentali (sequenza, selezione, ciclo) in Assembly 8086

L’ISA (Istruction Set Architecture) dell’8086

✓ Conoscere la classificazione dell’ISA 8086 e le principali categorie di istruzioni
✓ Usare correttamente le istruzioni aritmetiche MOV, ADD, SUB, MUL, DIV e comprendere il complemento a 2
✓ Comprendere le istruzioni logiche, di shift/rotazione e la loro applicazione a maschere di bit
✓ Implementare strutture di controllo (if/else, cicli) usando CMP, salti condizionati e LOOP
✓ Capire il meccanismo degli interrupt e come la CPU gestisce l’I/O tramite INT

Assembly 8086 metodi di indirizzamento

✓ Comprendere la struttura di un’istruzione Assembly x86: label, opcode, operandi
✓ Distinguere i tre tipi fondamentali di indirizzamento: immediato, diretto e indiretto
✓ Analizzare le varianti dell’indirizzamento indiretto: tramite registro, con displacement, con base e indice
✓ Calcolare l’indirizzo effettivo con la formula: base address + index + displacement
✓ Scegliere il metodo di indirizzamento appropriato in base al contesto di programmazione

Organizzazione della memoria e pinout

✓ Comprendere il meccanismo di segmentazione della memoria dell’8086
✓ Calcolare l’indirizzo fisico a partire da un indirizzo logico base:offset
✓ Distinguere i quattro tipi di segmento e il loro ruolo
✓ Identificare i pin principali della CPU 8086 e la loro funzione

Introduzione al microprocessore 8086

✓ Descrivere l’organizzazione interna di una CPU
✓ Comprendere la suddivisione funzionale del microprocessore 8086
✓ Classificare e utilizzare correttamente i registri
✓ Collegare struttura hardware ed esecuzione delle istruzioni Assembly

Algoritmi, Programmi e Classificazione dei Linguaggi

✓ Distinguere algoritmo e programma
✓ Classificare i linguaggi di programmazione per livello di astrazione
✓ Comprendere le differenze tra linguaggi di alto e basso livello
✓ Collegare il concetto di linguaggio all’architettura hardware

Compilazione, Linking e Traduzione

✓ Descrivere le fasi di traduzione di un programma
✓ Distinguere compilatore, assemblatore e linker
✓ Comprendere la differenza tra linguaggi compilati e interpretati
✓ Spiegare il concetto di file oggetto ed eseguibile

Hardware, Software e Codice Macchina

✓ Comprendere la differenza tra hardware e software
✓ Spiegare il ruolo del codice macchina nell’esecuzione dei programmi
✓ Descrivere il rapporto tra linguaggi di programmazione e CPU
✓ Interpretare il concetto di istruzione binaria