Questa directory contiene una serie di esercizi in assembly per il microprocessore 8086. Gli esercizi esplorano vari aspetti della programmazione a basso livello, come la gestione della memoria e la manipolazione dei caratteri.
Scrivere un programma che stampa una serie di caratteri in modo da comporre il proprio nome.
Scrivere un programma che, dati in input due numeri, calcoli e stampi la loro somma.
Scrivere un programma che, data una lettera in input, stampi la lettera precedente e quella successiva.
Scrivere un programma che, data una stringa in memoria, la stampi sostituendo ogni lettera con quella aumentata di 2 posizioni nell'alfabeto.
Caricare in memoria il proprio cognome, a partire dalla locazione di memoria 0x0200h
.
Implementare un programma con Emu8086 che:
- Popoli le locazioni di memoria, a partire da un indirizzo
0xggmmh
, con i caratteri stampabili del codice ASCII (dovemm
è il mese di nascita egg
è il giorno di nascita). - Alla pressione di un tasto qualsiasi, stampi tutti i caratteri salvati, uno per riga.
Implementare un programma con Emu8086 che:
- Riceve in input parole fino a 10 caratteri.
- Per ogni lettera inserita, stampa accanto la corrispondente traslata di 13 posizioni (ad es. A → N), va a capo e accetta la successiva lettera.
Implementare un programma con Emu8086 che consenta di:
- Inserire una cifra da tastiera.
- Stampare il conto alla rovescia, a partire dal numero inserito fino a zero.
Eseguire e studiare il sorgente allegato. Modificarlo per:
- Scrivere il proprio nome nell'angolo in alto a sinistra in bianco su nero.
- Scrivere il proprio cognome nell'angolo in basso a destra, distanziando ogni carattere con uno spazio e utilizzando un colore diverso per ogni lettera.
- Scrivere la propria data di nascita al centro dello schermo in multicolor.
Creare un programma che utilizzi i colori per stampare i caratteri ASCII su schermo, variando il colore per ogni carattere.
Implementare un programma con Emu8086 che consenta di:
- Inserire una cifra da tastiera.
- Stampare il conto alla rovescia, a partire dal numero inserito fino a zero, utilizzando un colore diverso per ogni numero.
Dati una larghezza W
e un'altezza H
salvate in opportune variabili:
- Disegnare una cornice di dimensione
W x H
caratteri. - Consentire di scegliere la posizione in cui disegnarla usando altre due variabili
X
eY
che indicano l'angolo superiore sinistro. - Utilizzare qualsiasi carattere per il disegno della cornice.
Data una cifra N
:
- Stampare, a capo, la cifra precedente se
N
è minore di 5. - Stampare, a capo, la cifra successiva se
N
è maggiore o uguale a 5.
Dato un numero N
compreso tra 0 e 9:
- Stampare una riga di
N
asterischi. - Utilizzare colori diversi per ogni asterisco.
Data una lettera C
e una cifra N
inserite da tastiera:
- Stampare gli
N
caratteri successivi alla letteraC
.
Dato un carattere minuscolo in input:
- Stampare la corrispondente lettera maiuscola (qualsiasi altro carattere viene ignorato).
- Il programma continua a effettuare conversioni e si interrompe solo alla pressione della barra spaziatrice.
- Stampare un saluto finale prima di terminare.
Leggere due caratteri da tastiera e stampare S
se sono successivi sulla tavola ASCII, N
altrimenti.
Dato un carattere in input:
- Stampare
C
se è una cifra,L
se è una lettera,A
altrimenti. - Continuare a richiedere l'input fino all'inserimento del carattere
\
.
Date due lettere inserite da tastiera:
- Verificare se sono in ordine lessicografico:
- Stampare
N
in caso negativo. - Stampare l'elenco delle lettere comprese in caso positivo.
- Stampare
- Il programma termina quando le due lettere coincidono, stampando il messaggio "...bye".
Data una lettera da tastiera:
- Stampare le successive 4 lettere alternando maiuscole e minuscole.
Aggiungere la gestione delle maiuscole e completare l'esercizio omonimo (in allegato) correggendo il codice e ricorrendo il più possibile all'uso di stringhe e macro.
Richiedere l'immisione di una stringa da tastiera. Codificare il testo immesso con ROT13, badando a rimuovere gli spazi e punteggiature, trasformando tutto in minuscolo e senza alterare le cifre.
Richiedere l'immissione di una stringa con caratteri qualsiasi; a capo, stampare la stringa in caratteri maiuscoli
Data una stringa inserita contenente due cifre convertirla in un numero unsigned di due cifre
Stampa di un numero unsigned a due cifre (hard-coded)
Esercizio di calcolo viaggi fattibili
Creazione calcolatrice che accetta operandi mono-cifra interi e restituisce il risultato
partendo dall’esempio1, estendere la logica del programma in modo che supporti numeri fino a 255 ancora meglio sarebbe fino a 65535
Partendo dall’esempio2, estendere la logica del programma in modo che supporti numeri a 8bit e stampi numeri fino a 255 (per i più ardimentosi numeri fino a 65535).
Implementare una procedura che stampa a schermo il numero a più cifre passato attraverso AX
Utilizzo di una procedura per estrarre il numero decimale unisgned a 16 bit massimo da una stringa e salvarlo in AX
Esercizio di calcolo viaggi fattibili (Es 27) con input implementato
Stampare la stringa richiesta in input invertita usando lo stack
Stampare la stringa richiesta in input invertita usando un buffer
Convertire una stringa in decimale tramite una procedura str2int Convertire un numero decimale in stringa stampabile con la procedura int2str
Implementare un programma che genera un numero casuale usando procedure e stack