| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Capitolo 1 | 
| Il Processore e il Debugger | 
      DEBUG 19/22 [47 di 60]  | 
 
  | 
| I comandi più importanti del debugger sono certamente quelli descritti in questa pagina e nella successiva: la loro azione è rivolta decisamente al collaudo di un programma, cioè alla sua esecuzione controllata. | 
Benedetto sia Debug e il suo inventore!
| Se il tuo programma fa i capricci e il tuo umore assomiglia ad una notte senza luna, basta forzare l'esecuzione fino ad un certo punto sicuro (comando G) e poi procedere a piccoli passi (comando T) evitando di eseguire (comando P) le procedure personali (riconoscibili dallo mnemonico CALL) o di sistema (attivate dall'istruzione INT). | |
| L'errore salta fuori da solo, di solito con un ghigno di superiorità, per farti capire quanto sei frescone... Non dimenticare: | 
il computer ha
sempre ragione....
per il semplice fatto che tu lo hai istruito
| 
     
  | 
  
| 
     | 
    
  | 
  
| Il comando T (TRACE, traccia) esegue una o più istruzioni; di solito viene usato senza parametri, al fine di eseguire l'istruzione corrente (cioè quella puntata da CS:IP); subito dopo visualizza automaticamente la nuova situazione dei registri e le informazioni relative all'istruzione cha sta per essere eseguita (indirizzo logico, codici associati e stringa mnemonica). | |||||
| La tecnica garantita da questo comando è nota come esecuzione passo-passo. | |||||
Questo comando consente l'uso di 2
    parametri, entrambi poco pratici (almeno dal mio punto di vista):
  	
  | 
| Dopo aver caricato il programma prova.com, usato nel capitolo 2 per esercitarci nella sua creazione, e dopo averlo visualizzato con il comando U (parte alta dell'immagine), possiamo vedete l'effetto dell'esecuzione passo-passo delle prime 3 istruzioni (parte bassa): | 
| NB: | per poter vedere questo effetto
	devi prima scaricare il file eseguibile
	prova.com nella cartella di lavoro dell'Ambiente 
	Assembler; per fare questo devi:
  | 
  
| 
          
         | 
      
   
          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  | 
    
| -f 100 1000 00 -n prova.com -l -u 11A0:0100 B400 MOV AH,00 11A0:0102 B003 MOV AL,03 11A0:0104 CD10 INT 10 11A0:0106 B400 MOV AH,00 11A0:0108 CD16 INT 16 11A0:010A B44C MOV AH,4C 11A0:010C CD21 INT 21 11A0:010E 0000 ADD [BX+SI],AL  | 
    |
| -t AX=0000 BX=0000 CX=000E DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=11A0 ES=11A0 SS=11A0 CS=11A0 IP=0102 NV UP EI PL NZ NA PO NC 11A0:0102 B003 MOV AL,03 -t AX=0003 BX=0000 CX=000E DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=11A0 ES=11A0 SS=11A0 CS=11A0 IP=0104 NV UP EI PL NZ NA PO NC 11A0:0104 CD10 INT 10 -t AX=0003 BX=0000 CX=000E DX=0000 SP=FFF8 BP=0000 SI=0000 DI=0000 DS=11A0 ES=11A0 SS=11A0 CS=0212 IP=08A9 NV UP DI PL NZ NA PO NC 0212:08A9 2E803EA70802 CMP Byte Ptr CS:[08A7],02 CS:08A7=00  | 
    |
| 
     
  | 
  
Osserviamo con calma cosa ci fornisce Trace:
  	
 
 
 
 
  | 
  | 
| 
      
       |  
    Capitolo 1 | 
      
       | 
    DEBUG 19/22 | 
    
    ![]()  | 
    
    ![]()  | 
    
    ![]()  | 
 ||
| 47 di 60 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |