Libreria delle ProcedureGestione Area a Riga Intera

Entra nella Libreria GIOBE.TPU

 Riempi3 

CODICE SORGENTE [3 di 4]  

    
La procedura è scritta in linguaggio Assembly. è 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).
La procedura accede direttamente alla Ram Video [per saperne di più consulta la Scheda nella Sezione Dentro il Computer].
La procedura stampa almeno 80 carattericarat’ saltando ogni intermediario software, direttamente in Ram Video.
Per calcolare l’indirizzo fisico del primo carattere di ciascun gruppo di 80*n  viene usato un algoritmo in Pascal: poiché ciascuna di essi porta il contributo di 2 bytes sono necessari160 bytes.
Anche per calcolare il numero di caratteri da stampare (appunto 80*n) viene usato un algoritmo in Pascal: il moltiplicatore “n” è dato dalla differenza numerica tra “rigF” e “rigI".
 
Codice Sorgente   Mostra Effetto Esegui il Programma Scarica l'Esempio d'Applicazione
PROCEDURE Riempi3(rigI,rigF,txt,sfo:byte; carat:char);
VAR indirizzo,quanti:word;
BEGIN
  indirizzo:=(rigI-1)*160;
  quanti:=(rigF-rigI+1)*80;
  asm
    PUSH  ES
          ;Salvataggio dei registri coinvolti
    PUSH  DI          ;
    PUSH  BX          ;
    PUSH  CX
    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   CX,quanti   ;
@@1:MOV   ES:[DI],AX  ;Sposta le  80xN  coppie  di  bytes
 
   INC   DI          ;Carattere/Attributo direttamente
    INC   DI
          ;in Ram Video
    LOOP  @@1
        ;
    POP   CX          ;
    POP   BX
          ;Recupero  dei  registri  coinvolti
    POP   DI
          ;
    POP   ES
          ;
  end;
END;
    
bullet Il codice sviluppa le seguenti parti:
bullet calcolo dell’indirizzo del primo e del numero di caratteri di ciascun gruppo di 80*n, a partire dai parametri ‘rigI’ e ‘rigF’ (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 degli 80*n bytes nelle corrette locazioni Ram Video (zona rosa)
bulletrecupero dei registri coinvolti
    
Pagina Precedente Area Riga Intera Pagina Successiva   Riempi3 Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Procedure a Riga Intera"
Esempio Sorgente Mostra
12 di 13

    

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