Giobe®2000
Pagina creata il 01/10/2012 [4398 giorni fa]

Come Funziona... Indirizzi Base Area Comunicaz. Bios
Registri Livello Hardware Livello BIOS Livello DOS
Tecniche d'Interruzione Connettori Cavi Interfaccia
Applicazioni Software Applicazioni Hardware Download INDICE
  Porta Parallela
Applicazioni Software Applicazioni Software PROGETTO n° 16 - 6/6 [156 di 189] 
Analisi del Problema · Analisi del Codice · Procedure importanti · Schema interfaccia
Porta Parallela - Conteggio di ogni tipo - Con Decoder con memoria 9368
Analisi delle procedure importanti

La procedura Out08bit, dedicata alla gestione dell'interfaccia hardware costituita dai due decoder con memoria 9368, è descritta nella seguente casella di testo:

Progetti con la Porta Parallela Esercizio MOLTO FACILE Progetto
016
NB: se il testo nell'Area ti sembra strano
installa il font Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile Scarica il codice Sorgente

 Dopo aver assicurato (CALL OK_Dgt) la presenza di un livello alto sulla linea BI dei due decoder 9368 si limita a porre il valore corrente della variabile Depo (predisposto nel registro accumulatore AL dal codice chiamante) sul Registro d'uscita 0378H/0278H della porta parallela: immediatamente questo byte viene ripartito tra le due quaterne di linee d'ingresso dei due 9368 e, da essi, passato ai due digit, per l'istantanea visualizzazione.

La parte finale della procedura provvede a fare eco sul monitor di questo valore, in posizione centrale (riga 13, colonna 38) e con l'aiuto della potente procedura di conversione Byt2Asc, capace di tradurre un numero binario (non stampabile) in una stringa di caratteri ascii stampabili.

La casella di testo successiva analizza il codice delle prime due procedure (IncDepo e DecDepo) predisposte per supportare i 4 servizi di conteggio:

Progetti con la Porta Parallela Esercizio MOLTO FACILE Progetto
016
NB: se il testo nell'Area ti sembra strano
installa il font Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile Scarica il codice Sorgente

  Il loro compito si limita a prelevare il valore corrente dalla locazione Depo (puntata fin dall'inizio dal registro SI) e a provvedere rispettivamente al suo incremento o decremento di una unità, prima di rimetterlo al suo posto, a beneficio dei servizi citati; da notare la presenza delle istruzioni DAA e DAS  (due tra le più potenti del set del processore 80x86): il ";" posto davanti ad esse fa si che l'assemblatore non le compili e che dunque il processore non le esegua; in questo modo il conteggio (in avanti o indietro) verrà condotto in esadecimale, sfruttando a pieno le capacità dei decoder 9368 così che, sui due Digit, alla visualizzazione .., "09" (associata al numero 09H) seguiranno le "0A", "0B", .. , "0F", "10", .. , legate ai numeri 0AH, 0BH, .. ,0FH, 10H, .. .

Togliendo il ";" posto davanti ad esse e ricompilando il sorgente, le istruzioni DAA e DAS saranno operative: il loro compito è quello di "aggiustare in decimale" il valore esadecimale dopo una somma o una sottrazione (nel nostro caso dopo un incremento o un decremento); in questo modo è possibile riadattare il codice macchina del nostro progetto per obbligarlo a mostrare sui due Digit un conteggio decimale (nonostante la natura esadecimale dei decoder 9368) così che la sequenza di coppie di simboli mostrata sarà del tipo: .., "09", "10", "11", .. , evitando di coinvolgere numeri che richiedono i sei simboli letterali del codice binario puro e provvedendo di fatto ad una visualizzazione BCD a due cifre.

Suggerimento NB: puoi collaudare e verificare la differenza direttamente: ho predisposto due diversi sorgenti, uno adatto a conteggi di tipo esadecimale (Exad9368.ASM, senza la presenza di  DAA e DAS) e uno adatto a conteggi di tipo decimale (Deci9368.ASM, con la presenza di  DAA e DAS).
Progetti con la Porta Parallela Esercizio MOLTO FACILE Progetto
016
Exad9368.ASM/COM
senza la presenza di  DAA e DAS
Mostra l'Effetto Prova l'eseguibile Scarica il codice Sorgente
Deci9368.ASM/COM
con la presenza di  DAA e DAS
Mostra l'Effetto Prova l'eseguibile Scarica il codice Sorgente

La prossima casella di testo si occupa di un servizio collaterale ma non per questo banale; ho pensato di dare la possibilità di collaudare la linea d'ingresso BI (pin4 del 9368) intervenendo su di essa da software per forzarla a 1 (nel normale servizio di visualizzazione) o a 0 (per spegnere incondizionatamente i digit):

Progetti con la Porta Parallela Esercizio MOLTO FACILE Progetto
016
NB: se il testo nell'Area ti sembra strano
installa il font Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile Scarica il codice Sorgente

La prima (la procedura OK_Dgt) è chiamata automaticamente dopo ogni richiesta di conteggio, mentre la seconda (il servizio BlkDgt) è imponibile solo su richiesta .. premendo il tasto "B".

In entrambi i casi questa azione è resa possibile programmando il bit0 del Registro di Controllo 037AH/027AH della porta parallela; non bisogna dimenticare che il valore del bit è invertito internamente per cui, forzandolo a 0, la linea in uscita dal corrispondente pin1 del connettore della parallela passa alta e, in questo modo, forza a 1 l'ingresso BI di entrambi i 9368, producendo la riaccensione immediata di tutti i segmenti dei Digit; effetto opposto si avrà ovviamente forzando il bit0: linea bassa su pin1, ingresso BI=0, attivo, e spegnimento immediato di tutti i segmenti di entrambi i Digit; da notare che (per una attenta gestione dell'informazione) anche la stringa visualizzata sul monitor viene cancellata con un paio di spazi:

L'ultima casella di testo descrive 4 dei 6 Servizi previsti per la gestione di questo progetto:

Progetti con la Porta Parallela Esercizio MOLTO FACILE Progetto
016
NB: se il testo nell'Area ti sembra strano
installa il font Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile Scarica il codice Sorgente

Non si tratta di procedure ma di codice specificatamente pensato per rispondere propriamente alla pressione di un tasto autorizzato; a ciascuno di essi si accede infatti con un salto condizionato JZ address, la cui presenza a 1 stabilisce che l'evento si è verificato) e vi si esce con un salto incondizionato (JMP address) in un punto antecedente il loop d'attesa (.. non esiste dunque RET).

La cosa è particolarmente evidente: a) i primi due Servizi (IncByt e DecByt) si limitano semplicemente ad incrementare o decrementare il valore mostrato sui digit (e sul monitor) su diretta richiesta della pressione dei tasti "I" e "E", rientrando poco prima (con un JMP a livello XXX01) del Main Loop per consentire la visualizzazione, prima di una nuova attesa di tasti premuti; b) i rimanenti due Servizi (UpByt e DwnByt) sono più sofisticati: l'incremento o il decremento del valore mostrato deve continuare senza interruzioni, con cadenza di un secondo, per garantire un conteggio Up (attivato dalla pressione del tasto "U") o un conteggio Down (attivato dal tasto "D"); per questo è necessario appoggiarsi alla Funzione 01H della procedura a livello BIOS nota come INT 16H, che consente di verificare la eventuale pressione di tasti senza fermarsi; non appena viene rilevata la pressione di un tasto qualunque viene infatti imposto il rientro (con un JMP a livello XXX02) nel Main Loop.

Da notare che le temporizzazioni sono rese possibili dalla procedura Del_1000, in grado di generare un ritardo fisso di 1 secondo con particolare precisione, appoggiandosi per questo al Timer di sistema del personal computer. 

Pagina Precedente Porta Parallela Pagina Successiva PROGETTO n° 16 - 6/6 Torna alla Home della Sezione VERIFICA la validità della pagina!! Torna al Menu di "Dentro al Computer"
156 di  189
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
Parallela  »  Come Funziona..|Indirizzi Base|Area di Comunicazione Bios|Cavi
Livello Hardware|Livello BIOS|Livello DOS|Tecniche d'Interruzione|Connettori
Applicazioni Software|Progettazione|Interfaccia|Indice
Home
Pascal|Manuali|Tabelle|Schede|Pubblicazioni
Tutorial Assembly|Palestra Assembler
Nuovo Ambiente Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
Copyright ® 2001-2012 -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati