1 / 13

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

Alcune Istruzioni per la gestione dell’I/O (Classe 7). 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. Formato delle istruzioni di I/O.

emera
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Alcune Istruzioni per la gestione dell’I/O (Classe 7) 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. CLASSE 111 TIPO k I/O s ----- ----- MODO DEST 31 29 28 24 23 16 15 14 13 12 11 9 8 6 5 3 2 0

  3. I/O programmato – INTERFACCIA di INPUT PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE I/O AB PD32 I/O DB I/O CB I/O RD START WAIT READY “0” STARTD O.C. SELECT R Q REG STATUS S Q STARTDEV COMPLETE SCA SCO

  4. Programma assembler (input) Aspetta1: JNR DeviceIN, Aspetta1 START DeviceIN Aspetta2: JNR DeviceIN, Aspetta2 INB DeviceIN, R0

  5. I/O WR I/O programmato- INTERFACCIA di OUTPUT PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE I/O AB PD32 I/O DB I/O CB START READY STARTD DEC O.C. SELECT R Q REG STATUS S Q STARTDEV COMPLETE SCA SCO

  6. Programma assembler (output) Aspetta1: JNR DeviceOUT, Aspetta 1 OUT R0, DeviceOUT START DeviceOUT Aspetta2: JNR DeviceOUT, Aspetta2

  7. I/O programmatoMODALITA’ 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 PD32 I/O DB I/O CB 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. Scrivere il codice assembly per il controllo dei sensori di temperatura e della periferica di allarme.

  11. Macchina a stati finiti newTemp, T_media NON in [Tmin-Tmax]/ - newTemp,T_media NON in [Tmin-Tmax] / Alarm_ON T_media in [Tmin-Tmax] T_media fuori da [Tmin-Tmax] newTemp, T_media in [Tmin-Tmax] / - newTemp,T_media in [Tmin-Tmax] / Alarm_OFF Legenda per le transizioni: Input, Condizione / Output

  12. Diagramma di flusso T_media=Ts1=Ts2=Ts3=Ts4= = (Tmin+Tmax)/2 Stato=IN_RANGE controlla dev.succ Polling dev i ready? NO SI Input da dev_i: new_T_si Stato=OUT Stato=IN Ricalcola media: T_media=T_media+(new_T_si-old_T_si)/4 SI SI T_media in_range? Stato = IN Stato = OUT SI NO NO NO OUTPUT: ALARM ON OUTPUT: ALARM OFF

  13. Il codice VEDI FILE POLLING.ASM SUL SITO… http://www.dis.uniroma1.it/~ciciani/DIDATTICA/CALCOLATORI-II/polling.asm

More Related