  | La 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).
  
      | La procedura accede  direttamente
              alla  Ram Video
                  [per saperne di più consulta 
          la
   Scheda nella Sezione
                  Dentro il Computer] |  
      | Il compito della procedura è quello di
                  riportare
                  in Pagina 0 una immagine precedentemente salvata
                  in
                Ram Video |  
      | Viene 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. |  
      | L’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;
              
           | 
         
           
      |