00 02/11/2007 21:43
Re:
Max81rm, 11/2/2007 9:35 PM:

Guarda provo a rispondere ma non ne sono molto sicuro.

L'istruzione "OUT R3,31h" si riferisce al primo modo con cui abbiamo realizzato l'interfaccia di output, e cioè spezzando gli 8 bit dell'IOAB in due parti da 4 bit. In questo caso credo che i bit 7-4 identifichino il dispositivo, i bit 3-0 invece uno tra i 16 registri all'interno del dispositivo. Messa così allora l'istruzione invierebbe il dato contenuto nel registro R3 (di 32 bit) all'interno del registro di indirizzo 31h (31h sarebbe 00110001, quindi 0011 indicherebbe il dispositivo, 0001 il registro all'interno di quel dispositivo). Con quest'istruzione il dato verrebbe scritto in un colpo solo..
Invece con le istruzioni:

OUT #1,31h
OUT R3,30h

sempre se ho capito bene.. con la prima si memorizza il valore costante "1" nel registro selettore facente parte del dispositivo di indirizzo pari ai primi sette bit di 31h, cioè "0011000". L'"1" finale aggiuntivo serve per attivare SEL1 e abilitare la scrittura nel registro selettore. Una volta fatto questo, si passa a memorizzare il dato contenuto in R3 nel registro desiderato. L'indirizzo di dispositivo resta lo stesso, "0011000", ma stavolta si aggiunge "0" per abilitare la scrittura in uno dei 16 registri del dispositivo e non in quello selettore (e quindi 31h diventa 30h).
Non ti assicuro al 100% niente di quello che ho detto! :-)
In effetti mercoledì ero uscito da lezione con una gran confusione, ho riordinato un pò le idee ma credo di essermi perso qualcosa per strada. Anzi, prima ho provato a fare uno schema dell'interfaccia di output, mi sa che tra poco la posto per farmi correggere se ho sbagliato qualcosa...


Secondo me il tuo discorso non fa una piega... Mi pare che tu abbia proprio ragione..

Posta lo schema se vuoi, così gli diamo un'occhiata e vediamo se è come il mio.

Grazie

EDIT:
Max81rm, 11/2/2007 9:35 PM:

(31h sarebbe 00110001, quindi 0011 indicherebbe il dispositivo, 0001 il registro all'interno di quel dispositivo)


Aspetta però... non coincide benissimo con lo schema di esempio al quale ti riferisci.. Sempre se non ho copiato male dalla lavagna il codice di abilitazione per il dispositivo era 0110 e non 0011.
Il codice di abilitazione 0011 è nel secondo schema.. quello dove si parla di SEL0 e SEL1. Quindi a questo punto penso che quel codice assembly sia riferito tutto al secondo schema.
[Modificato da fbcyborg 02/11/2007 22:03]
______________________
^ThE CyBoRg^