Libreria delle ProcedureGestione Box

Entra nella Libreria GIOBE.TPU

 RECUPbox 

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 recuperare nella pagina video corrente (Pagina 0) una finestra (caratteri e attributi di colore) precedentemente salvata in una Pagina alternativa della Ram Video
bulletLe dimensioni (alto, largo) del Box, in funzione dei parametri passati alla procedura, sono calcolate in Pascal.
bulletAnche il recupero dei bytes viene gestito 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 RECUPbox(ri,co,ri1,co1,numPAG:byte)
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  SI           ;
    PUSH  CX           ;
   
MOV   CL,numPAG    ;Costruisce il puntatore alle loca-
   
MOV   CH,00H       ;zioni di destinazione in Ram Video
   
MOV   AX,1000H     ;
   
MUL   CX
   
MOV   SI,AX
    ADD   SI,indirizzo
    MOV   AX,0B800H    ;Punta la  locazione  desiderata in
    MOV   ES,AX 
       ;Ram  Video,   ES:DI = ES:indirizzo
    MOV   DI,
indirizzo ;
   
MOV   CX,largo
@@1:MOV   AX,ES:[SI] ;   
    MOV   ES:[DI],AX   ;  
    INC   DI           ;
   
INC   DI           ;
   
INC   SI           ;Sposta Ascii/Attributo in Ram
   
INC   SI           ;
   
LOOP  @@1          ;
    POP   CX
         
    POP   SI           ;
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:SI all'indirizzo logico di destinazione (zona blu)
bulletcreazione del puntatore ES:DI all'indirizzo logico di sorgente (zona verde)
bulletmemorizzazione in Ram Video di tutte le coppie di bytes necessarie ai caratteri da salvare (zona rosa)
bulletrecupero dei registri coinvolti
    
Pagina Precedente Box Pagina Successiva   RECUPbox Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Procedure Box"
Esempio Sorgente Mostra
8 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