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 13/59 [33 di 79] 

 

              

  Aggiornato  31 agosto 2008

bullet Gestione BIOS del Video - INT 10H - Funzione 0EH

 

INT 10H Funzione 0EH Stampa un carattere in Modo TTY

 

bullet

Scrive un carattere nella posizione di stampa e nella pagina video corrente e aggiorna la posizione del cursore.

 

bulletIn ingresso:
bullet AH è posto a 0EH
bulletAL indica il codice Ascii del carattere da stampare
bulletBL indica il colore dello sfondo (solo nei Modi Grafici, nei quali il codice in BL deve esser ribadito ogni volta che si chiama la Funzione)
bulletBH specifica la pagina video nella quale stampare 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

 

bulletIn uscita lascia:
bulletnulla.

 

bulletLa Funzione si chiama in questo modo:

               

  

bulletNei Modi Testo che supportano più pagine video il carattere può essere scritto in una qualunque di esse senza influenzare quella correntemente visualizzata.

  

bulletIl Driver di Console di default del MS-DOS (CON:) usa questa Funzione per scrivere sullo schermo.

  

bulletLa caratteristica importante di questa Funzione è quella di trattare alcuni per i primi 32 caratteri Ascii non per mettere a video la loro matrice di punti (quella prevista dal Set coinvolto, come fanno le consorelle Funzioni 09H e 0AH di INT 10H) ma per esercitare l'azione di controllo ad essi associata.
bullet Essa si comporta in modo analogo a quello in uso nelle nelle vecchie telescriventi; per questo la sua tecnica di stampa è detta TTY (TeleTYpe); 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 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.

               

bulletIn effetti si potrebbe pensare che altri codici Ascii di controllo possano essere interpretati da questa Funzione: 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 ufficialmente.
bulletIn realtà la Funzione 0EH di INT 10H 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 .
bulletDi 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.
bulletTra 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)  

  

bulletUna seconda importante caratteristica della Funzione è quella di assicurare l'aggiornamento automatico della posizione del cursore, carattere dopo carattere, occupandosi nel contempo di aggiornare la corrispondente variabile di sistema a partire da quella (tra le otto previste, riservate alla posizione del cursore) posta a 0000:0450H.
bulletAnche in questo si distingue dalle Funzioni 09H e 0AH di INT 10H, che non aggiornano il cursore.
bulletL'aggiornamento del cursore produce il ritorno automatico 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.
bulletLa 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).

  

bulletL'ultima caratteristica della Funzione è quella di non consentire di colorare i caratteri posti a video:
bullet Nei Modi Testo non c'è la possibilità di cambiare il colore: il carattere eredita l'attributo di quello che andrà a sostituire.
bulletnei Modi Grafici invece, con l'aiuto del registro BL, è possibile controllare il colore, ma solo quello dei Pixel che formano il carattere (Primo Piano) e 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.
bullet

Fa eccezione il ModoGrafico 13H (320x200 a 256 colori, VGA) per il quale la ricca disponibilità cromatica rende inutile l'artificio logico appena descritto.

bulletIl fatto di non consentire la gestione del colore rende questa Funzione simile alla 0AH; la dove la cosa sia necessaria entrambe devono essere sostituite dalla Funzioni 09H (che per altro non aggiorna il cursore).

  

  

Suggerimento La Libreria Giobe.LIB utilizza questa Funzione per la stampa di un carattere normale, resa disponibile con la procedura BIOSchr; le procedure Acapo e BIObeep utilizzano a loro volta la procedura BIOSchr per mandare a capo il cursore e per emettere un beep.

  

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

  

bulletGli eseguibili B10_0E__.COM (nei Modi Testo) e B10_0Egr.COM (nei Modi Grafici) mostrano l’effetto della Funzione 0EH 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 13/59   Torna alla Home della Sezione Assembler - DownLoad Torna al Menu di "Programma il Computer"
33 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