Sezione |
Indirizzi Base
Registri Interni
|
Libreria GIOBE.ASM |
Raccolta di Procedure ASM |
BIOSchr [11 di 54] |
|
|
Aggiornato 31 agosto 2008 su segnalazione di Trigon [consulta la sua Scheda] |
Stampa un carattere nella posizione di stampa corrente, ma non è possibile cambiarne il colore: il carattere eredita l'attributo di quello che andrà a sostituire. | |
Dopo la messa a video del carattere provvede ad aggiornare la posizione del cursore, in modo da fargli puntare il posto in cui verrà collocato il successivo carattere; ogni volta che esso si trova in alla fine di una riga si produce il ritorno a capolinea. |
|
La Procedura si chiama in questo modo: |
|
|
In
ingresso bisogna predisporre:
|
|
La seguente Area di Testo mostra il Modulo bios04 utilizzato per inserire la Procedura nella Libreria Giobe.ASM/LIB: |
|
BIOSchr / bios04 |
NB: se il testo contenuto nell'Area
ti
sembra strano (cioè se contiene caratteri inconsueti) non hai ancora installato il font Giobe.TTF : clicca qui!! |
|
L'analisi del codice mette in evidenza le sue caratteristiche: | |
stampa il carattere predisposto, prima della chiamata, nel registro AL, con l'aiuto della Funzione 0EH di INT 10H | |
il carattere verrà stampato con i colori di default del DOS (di solito bianco su nero) e non sarà possibile modificarli | |
il carattere verrà collocato nella posizione di stampa corrente, cioè nel punto esatto in cui sta lampeggiando (nel momento della chiamata) il cursore hardware del video (il famoso trattino lampeggiante) | |
dopo la stampa (in uscita dalla chiamata) la posizione del cursore viene aggiornata automaticamente; in altre parole il cursore si sposta a destra di una posizione e, se già si trova a fine riga, viene spostato a capo della riga successiva | |
le schede dedicate a queste Funzioni BIOS affrontano in
modo dettagliato ogni altro particolare relativo ai rispettivi compiti è predisposta per lavorare in pagina0, dato che il registro BH è predisposto al valore 00H |
|
Oltre a predisporre in AL il codice Ascii del carattere che si desidera stampare può essere necessario fissare anche le coordinate della posizione di stampa (con M_CURSOR), anche se questa informazione non è strettamente necessaria: se non si specificano le coordinate la Procedura collocherà il carattere nella posizione di stampa corrente (là dove lampeggia il cursore) |
|
Questa Procedura
tratta alcuni tra i
primi 32 caratteri Ascii
non per mettere a video la loro
matrice di punti (quella prevista dal
Set coinvolto, come fa la
BIOchr1) ma per esercitare l'azione di controllo
ad essi associata; i caratteri Ascii di
controllo trattati in modo funzionale sono:
|
|
In effetti si potrebbe pensare che altri codici Ascii di controllo possano essere interpretati da questa Procedura: tra questi il più comune è il codice Ascii 09H (=TAB=Tabulate) in presenza del quale, di norma, gli applicativi spostano il cursore a destra di 8 spazi; nella stesura originale di questa pagina esso era erroneamente incluso nell'elenco precedente, sebbene non risultasse tra quelli documentati dalla Funzione 0EH di INT 10H, alla base della BIOSchr. (Di fatto devo questa precisazione alla segnalazione puntuale a Trigon [consulta la sua Scheda]). |
|
In definitiva la Procedura BIOSchr (come la Funzione 0EH di INT 10H, da cui trae origine) tratta dunque in modo diretto solo i codici Ascii BELL (07H), BK (08H), LF (0AH) e CR (0DH), lasciando al programmatore il compito di assicurare un degno servizio per gli altri; in particolare il codice Ascii TAB (09H), per altro utilizzato raramente in un programma assembly, nel quale la necessità di fissare delle colonne di riferimento è quasi sempre affidata al posizionamento diretto del cursore, controllando eventualmente che le stringhe ad essa precedenti non superino questo limite. In mancanza di servizio dedicato il codice Ascii 09H sarà posto a video con il carattere ○. | |
Di norma il servizio TAB è utilizzato dagli editors, spesso in modo programmabile, lasciando cioè all'utente la possibilità di stabilire il numero di spazi da inserire tra una colonna TAB e la successiva. | |
Tra l'altro è facile capire che si tratta di una caratteristica tutt'altro che banale, dovendo il programma inserire un numero di spazi comunque dipendente dai caratteri già inseriti tra un TAB e il successivo, indipendentemente dalla sua quantità massima (tipica della distanza tra un TAB e il successivo in assenza di caratteri tra di essi) |
|
Sulla base di questa caratteristica essa è coinvolta per
definire altre 2 Procedure
di questa libreria:
|
|
L'aggiornamento automatico del cursore produce il ritorno a capolinea ogni volta che esso si trova in alla fine di una riga; questo fatto creare problemi quando si trova, in basso a destra, nell'ultima posizione possibile, in riga 24, colonna 79. | |
La stampa del carattere successivo provoca anch'essa il ritorno automatico a capolinea ma, contemporaneamente, sposta verso l'alto di una riga (scrolling) tutto il contenuto dello schermo, inserendo in basso un'intera riga di spazi che nei Modi Testo sono colorati con l'attributo dell'ultimo carattere scritto sulla riga precedente! (nei Modi Grafici l'effetto è meno evidente dato che l'attributo di colore usato per riempire la riga è il nero). |
|
La Libreria Giobe.ASM/LIB mette a disposizione anche le Procedure BIOchr1 (a livello BIOS) e RAMchr (a livello RamVideo), per la stampa di un carattere colorato. |
|
Libreria GiobeASM | BIOSchr | |||||||
11 di 54 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|