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

Libreria GIOBE.ASM

Home » Programma il Computer » Tutorial Assembly

Raccolta di Procedure

  Raccolta di Procedure ASM

BIOSchr [11 di 54] 

    

              

  Aggiornato  31 agosto 2008 su segnalazione di  Trigon [consulta la sua Scheda]

bulletStampa un carattere nella posizione di stampa corrente, ma non è possibile cambiarne il colore: il carattere eredita l'attributo di quello che andrà a sostituire.
bullet 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.

 

bulletLa Procedura si chiama in questo modo:

               

  

bulletIn ingresso bisogna predisporre:
bulletAL con il codice Ascii del carattere da stampare

 

bulletLa 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!!

               

bulletL'analisi del codice mette in evidenza le sue caratteristiche:
bulletstampa il carattere predisposto, prima della chiamata, nel registro AL, con l'aiuto della Funzione 0EH di INT 10H
bulletil carattere verrà stampato con i colori di default del DOS (di solito bianco su nero) e non sarà possibile modificarli
bulletil 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)
bulletdopo 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
bulletle 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

               

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

  

bulletQuesta 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:
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)

               

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

               

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

  

bulletSulla base di questa caratteristica essa è coinvolta per definire altre 2 Procedure di questa libreria:
bulletla Acapo chiamata a "stampare" la coppia 0D/0AH: l'effetto della sua esecuzione è quello di forzare il cursore a capo linea, come quando viene premuto il tasto Invio
bulletla BIObeep chiamata a "stampare" il carattere Ascii 07H: l'effetto della sua esecuzione è quello di costringere il PC ad emettere un beep

  

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

  

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

    

Pagina Precedente Libreria GiobeASM Pagina Successiva BIOSchr   Torna alla Home  del Capitolo3 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
11 di 54
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

    

Giobe.ASM SET_cur | VIA_cur | RIP_cur | BIOScls| BIOSchr |BIObeep |Acapo| BIOchr1| STAsp| BIOSmsg
Byt2Asc | Wor2Asc | Asc2Byt | Asc2Wor | Byt2Dec | Wor2Dec | Dec2Byt | Dec2Wor
Delay | DelMicro | Del_2000 | Del1500 | Del_1000 | Del_100 | Del_1 | Del500Mi | Del200Mi
Del100Mi | Del010Mi | RIEMPI | KEYwait | Random | INstrin | CambiaCol | MODEtest
RAMchr | RAMcur | RAMmes | RAMcls | RAMcorn | RAMpiu | RAMrecup | RAMbyte | RAMword
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