|
 |
Programmazione |
VIDEO 54/59
[74 di 79] |
 |
Gestione BIOS del Video -
INT 10H
- Funzione 13H
|
INT
10H |
Funzione 13H |
Stampa una stringa di caratteri |
|
 | Scrive una stringa
sul monitor. |
 | In
ingresso:
 | AH è posto
a 13H |
 | AL
indica una delle 4 possibili SottoFunzioni (00H÷03H), specificando la tecnica
implementata |
 | DL
indica la colonna
della posizione di stampa del primo carattere della stringa |
 | DH
indica la riga
della posizione di stampa del primo carattere della stringa |
 | CX
indica la
lunghezza della stringa da stampare |
 | ES:BP
indica il
puntatore alla locazione del primo
carattere della stringa |
 | BL
indica il colore
dei caratteri della stringa (nelle
SottoFunzioni 00H
e 01H) |
 | BH specifica
la pagina video nella quale operare la stampa
della stringa
 | pagine
0÷3 o
0÷7, per i
Modi Testo |
 | pagina
0,
per i Modi Grafici |
|
|
 | In uscita lascia:
 | nulla |
|
 | L'impiego della nostra Funzione 13H dell'INT 10H
nella
stampa di messaggi è
piuttosto particolare, poco pratico e
macchinoso... |
 | In generale è più conveniente
organizzare le numerose
altre
Funzioni BIOS
di
INT 10H adatte
alla
stampa dei
caratteri (come le
Funzioni 09H,
0AH
e
0EH) al fine di creare Procedure
più efficienti di questa (vedi riferimenti in fondo alla pagina). |
 |
La
richiesta conoscenza del numero di caratteri da stampare
(da predisporre in CX) può
ingenerare fastidio al programmatore, che
si vede potenzialmente costretto a contare i
caratteri della stringa.
 |
in realtà
nelle
SottoFunzioni
00H e
01H il compilatore può venirci incontro
calcolando automaticamente il numero da lasciare in CX
(vedi esempio applicativo) |
 |
il fastidio può invece diventare più
pressante
nelle
SottoFunzioni 02H e
03H poichè la lunghezza da lasciare in
CX
dovrà comunque essere quella dei soli caratteri, anche se la stringa è
costituita da coppie carattere/attributo. |
|
 | La Funzione
può essere ritenuta una estensione della
Funzione 0EH
di
INT 10H dato che è in grado di interpretare
alcuni tra i
primi 32 caratteri Ascii in modo TTY
(TeleTYpe) cioè
non per mettere a video la loro
matrice di punti prevista dal
Set coinvolto,
ma per esercitare l'azione di controllo ad
essi associata. |
 |
I caratteri Ascii di
controllo trattati in modo funzionale sono:
 | il codice Ascii 07H
(=BELL=campanello)
costringe il PC ad emettere un beep
(invece di stampare •) |
 | il codice Ascii 08H
(=BK=BackSpace)
sposta il cursore indietro di una posizione (invece di stampare
◘) |
 | il codice Ascii 09H
(=TAB=Tabulate)
sposta il cursore a destra di 8 spazi (invece di stampare
○) |
 | il codice Ascii 0AH
(=LF=LineFeed)
sposta il cursore in avanti di una riga (invece di stampare
◙) |
 | il codice Ascii 0DH
(=CR=CarriageReturn
) sposta il cursore nella prima posizione di stampa a sinistra (invece di
stampare
♪) |
|
 | I più ricorrenti tra essi sono la coppia 0D/0AH, solitamente aggiunta automaticamente
dagli editor al termine di ciascuna riga digitata e corrisponde alla
pressione del tasto Invio; tutti i
rimanenti codici Ascii sono semplicemente posti a video nella loro forma
consueta. |
 | In quasi tutti i
Modi
Grafici
il valore di
BL
va inteso come colore dei
Pixel che formano il carattere (Primo
Piano) ma non lo Sfondo,
assunto sempre nero, a meno che il
bit7 del codice posto in
BL
sia forzato a 1; in
questo caso il colore dei caratteri
stampati sarà il risultato della XOR
del valore passato in
BL
e quello del colore del carattere attualmente presente in
quel punto; il codice in
BL
deve esser ribadito ogni volta che si chiama la Funzione. |
 |
Fa eccezione il
ModoGrafico
13H (320x200 a 256 colori, VGA) per il
quale, per ciascun carattere, è possibile selezionare sia il
Primo Piano (ancora con
BL) che lo Sfondo
(con BH,
che ora non seleziona più la pagina come negli altri
Modi), scelto tra uno
dei 64 possibili . |
 | Va sottolineato infine che
le
SottoFunzioni differiscono anche per il
modo con
cui viene servito il Cursore:
 |
nelle
SottoFunzioni
AL=00H
e
AL=02H
la posizione di stampa del Cursore non viene
aggiornata, rimanendo bloccata su quella del primo carattere
della stringa. |
 |
nelle
SottoFunzioni
AL=01H
e
AL=03H
la posizione di stampa del Cursore viene invece
regolarmente aggiornata e la funzione provvede a copiarne la
posizione nella corrispondente variabile di sistema posta
a partire dalla
0000:0450H, riservata
alla posizione del Cursore in pagina0 (a questa variabile ne seguono
altre 7, riservate alla posizione del Cursore nelle rimanenti pagine
disponibili in Modo Testo). |
|
 | La Funzione
si chiama in questo modo:
SottoFunzione
AL=00H
attributo di Colore viene assunto da
BL, posizione del
Cursore non aggiornata |
SottoFunzione
AL=01H
attributo di Colore viene assunto da BL,
posizione del Cursore aggiornata automaticamente
SottoFunzione
AL=02H
attributo di Colore fornito direttamente
dentro la stringa, posizione del Cursore non aggiornata
SottoFunzione
AL=03H
attributo di Colore fornito direttamente
dentro la stringa, posizione del Cursore aggiornata automaticamente
 | Come anticipato la Libreria
Giobe.LIB
organizza la
stampa di messaggi (in
alternativa all'uso di questa
Funzione 13H
di
INT 10H)
con alcune Procedure e alcune
Macro. |
 | Le strutture delle Librerie
potranno essere chiamate con
efficienza anche nei Modi
Grafici, anche se in esse il cursore non è visibile.
|
 | Gli eseguibili
B10_13__.COM (nei
Modi Testo)
e
B10_13gr.COM (nei
Modi
Grafici) mostrano l’effetto
della Funzione 13H dell'INT 10H. |
 | I sorgenti sono documentati nella sezione ASM
(clicca sull'icona ,
nel menu a sinistra). |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|