Sunteți pe pagina 1din 1

Esercizi LC2.

1) Test dei comandi di base:


- impostare un registro a 0 (AND)
- caricare un valore numerico fisso (<=15) in un registro (ADD)
- spostare il valore di un registro in un secondo registro (ADD)
- sommare due registri e salvare il contenuto in un terzo registro (ADD)
- acquisire un carattere da tastiera (IN), incrementare il valore ASCII di 1 (ADD) e visualizzare a video il
nuovo carattere (OUT)

2) Variabili:
- [Direct Addressing Mode] creare 3 variabili (FILL) impostando un valore iniziale diverso da 0, sommarne
due e salvare il contenuto nella terza (LD, ST)
- creare una stringa (STRINGZ) preinizializzata a "Hello World!" e stamparla a video (LEA, PUTS)
- [Indirect Addressing Mode] creare una variabile chiamata VAR1 ed impostare il valore 1, salvare il suo
indirizzo di memoria nella variabile ADDRESS_VAR1 (LEA), sostituire il valore di VAR1 con il numero 2
utilizzando l'indirizzo di memoria salvato in ADDRESS_VAR1 (STI), caricare il valore di VAR1 in un registro
usando ADDRESS_VAR1 (LDI) e controllare il valore
- [Base+Index] creare un vettore di 4 elementi (BLKW), riempirlo "manualmente" con la stringa "ABC"
(ricordarsi il terminatore di stringa) utilizzando l'istruzione appropriata Base+Index (STR), stampare a vide la
stringa

3) Condizioni:
3.1) Acquisire due caratteri da tastiera, salvarli in due variabili, testare se sono uguali, se sì stampare a
video la stringa "Uguali" altrimenti stampare la stringa "Non uguali" (BRZ).
3.2) Acquisire due caratteri da tastiera e stampare a video chi è il maggiore (BRP, BRN).

4) Cicli:
4.1) Stampare a video le prime 10 lettere dell'alfabeto.
4.2) Acquisire un stringa di 5 elementi da tastiera e stamparla a video quando completamente acquisita
(STR, PUTS).
4.3) Determinare la lunghezza di una stringa (LDR).
4.4) Eseguire la divisione tra due numeri impostati a priori in due variabili. Salvare il risultato ed il resto in
altre due variabili.
4.5) Creare un vettore di 5 elementi (valori [3,4,0,1,2]) e salvare la somma degli elementi nella variabile
TOT.

5) Sottoprogrammi:
5.1) Implementare il sottoprogramma SOTTRAZIONE che svolga la differenza tra due numeri salvati nei
registri R1 e R2. Il risultato dovrà essere salvato in R0 (JSR, RET, R0 = R1 - R2)
5.2) Costruire le 4 operazioni matematiche usando i sottoprogrammi e testarli. Decidere propriamente
input e output.
5.3) Costruire due sottoprogrammi per determinare il minimo e il massimo in un vettore di numeri >= 0
(INPUT R0=indirizzo di memoria del vettore, R1=numero di elementi del vettore, OUTPUT R2).
5.4) Data una stringa, costruire un sottoprogramma per convertire le lettere da minuscolo a maiuscolo.