Secondo Progetto di Assembler - AA 2001
Gestione dell'input tramite Interrupt
Modificate il codice da voi realizzato per il
PrimoEsercizioAssembler2001 in modo che:
- sia definita un'area di memoria di nome buffer sufficiente a contenere 4 bytes
- all'inizio vi chieda (tramite syscall) una password di 4 caratteri che dovete inserire in un'altra zona di memoria di nome password
- se battete piu' di 4 caratteri dovete considerarne solo i primi 4
- dopo la fase che calcola e che stampa la matrice di Tartaglia e prima della fase che manipola le half-words
- cicla finche' nell'area di memoria buffer non appaiono (magicamente
) esattamente i 4 bytes della password (sara' l'interrupt-handler a metterceli)
- se la password e' giusta si procede alla manipolazione della seconda matrice ed alla sua stampa
Modificate il
trap.handler di Spim in modo che:
- sia abilitata la ricezione degli interrupts
- sia abilitata la generazione degli interrupt da tastiera
- in corrispondenza della pressione di un tasto:
- l'interrupt handler distingua che si tratta di un interrupt e non di una eccezione
- il carattere premuto sia inserito nella zona buffer in modo che buffer contenga sempre gli ultimi 4 caratteri battuti (nell'ordine)
Ricordatevi di settare l'opzione
memory-mapped-io nel pannello di controllo di Spim
Links utili:
Sul sito del
Dipartimento di Informatica Sistemistica e Comunicazione dell'Universitā di Milano e' disponibile una bellissima
esercitazione sul trap-handler di Spim e sulla
gestione dell'input-output tramite interrupts. Il materiale č gentilmente messo a disposizione dai docenti del corso: D. G. Sorrenti, S. Ruocco, U. Jocher.
--
AndreaSterbini - 07 May 2001