• Non ci sono risultati.

Alcune Istruzioni per la gestione dell’I/O (Classe 7)

N/A
N/A
Protected

Academic year: 2022

Condividi "Alcune Istruzioni per la gestione dell’I/O (Classe 7)"

Copied!
13
0
0

Testo completo

(1)

Alcune Istruzioni per la gestione dell’I/O (Classe 7)

TIPO CODICE OPERANDI C N Z V P I COMMENTO

0 INs dev, D0 - - - - Il dato contenuto nel

buffer del device dev è trasferito nella destinazione D0.

dev ->d0

1 OUTs S,dev - - - - Il dato sorgente S

viene trasferito nel buffer del device dev.

S->dev

2 START dev - - - - Viene azzerato il flip-

flop STATUS del dev e viene avviata

l'operazione.

3 JR dev, D1 - - - - Se STATUS=1 salta

alla destinazione D1

4 JNR dev, D1 - - - - Se STATUS=0 salta

alla destinazione D1

Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato.

Per la destinazione D1 sono ammessi tutti i tipi di indirizzamento tranne quello con registro e immediato.

(2)

Formato delle istruzioni di I/O

Per l’operando dev sono ammessi solo due modi di indirizzamento: diretto con registro ed assoluto. Per la codifica di questo campo sono usati i campi I/O e k.

Il campo I/O può assumere solo due valori:

• 01 => indica che il contenuto di k è l’indirizzo del device

• 10 => indica che l’indirizzo del device è contenuto nel registro generale specificato dai primi 3 bit del campo k

Poichè i campi modo sorgente e sorgente sono inutilizzati, la sorgente S viene specificata nei campi modo destinazione e destinazione.

(3)

I/O AB I/O DB I/O CB

SELECT

REG

I/O RD START

STARTD

O.C.

READY

SCA SCO

R Q S Q STATUS

PD32

I/O programmato – INTERFACCIA di INPUT

PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE

STARTDEV COMPLETE

“0”

WAIT

(4)

Programma assembler (input)

Aspetta1: JNR DeviceIN, Aspetta1 START DeviceIN

Aspetta2: JNR DeviceIN, Aspetta2 INB DeviceIN, R0

(5)

I/O AB I/O DB I/O CB

DEC

SELECT

REG

START I/O WR

STARTD

O.C.

READY

SCA SCO

R Q S Q STATUS

PD32

STARTDEV COMPLETE

I/O programmato- INTERFACCIA di OUTPUT

PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE

(6)

Programma assembler (output)

Aspetta1: JNR DeviceOUT, Aspetta 1 OUT R0, DeviceOUT

START DeviceOUT

Aspetta2: JNR DeviceOUT, Aspetta2

(7)

I/O programmato

MODALITA’ BUSY WAITING

MOVL #100, R0 ; numero di dati da acquisire MOVL #DATI, R1 ; ind.dell’area di memoria JSR IN_AD1

IN_AD1: PUSH R0; salv. registri usati PUSH R1

PUSH R2

IN_1: JNR AD1, IN_1 ; attende che AD1 sia pronto IN_2: START AD1 ;avvia l’acquisizione di un dato

IN_3: JNR AD1, IN_3 ; attende che il dato sia stato prodotto INW AD1, R2 ; prelievo del dato e….

MOVW R2, (R1)+ ; … suo trasferimento in memoria SUBL #1, R0 ; decremento del contatore

JNZ IN_2 ; acquisizione di un altro dato se non si è azzerato

; il contatore

POP R2 ; ripristino dei registri usati

POP R1 ;

POP R0 ;

RET ; ritorno al programma chiamante

(8)

Polling

(verifica circolare se ogni DEVICE è pronto ad interagire)

I/O AB I/O DB I/O CB PD32

DEV 1 DEV 2 DEV 3 DEV 4

(9)

Polling

(acquisisce 100 dati da 4 dispositivi)

MOVL #100, R0 ; numero di dati da acquisire MOVL #DATI, R1 ; ind.dell’area di memoria JSR IN_AD1

IN_AD1: PUSH R0 ; salv. registri usati PUSH R1

PUSH R2

POLL1: JR AD1, IN_1 ; attende che AD1 sia pronto POLL2: JR AD2, IN_2

POLL3: JR AD3, IN_3 POLL4: JR AD4, IN_4

JMP POLL1

IN_i: START ADi ; avvia l’acquisizione di un dato WAIT: JNR ADi, WAIT ; attende che il dato sia stato prodotto

INW ADi, R2 ; prelievo del dato e….

MOVW R2, (R1)+ ; … suo trasferimento in memoria SUBL #1, R0 ; decremento del contatore

JZ EXIT

JMP POLL_i+1 ; continua a interrogare le altre periferiche EXIT: POP R2 ; ripristino dei registri usati

POP R1 ;

POP R0 ;

RET ; ritorno al programma chiamante

(10)

Esercizio

Una stanza e’ monitorata da 4 sensori di temperatura, i quali sono pilotati da un PD32. Quest’ultimo controlla costantemente che il valor medio della temperatura rilevata nella stanza sia compreso tra i valori [Tmin-Tmax]. Nel caso in cui il valor medio della temperatura non cada in tale intervallo, il microprocessore inviera’

un segnale di allarme su un’apposita periferica, detta ALARM. Il segnale d’allarme utilizzato e’ il valore 1 codificato con 8 bit. Se la temperatura ritorna all’interno dell’intervallo [Tmin-Tmax], la CPU invia sulla periferica ALARM il valore 0.

I sensori ritornano la temperatura misurata come un numero intero ad 8 bit, usando i decimi di gradi Celsius come unita’ di misura.

(11)

Macchina a stati finiti

T_media in

[Tmin-Tmax] T_media fuori da

[Tmin-Tmax]

newTemp,T_media NON in [Tmin-Tmax] /

Alarm_ON

Legenda per le transizioni:

Input, Condizione / Output

newTemp,T_media in [Tmin-Tmax] / Alarm_OFF

newTemp,

T_media NON in [Tmin-Tmax]/

-

newTemp,

T_media in [Tmin-Tmax] /

-

(12)

Diagramma di flusso

T_media=Ts1=Ts2=Ts3=Ts4=

= (Tmin+Tmax)/2 Stato=IN_RANGE

dev i ready?

controlla dev.succ Polling

NO SI

Ricalcola media:

T_media=T_media+(new_T_si-old_T_si)/4

T_media Stato = SI

SI

Stato =

SI NO

Input da dev_i: new_T_si

Stato=IN Stato=OUT

(13)

Il codice

VEDI FILE POLLING.ASM SUL SITO…

http://www.dis.uniroma1.it/~ciciani/DIDATTICA/CALCOLATORI-II/polling.asm

Riferimenti

Documenti correlati

sotto... Tabella per un cielo coperto CIE standard.. ESEMPIO DI COMPOSIZIONE DEGLI EFFETTI.. CALCOLO DELLA COMPONENTE RIFLESSIONE INTERNA.. 1) Si determina il rapporto tra la

[r]

Per le misure con lo scintillatore NaI, per il quale i conteggi rilevati sono molto minori rispetto allo scintillatore LYSO, data l’assenza di attività radioattiva

In tal modo è possibile effettuare un riuso di frequenza sfruttando l’ortogonalità o l’isolamento tra i segnali generati, oppure utilizzare due differenti bande di frequenza

La presenza di uno o più valori non compresi tra 0 ed 1, nella terna risultante dalla trasformazione matematica operata sul colore scelto dell'utente, oltre ad attivare

 Quando le funzioni leggono i caratteri di un file, cercano di leggerne quanti più è possibile a seconda del tipo di valore richiesto (ad es. se devono leggere un valore intero

trasporta una serie di secchi (per esempio orizzontalmente), ogni secchio alla fine del nastro rilascia il suo contenuto in un secchio di lettura , che avanza verticalmente

3.compilazione delle versioni X dei pacchetti binari (un pacchetto binario per ogni architettura supportata).. Utilizzo di