 | Ora però il flusso dei dati è legato all'istruzione stessa:
la periferica fornisce il dato al processore con l'istruzione
IN, e lo riceve con l'istruzione
OUT:
 | l'istruzione
IN AL,DX
si legge così: metti in AL il dato
proveniente dalla periferica il cui indirizzo è indicato dal contenuto di DX.
 | si tratta dunque di un'operazione di
lettura di periferica. |
 | obbliga il processore a scrivere sui primi 16 bit del
bus address l'indirizzo fisico ottenuto dal
contenuto del suo registro DX. |
 | non appena l'indirizzo è stabile il processore mette MEM/IO a 0
e RD a 0,
obbligando il dispositivo a copiare la sua informazione sul
bus dati. |
 | il processore si mette in attesa
sul bus dati per catturare l'informazione in arrivo e, non appena è
disponibile, la trascrive nel suo registro AL. |
 | se la periferica è lenta potrebbe anche
fornire in ritardo questo dato: la CPU
infatti non rimane in attesa all'infinito; per questa ragione, nelle
operazioni di IN dai dispositivi,
possono essere necessarie interfacce più
efficienti. |
 | se il processore fosse un 8086
e il contenuto del suo registro DX
fosse 0379H , sul
bus address verrebbe posto il numero
fisico 00379H (a 20 bit) e sul
bus dati (e poco dopo, in
AL) verrebbe a trovarsi il byte (8 bit)
proveniente dal
Registro
d'ingresso della porta parallela. |
|
 | l'istruzione
OUT DX, AL si legge così:
spedisci alla periferica il cui indirizzo è
indicato dal contenuto di DX il
dato contenuto nel registro AL.
 | si tratta dunque di un'operazione di
scrittura di periferica. |
 | obbliga il processore a scrivere sui primi 16 bit del
bus address l'indirizzo fisico ottenuto dal
contenuto del suo registro DX. |
 | poichè il dato gli appartiene (provenendo da un suo
registro, AL) il processore lo copia
immediatamente sul bus dati, a
disposizione del dispositivo d'uscita |
 | dopo qualche istante (non appena indirizzo e dato sono
stabili) il processore mette MEM/IO a
0 e WR a
0, avvisando la periferica che il dato è
pronto sul bus dati, a sua
disposizione |
 | se la periferica è lenta potrebbe anche
perdere questo dato: esso non è infatti
disponibile all'infinito; per questa ragione, nelle operazioni di
OUT verso i dispositivi, possono
essere necessarie interfacce più efficienti. |
 | se il processore fosse un 8086
e il contenuto del suo registro DX
fosse 0378H , sul
bus address verrebbe posto il numero
fisico 00378H (a 20 bit) e sul
bus dati (assunto da
AL) verrebbe a trovarsi il byte (8 bit)
destinato al
Registro
d'uscita della porta parallela. |
|
|