Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Funzioni BIOS

Home » Programma il Computer » Tutorial Assembly

Tutorial Assembly - Funzioni BIOS

  Programmazione

VIDEO 54/59 [74 di 79] 

 

bullet Gestione BIOS del Video - INT 10H - Funzione 13H

 

INT 10H

Funzione 13H Stampa una stringa di caratteri

 

bulletScrive una stringa sul monitor.

 

bulletIn ingresso:
bullet AH è posto a 13H
bulletAL indica una delle 4 possibili SottoFunzioni (00H÷03H), specificando la tecnica implementata
bulletDL indica la colonna della posizione di stampa del primo carattere della stringa
bulletDH indica la riga della posizione di stampa del primo carattere della stringa
bulletCX indica la lunghezza della stringa da stampare
bulletES:BP indica il puntatore alla locazione del primo carattere della stringa
bulletBL indica il colore dei caratteri della stringa (nelle SottoFunzioni 00H e 01H)
bulletBH specifica la pagina video nella quale operare la stampa della stringa
bulletpagine 0÷3 o 0÷7, per i Modi Testo
bulletpagina 0, per i Modi Grafici

 

bulletIn uscita lascia:
bulletnulla

 

bulletL'impiego della nostra Funzione 13H dell'INT 10H nella stampa di messaggi è piuttosto particolare, poco pratico e macchinoso...
bulletIn 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).

 

bulletLa stringa di caratteri da stampare deve essere predisposta in memoria e puntata dai registri ES:BP; il primo dei suoi caratteri sarà posto a video a partire dalla posizione di stampa indicata da DH (riga) e DL (colonna) nella pagina indicata da BH (quando il Modo video ne prevede più di una).
bulletUn'altra caratteristica è legata al modo con cui bisogna predisporre l'informazione:
bullet

nelle SottoFunzioni AL=00H e AL=01H la stringa è fornita in modo classico, contenente solo caratteri in sequenza.

bullet

nelle SottoFunzioni AL=02H e AL=03H la stringa è fornita in modo paranoico...: ogni carattere è fatto seguire dal suo byte di attributo di colore, cosicché la sua predisposizione risulta piuttosto laboriosa; l'unico vantaggio (?!) è che ciascun carattere può avere un codice di colore diverso...

 

bullet

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.
bullet

in realtà nelle SottoFunzioni 00H e 01H il compilatore può venirci incontro calcolando automaticamente il numero da lasciare in CX (vedi esempio applicativo)

bullet

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.

 

bulletLa 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.
bullet I caratteri Ascii di controllo trattati in modo funzionale sono:
bulletil codice Ascii 07H (=BELL=campanello) costringe il PC ad emettere un beep (invece di stampare)
bulletil codice Ascii 08H (=BK=BackSpace) sposta il cursore indietro di una posizione (invece di stampare )
bulletil codice Ascii 09H (=TAB=Tabulate) sposta il cursore a destra di 8 spazi (invece di stampare )
bulletil codice Ascii 0AH (=LF=LineFeed) sposta il cursore in avanti di una riga  (invece di stampare )
bulletil codice Ascii 0DH (=CR=CarriageReturn ) sposta il cursore nella prima posizione di stampa a sinistra (invece di stampare)
bulletI 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.

 

bulletLa tecnica con cui la stringa viene colorata dipende dalla SottoFunzione coinvolto (una delle 4 possibili, dichiarato in AL) e dal Modo Video corrente.
bulletNei Modi Testo il codice di colore (detto anche attributo) è il classico byte diviso in 3 campi, in grado di gestire sia lo Sfondo che il Primo Piano, secondo lo schema seguente; il colore associato a ciascun campo è descritto in questa pagina; la combinazione degli 8 bit da luogo a 28 = 256 diversi accoppiamenti: puoi vederne l'effetto ed impararne il codice consultando la pagina dei Colori Assembly in Modo Testo):

  

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
flash Sfondo Primo Piano
F S2 S1 S0 P3 P2 P1 P0

  

bullet

nelle SottoFunzioni AL=00H e AL=01H l'attributo di Colore viene assunto dal codice fornito in BL

bullet

nelle SottoFunzioni AL=02H e AL=03H l'assunzione dei codici di attributo di Colore è piuttosto originale; essi sono forniti direttamente dentro la stringa, intercalati ai caratteri, e quindi possono essere diversi per ciascuno di essi.

 

bulletIn 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.
bullet

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 .

 

bulletVa sottolineato infine che le SottoFunzioni differiscono anche per il modo con cui viene servito il Cursore:
bullet

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.

bullet

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).

 

bulletLa 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

  

  

bulletCome 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.

  

Suggerimento Per la stampa dei messaggi la Libreria Giobe.LIB offre la procedura BIOSmsg (basata sulla procedura BIOchr1) e la procedura RAMmes (basata sulla scrittura diretta in RamVideo)
La Raccolta di MacroIstruzioni Giobe.MAC organizza questo servizio con le Macro
M_CURSOR, M_msgC , M_msgN (a livello BIOS) e RAMmsg, RAMcol, RAMnor (a livello RamVideo)

  

bulletLe strutture delle Librerie potranno essere chiamate con efficienza anche nei Modi Grafici, anche se in esse il cursore non è visibile.
   

  

bulletGli eseguibili B10_13__.COM (nei Modi Testo) e B10_13gr.COM (nei Modi Grafici) mostrano l’effetto della Funzione 13H dell'INT 10H.
bulletI sorgenti sono documentati nella sezione ASM (clicca sull'iconaApplicazioni Software, nel menu a sinistra).

    

Pagina Precedente Funzioni BIOS Pagina Successiva VIDEO 54/59   Torna alla Home della Sezione Assembler - DownLoad Torna al Menu di "Programma il Computer"
74 di 79
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

    

Funzioni BIOS » Elenco Progressivo | Seriale | Parallela | Stampanti | Video | Cursore
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati