Libreria delle ProcedureGestione a Schermo Totale

Entra nella Libreria GIOBE.TPU

 Recup 

CODICE SORGENTE [3 di 3]  

    
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]
bulletIl compito della procedura è quello di riportare in Pagina 0 una immagine precedentemente salvata in Ram Video
bulletViene anzitutto creato il puntatore ES:SI alla prima locazione della Pagina alternativa della Ram del Video da cui estrarre i 2000 bytes associati alle coppie Ascii/Colore di ciascuno dei caratteri precedentemente salvati, riportandoli in Pagina 0, con l'aiuto del puntatore DS:DI.
bulletL’indirizzo fisico di ciascuna Pagina Video alternativa è logicamente distante 4096 bytes (4k) dal precedente, in esadecimale 1000H; è per questa ragione che, per localizzare la Pagina alternativa che ci interessa basta moltiplicare questo offset per il numero espresso dal parametro "numPAG"). Se la Pagina 0 è localizzata all’indirizzo B800:0000H, la Pagina 1 comincerà a B800:1000H, la Pagina 2 a B800:2000H, e così via.
    
Codice Sorgente        
PROCEDURE Recup (numPAG:byte);
BEGIN
  asm
    PUSH  ES
          
    PUSH  DS
    PUSH  DI           ;Salvataggio dei registri coinvolti
    PUSH  SI           ;
    PUSH  CX           ;
    CLD
    MOV   AX,0B800H    ;Copre  la  Ram  Video  con  i  2
    MOV   ES,AX 
       ;segmenti puntati da ES e DS
    MOV   DS,AX       
;
    MOV   CL,numPAG    ;
    MOV   CH,00H       ;Fissa il puntatore alla prima  lo-
    MOV   AX,1000H    
;cazione   sorgente   nella  pagina
    MUL   CX          
;alternativa indicata da numPAG
    MOV   SI,AX  
      ;
   
MOV   DI,0000H     ;Fissa il puntatore alla prima  lo-
                      
;cazione destinazione  in Pagina 0
   
MOV   CX,2000      ;Copia l'intera pagina di caratteri
   
REP   MOVSW        ;dalla pagina alternativa
    POP   CX  
        ;
    POP   SI           ;
    POP   DI
           ;Recupero  dei  registri  coinvolti
    POP   DS           ;
    POP   ES
           ;
  end;
END;
    
bulletIl codice sviluppa le seguenti parti:
bulletsalvataggio dei registri coinvolti
bulletprepara il puntatore di Segmento ES per coprire la RamVideo (zona verde)
bulletprepara il puntatore di Offset SI in RamVideo all'indirizzo logico della prima locazione della pagina sorgente (Pagina alternativa, zona blu)
bulletprepara il puntatore di Offset DI in RamVideo all'indirizzo logico della prima locazione della pagina destinazione (Pagina 0, zona celeste)
bulletsposta le coppie di bytes associati a tutti i caratteri dalla Pagina alternativa (zona rosa)
bulletrecupero dei registri coinvolti
    
Pagina Precedente Schermo Totale Pagina Successiva   Recup Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Schermo Totale"
Esempio Sorgente          
7 di 11

    

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