| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Schede del Tutorial | 
| PSP - Prefisso del Segmento di Programma | 
      SCHEDA n° 05 [ 5 di 5]  | 
   
  | 
| 
     | 
    
  | 
  
| Una delle cose più utili della programmazione in assembly è la possibilità di passare parametri al nostro programma prima che esso venga eseguito, cioè nel momento del suo lancio, al prompt del Dos. | |||||||
La tecnica è estremamente banale ed efficace:
    basta elencarli, uno dopo l'altro, dopo il nome del programma e separati (di
    solito, ma non necessariamente) da spazi. L'esempio seguente passa al
    programma Ora.com il valore di
    partenza (il solo parametro 12:20:00):
 
 
  | |||||||
La forza di questa opportunità è maggiore
    della tua attuale potenziale fantasia; con essa si può: 
  	
  | |||||||
| Vediamo la situazione in memoria, dentro il PSP, dopo il comando suggerito precedentemente: | 
| 
     
  | 
      
| C:\ARCH-LAB\LAVORO>debug ora.com 12:20:00 -d 0080 0CB8:0080 09 20 31 32 3A 32 30 3A-30 30 0D 00 00 00 00 00 . 12:20:00.... 0CB8:0090 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ..............  | 
                
| 
     
  | 
      
| Osserviamo che solo 11 bytes sono stati coinvolti, esattamente 2 in più rispetto il numero dei caratteri digitati dopo il nome del programma eseguibile al prompt del Dos (che, compreso lo spazio iniziale, sono 9, cioè: " 12:20:00"). | |||||
In pratica quella dei parametri
    è una struttura ben precisa:
  	
  | 
| 
     
  | 
      
| In pratica il testo del parametro inizia sempre alla locazione 0082H e non può essere più lungo di 126 caratteri; in caso contrario andrebbe a sovrascrivere il codice macchina del nostro eseguibile, senza dubbio presente a partire da 0100H. In ogni caso il Dos previene (ed evita) questa eventualità limitando d'ufficio il numero di caratteri digitabili in una riga di comando, e segnalando acusticamente con lo speaker di sistema ogni eventuale abuso. | 
| 
     
  | 
      
| Data l'importanza di questa opportunità mostriamo in che modo il nostro programma può leggere i parametri passati a livello dos (cioè digitati dopo il nome del programma). Prendiamo come riferimento il comando dato all'inizio della pagina per inizializzare l'ora. | |||||
La figura mostra l'estratto della
     zona
    parametri del PSP e, sotto, il codice necessario per gestirla: 
 
 
  | |||||
| Per funzionare correttamente la zona dati del nostro programma deve prevedere una adeguata quantità di bytes, identificata dall'etichetta depPAR, in cui trasferire i caratteri del parametro. | |||||
| Il codice suggerito deve essere il primo ad essere eseguito, per evitare di perdere la precaria informazione del PSP. | 
  | 
| 
      
       |     
    Scheda n° 05 | 
      
       | 
    Prefisso di Segmento di Programma | 
     | 
    
    
     | 
    
     | 
 ||
| Scheda n° 05 - 5 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |