Libreria delle ProcedureGestione Caratteri

Entra nella Libreria GIOBE.TPU

 STAchr

CODICE SORGENTE [3 di 4]  

    
bulletLa procedura è parzialmente scritta in linguaggio Assembly. E' probabile che il lettore, in questo momento, non sia in possesso delle conoscenze di base della programmazione a basso livello, per cui questa pagina può risultare incomprensibile; desidero fornirtela comunque, come stimolo per approfondire questa potente tecnica di programmazione (vedi Sezione Tutorial Assembly).
    
bulletLa procedura accede direttamente alla Ram Video [per saperne di più consulta la Scheda nella Sezione Dentro il Computer].
bulletLa procedura consente di stampare un’area quadrangolare riempita con il medesimo carattere e con lo stesso attributo di colore, sostituendo in Ram Video i bytes relativi ai caratteri originali, che sono dunque perduti.
bulletLa procedura stampa il caratterecarat’ saltando ogni intermediario software, direttamente in Ram Video
bulletPer calcolare l’indirizzo fisico del carattere desiderato viene usato un algoritmo in Pascal: poiché ciascuna colonna porta il contributo di 2 bytes e ciascuna riga, essendo composta da 80 colonne, contribuisce con 160 bytes, il valore desiderato è così facilmente ottenibile a partire dai parametri ‘rig’ e ‘col’.
    
Codice Sorgente   Mostra Effetto Esegui il Programma Scarica l'Esempio d'Applicazione
PROCEDURE STAchr(rig,col,txt,sfo:byte; carat:char);
VAR indirizzo:word;
BEGIN
 
indirizzo:=(col-1)*2+(rig-1)*160; 
  asm
    PUSH  ES
        
    PUSH  DI           ;Salvataggio dei registri coinvolti
    PUSH  BX           ;
    MOV   AX,0B800H    ;Punta la  locazione  desiderata in
    MOV   ES,AX 
       ;Ram  Video,   ES:DI = ES:indirizzo
    MOV   DI,
indirizzo ;
    MOV   AL,
carat
    MOV   BH,sfo
    SHL   BH,1        
;
    SHL   BH,1        
;
    SHL   BH,1        
;Converte i  valori  dei  parametri
    SHL   BH,1        
;nel byte esadecimale corrisponden-
    MOV   BL,txt      
;te, lasciato in AH
    OR    BH,BL       
;
    MOV   AH,BH        ;
 
  MOV   ES:[DI],AX   ;Sposta  Carattere/Attributo in RamPOP BX">
    POP   BX
         
    POP   DI
           ;Recupero  dei  registri  coinvolti
    POP   ES
           ;
  end;
END;
    
bulletIl codice sviluppa le seguenti parti:
bulletcalcolo dell’indirizzo del carattere desiderato, a partire dai parametri ‘rig’ e ‘col(in Pascal, zona marrone)
bulletsalvataggio dei registri coinvolti
bulletcreazione del puntatore ES:DI all'indirizzo logico (zona verde)
bullettrasformazione dei parametri 'txt','sfo' nel byte di attributo di colore,lasciato in AH (zona blu)
bulletmemorizzazione nella corretta locazione Ram Video dei 2 bytes necessari al carattere desiderato (prelevati da AH=colore, AL='carat') (zona rosa)
bulletrecupero dei registri coinvolti
    
bulletRicordiamo che:
bullet La Ram Video si estende per 32kBytes e si può intendere divisa in 8 parti, dette Pagine Video, per cui ciascuna di esse contiene 4kBytes. Si tratta di una zona di memoria convenzionale , dedicata alla scrittura dei caratteri “in Modo Testo”, tipico dell’ambiente Dos, localizzata a partire dall’indirizzo fisico B8000H, nel primo mega.
bulletL’immagine attualmente visualizzata sul monitor è memorizzata nella Pagina 0 (l'unica visibile);le rimanenti Pagina 1 a Pagina 7), non visibili dall’utente, sono facilmente copiabili nell’area dell’unica pagina visibile (appunto la Pagina 0 ).
bulletI bytes di ogni pagina sono più di quanti siano necessari per i 2000 caratteri (80*25) di una intera pagina. Poiché ciascun carattere ha bisogno di 2 bytes, uno per il codice Ascii e uno per il codice di colore, per riempire una intera pagina servono 4000 bytes (poco meno di 4kB).
bulletLe coppie di bytes di ciascun carattere sono dunque poste in sequenza in questa area, da B8000 a B8F9F (indirizzi pari per i caratteri Ascii, indirizzi dispari per il byte di attributo di colore).
bulletLe 8 Pagine Video sono in parallelo, cioè le coordinate "rig", "col" individuano lo stesso carattere in ogni pagina.
    
Pagina Precedente Caratteri Pagina Successiva   STAchr Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Caratteri"
Esempio Sorgente Mostra
4 di 20

    

PASCAL  »

Libreria Giobe | Librerie Standard | Allegati | Applicazioni | Info | Download
PROCEDURE  »   Caratteri | Mouse | Tastiera | Tempo, Data & Ora
Box | Cornici | Cursore | Aree a Riga Intera | Aree a Schermo Totale
FUNZIONI  »   Caratteri | Mouse | Tastiera | Tempo, Data & Ora
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