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 smile ) 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


This topic: Architetture2/MZ > SecondoEsercizioAssembler2001
Topic revision: r5 - 2001-05-10 - AndreaSterbini
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback