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 08/59 [28 di 79] 

 

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

 

INT 10H

Funzione 09H Stampa uno o più caratteri a colori

 

bulletScrive una o più volte un determinato carattere a colori, a partire dalla posizione di stampa e nella pagina video corrente

 

bulletIn ingresso:
bullet AH è posto a 09H
bulletAL indica il codice Ascii del carattere da stampare
bulletBL indica il valore dell'attributo di colore del carattere da stampare
bulletBH specifica la pagina video nella quale stampare, una o più volte, il carattere a colori; i possibili valori dipendono dal Modo Video Corrente:
bulletpagine 0÷3 o 0÷7, per i Modi Testo
bulletnei Modi Grafici il valore di BH viene generalmente ignorato
bulletCX indica quante volte deve essere scritto, in sequenza, il carattere desiderato; in ogni caso:
bulletil valore CX =0000 va assolutamente evitato: porterebbe alla stampa di 65536 caratteri, bloccando praticamente il computer per lungo tempo
bulletil numero posto in CX non dovrebbe inoltre essere maggiore di quello dei caratteri ancora collocabili sulla riga corrente:
nei Modi Testo la differenza tra
CX e questi ultimi viene messa automaticamente sulla riga successiva.
nei Modi Grafici questo non è possibile: i caratteri in eccedenza non vengono messi automaticamente sulla riga successiva, generando effetti imprevedibili.

 

bulletIn uscita lascia:
bulletnulla

 

bulletLa Funzione si chiama in questo modo:

               

  

bulletLa Funzione 0AH di INT 10H è molto simile a quella che stiamo trattando: l'unica differenza consiste nel fatto che non gestisce il colore, lasciando al carattere quello ereditato dal carattere che occupava la stessa posizione.
bulletLa gestione del colore è qui invece affidata al byte predisposto in BL:
bulletnei Modi Testo è il classico byte diviso in 3 campi, in grado di gestire sia lo Sfondo che il Primo Piano, secondo lo schema (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

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.

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 che questa Funzione è in grado di interpretare semigraficamente ogni carattere ASCII, cioè mette a video la matrice di punti prevista per ognuno dei 256 caratteri dal Set coinvolto; la cosa è particolarmente utile per i primi 32 caratteri Ascii (detti di controllo), di solito utilizzati per esercitare azioni di controllo (come la messa a capo del cursore..).
bulletIn realtà anche questi caratteri hanno un loro simbolo grafico, spesso accattivante (come i semi delle carte, ♠♣♥♦, i simboli delle frecce, ←↑→↓, le note musicali, ♫♪,...) e questa funzione consente la loro messa a video.
bulletIn altre parole, per esempio, caratteri Ascii di controllo come 0DH=CR=Carriage Return e 0AH=LF=Line Feed, di solito coinvolti per mandare a capo il cursore, gestiti da questa Funzione mettono a video rispettivamente i simboli e .

  

bulletIn questo differisce dalla Funzione 0EH di INT 10H che, invece di stampare e , esegue la messa a capo del cursore.

  

bullet Un difetto di questa Funzione sta nel fatto che, dopo la messa a video del carattere, la posizione del cursore non viene aggiornata; è dunque necessario spostarlo dopo ogni chiamata con l'aiuto della Funzione 02H di INT 10H.

  

Suggerimento La Libreria Giobe.LIB utilizza questa Funzione per la stampa di un carattere a colori, resa disponibile con la procedura BIOchr1; la procedura STAsp utilizza a sua volta la procedura BIOchr1 per la stampa di uno spazio.

  

bulletLe procedure di Libreria potranno essere chiamate con efficienza anche nei Modi Grafici, anche se in esse il cursore non è visibile.

  

bulletLa BIOchr1 è molto sofisticata:
bulletlegge la posizione di stampa corrente, con la Funzione 03H di INT 10H
bulletutilizza questa Funzione per stampare il carattere Ascii ricevuto in AL
bulletutilizza per il codice di colore il contenuto dalla variabile ATTRIB, che deve essere dunque definita e dichiarata EXTRN dal programma chiamante
bulletaggiorna la posizione del cursore, controllando le nuove coordinate di riga e di colonna al fine di dare una corretta nuova posizione di stampa
bulletfissa la nuova posizione di stampa, con la Funzione 02H di INT 10H

  

bulletLa BIOchr1 inizializza BH a 0; questa scelta suggerisce le seguenti considerazioni:
bulletnei Modi Testo le impone di funzionare rigorosamente dentro la Pagina video principale, Pagina0
bullet

nei Modi Grafici il valore di BH è irrilevante, con eccezione per il ModoGrafico 13H (320x200 a 256 colori, VGA) che, come visto poco fa, consente di specificare in esso il colore dello Sfondo: se si rende necessario l'uso di un colore diverso da nero è necessario utilizzare una versione modificata di BIOchr1, senza l’istruzione MOV BH,00H, lasciando poi al programma chiamante il compito di fornirle in BH un diverso valore, come parametro.

  

bulletGli eseguibili B10_09__.COM (nei Modi Testo) e B10_09gr.COM (nei Modi Grafici) mostrano l’effetto della Funzione 09H 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 08/59   Torna alla Home della Sezione Assembler - DownLoad Torna al Menu di "Programma il Computer"
28 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