| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Capitolo 1 | 
| Il Processore e il Debugger | 
      DEBUG 11/22 [39 di 60]  | 
 
  | 
| 
       
  
    
      
        | 
      
       
  | 
      Aggiornato 24 settembre 2003 e 17 febbraio 2005 | 
| 
     | 
    
  | 
  
| Sebbene sia ormai chiaro che l'ambiente debug non sia particolarmente adatto al progetto (ma indispensabile nel collaudo...) nelle rare occasioni in cui viene deputato a tale compito può essere necessario spostare una certa quantità di bytes per poterne intromettere altri. | |
| In realtà più che di uno spostamento si tratta di una copia, dato che i bytes coinvolti saranno ancora presenti nelle locazioni sorgente. | |
| Il comando M (MOVE, muovi) si aspetta 3 indirizzi (offset): quello iniziale e finale dell'area in cui sono contenuti i bytes da copiare e quello iniziale dell'area in cui si desidera copiarli. | |
| Se l'indirizzo specificato è solo quello di offset i dati visualizzati si ritengono appartenenti al segmento puntato da DS; in condizioni di default tutti e 4 i registri di segmento hanno lo stesso valore, per cui il problema non si pone; naturalmente è possibile passare anche indirizzi completi (cioè anche con il valore del segment). | |
| Nell'esempio seguente i primi 32 bytes a partire dall'indirizzo DS:0100H sono copiati nelle locazioni a partire da DS:0500H; la conferma del comando con Invio sembra non produrre alcun effetto, ma la successiva conferma con il comando D mostra l'avvenuto servizio: | 
| 
          
         | 
      
   
          Se fai click sull'icona a 
          sinistra si apre l'Ambiente Assembly
          
          e puoi 
           
          
          provare DEBUG 
           
          
           on-line. Scegli il pulsante di opzione "Aprire il file" o "Esegui l'applicazione" e conferma con OK. NB: alcuni gestori di protezione (per esempio SP2 di WinXP) non ti consentono questa operazione: in questo caso scrivi c:\arch-lab\bin\sys\assembler.pif direttamente nel campo indirizzo del Browser  | 
    
      ![]()  | 
    |
| 
     
  | 
  
| Il comando può essere dato passando l'indirizzo iniziale della prima area e la lunghezza (espressa con una L seguita dal numero esadecimale delle locazioni da copiare) seguito dall'indirizzo iniziale della seconda area: | 
      ![]()  | 
    
| 
     
  | 
  
| Non possiamo passare oltre senza sottolineare la magia di questo comando: se l'area sorgente e quella di destinazione si sovrappongono la copia viene portata a termine senza perdita di informazione; naturalmente l'area sorgente non potrà rimanere inalterata se quella di destinazione la copre! | 
      ![]()  | 
    
  | 
| 
      
       |  
    Capitolo 1 | 
      
       | 
    DEBUG 11/22 | 
    
    ![]()  | 
    
    ![]()  | 
    
    ![]()  | 
 ||
| 39 di 60 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |