| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Palestra Livello Apprendisti Livello Esperti | 
| Programmare in Assembly | 
      INTRODUZIONE [1 di 23]  | 
 
| 
         
  | 
      
  | 
 ||
| Gestione Caratteri - Stampa in posizione dinamica di una cornice di dimensioni fisse | ||
| Analisi del Codice Sorgente [1 di 3] | 
| 
         
  | 
      
| La stampa di una cornice di dimensioni prefissate è piuttosto facile; è necessario anzitutto decidere la sua altezza e la sua larghezza. | |
| Il programma del nostro esempio deve provvedere alla creazione di una cornice in grado di ospitare 10x10 caratteri. | |
| Ciò impone subito una considerazione, solo apparentemente scontata: la dimensione effettiva della cornice deve essere di 12x12, perchè ovviamente anche i caratteri ascii usati per racchiudere l'area vogliono il loro posto.. | 
| 
         
  | 
      
| La prima cosa da fare è, dunque, definire le stringhe necessarie per costruire la cornice: naturalmente sarebbe un'inutile spreco prevederne 12, dato che quelle centrali sono identiche tra loro. | |
| Basterà definire le 2 stringhe esterne (Corn00 e Corn02) e quella dell'elemento centrale (Corn01), tutte rigorosamente lunghe 12 caratteri: | 
| 
         
  | 
      
| 
       
        | 
      
           | 
      
          Esercizio | 
      
    NB: se il testo  nell'Area
       ti 
      sembra strano installa il font Giobe.TTF: clicca qui!!  | 
      
        
         | 
      
        
         | 
      
        
         | 
    
| 
         
  | 
      
Poichè la 
  Macro
  M_msgC stampa 
  ciascuna stringa nel punto 
  che noi desideriamo, sembra sufficiente:
  | 
| 
         
  | 
      
| 
         
  | 
      
| Naturalmente vale la regola secondo cui "quando una parte di programma appare più di una volta c'è qualcosa che non va... (cioè può sempre essere ottimizzarla)" | |
| Anche esteticamente da fastidio dover scrivere 10 volte l'elemento centrale (Corn01) su altrettante righe consecutive, tra le stringhe delle prime 2 (Corn00 e Corn02), per cui conviene affidare questo compito ad un ciclo (loop) predisposto per fare 10 giri... | 
| 
         
  | 
      
| Ma nasce subito il problema: come cambiare la riga dentro il ciclo? E' proprio questo il concetto che ti voglio spiegare: bisogna rendere dinamico il valore numerico della riga di stampa, e ciò si può fare solo affidandosi ad una variabile locale o ad un registro. | 
| 
         
  | 
      
| 
    
     | 
    In tutte le strutture delle mie librerie ho scelto di affidare ai registri DH (per la riga) e DL (per la colonna) le informazioni dinamiche legate alla posizione di stampa corrente, cioè alle coordinate del carattere che sta per essere scritto. | 
  | 
| 
      
       |  
    Palestra Esperti | 
      
       | 
    INTRODUZIONE | 
    
    ![]()  | 
    
    ![]()  | 
    
    ![]()  | 
 ||
| 1 di 23 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |