Libreria delle ProcedureGestione Box

Entra nella Libreria GIOBE.TPU

 Box1

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 pụ 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.
bulletLe dimensioni (alto, largo) del Box, in funzione dei parametri passati alla procedura, sono calcolate in Pascal.
bulletAnche la stampa dei bytes viene gestita in Pascal da un ciclo Repeat .. Until, all'interno del quale l’indirizzo fisico corrente è calcolato a partire dai parametri ‘ri’ e ‘co’.sulla base del fatto che ciascuna colonna porta il contributo di 2 bytes e ciascuna riga, essendo composta da 80 colonne, contribuisce con 160 bytes.
    
Codice Sorgente   Mostra Effetto Esegui il Programma Scarica l'Esempio d'Applicazione
PROCEDURE Box1(ri,co,ri1,co1,txt,sfo:byte;carat:char);
VAR indirizzo,n,alto,largo:word;
BEGIN
 
n:=0;
 
alto:=ri1-ri+1;
 
largo:=co1-co+1;
 
REPEAT
 
indirizzo:=(co-1)*2+(ri-1+n)*160;
  n:=n+1;
  asm
    PUSH  ES
        
    PUSH  DI           ;Salvataggio dei registri coinvolti
    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,largo
@@1:MOV   ES:[DI],AX   ;Sposta Ascii/Attributo in Ram
   
INC   DI           ;
   
LOOP  @@1          ;
   
POP   CX         
    POP   BX           ;Recupero  dei  registri  coinvolti
    POP   DI           ;
    POP   ES           ;
  end;
 
UNTIL n=alto;
END;
    
bulletIl codice sviluppa le seguenti parti:
bulletcalcolo delle dimensioni del Box desiderato (in Pascal, zona marrone)
bulletcalcolo dell'indirizzo corrente dei caratteri da salvare (in Pascal, zona gialla)
bulletsalvataggio dei registri coinvolti
bulletcreazione del puntatore ES:DI all'indirizzo logico di destinazione (zona verde)
bullettrasformazione dei parametri 'txt','sfo' nel byte di attributo di colore,lasciato in AH (zona blu)
bulletmemorizzazione in Ram Video di tutte le coppie di bytes necessari ai caratteri da salvare (zona rosa)
bulletrecupero dei registri coinvolti
    
Pagina Precedente Box Pagina Successiva   Box1 Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Procedure Box"
Esempio Sorgente Mostra
11 di 16

    

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