Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Capitolo 1

Home » Programma il Computer » Tutorial Assembly

Capitolo 1 - Il processore - Il Debugger

  Il Processore e il Debugger

DEBUG 14/22 [42 di 60] 

    

 

Aggiornato  24 settembre 2003 e 17 febbraio 2005
    Comando R -  Mostra il valore corrente dei Registri CPU
     
bulletIl comando R (REGISTER, registri) senza parametri mostra il contenuto dei registri del processore; naturalmente si tratta di una simulazione o meglio del valore che avrebbero i registri CPU mentre si attende di cominciare l'esecuzione di un programma.
              
Apri una finestra DOS su Arch-Lab Se fai click sull'icona a sinistra si apre l'Ambiente Assembly e puoi provare DEBUG  on-line.
S
cegli 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

      

bulletSe l'indirizzo specificato è solo quello di offset i dati visualizzati si ritengono appartenenti al segmento di default, DS.L'immagine precedente si presta alle seguenti considerazioni:
bulletTutti i registri "comuni" (quelli utente AX, BX, CX e DX, e quelli indice DI e SI, con BP) hanno valore iniziale 0000H. La cosa è ragionevole: debug simula le condizioni ottimali; sebbene non sia indispensabile è bene pensare di iniziare l'esecuzione di un programma con i registri "puliti"
bullettutti i registri di segmento (CS, DS, SS e ES) hanno lo stesso valore; esso non è prevedibile e dipende esclusivamente dall'indirizzo della prima locazione libera in memoria nel momento in cui debug è stato allocato dal loader del dos. 
bulletL'immagine mostra 2 valori nettamente diversi anche se cambia il debugger: con SymbDeb il valore è 1192H mentre con il Debug standard del Dos leggiamo 0DE0H ; questo sta chiaramente ad indicare che nel primo caso l'allocazione del Symbolic Debug ha consumato molta più memoria di quanta ne abbia richiesta il secondo. 
bulletE' molto probabile che il valore che tu stai leggendo nella shell dos in cui provi i comandi che ti descrivo, sia a sua volta diverso da quelli mostrati in figura! ma la cosa non è per nulla importante: basta prendere atto che debug riserverà al programma che stiamo per collaudare un intero segmento, a partire dall'indirizzo logico CS:0000 (nel nostro esempio 1192:0000 o 0DE0:0000, pari all'indirizzo fisico 11920 o 0DE00).
bulletIl puntatore di istruzione (IP) sarà lasciato sempre a 0100H, così come sarebbe in realtà se il programma sotto test fosse allocato in memoria senza la tutela del debugger. Abbiamo più volte sottolineato che il loader del Dos vuole per sè le prime 256 locazioni, per il Prefisso di Segmento di Programma (PSP).
bulletIl puntatore di Stack (SP) ha sempre un valore piuttosto elevato, decisamente grande con SymbDeb, ED5DH, e più verosimile con il debug standard, FFEEH; se il programma da sottoporre a test non fosse ospitato il valore corretto sarebbe FFFEH, solo 2 locazioni sopra la fine del segmento. 
bulletIl fatto che i valori imposti dai debugger siano maggiori fa pensare che essi stessi utilizzino una parte dello stack per motivi personali...

      

bulletUna trattazione a parte merita la visualizzazione dell'ultimo registro, quello dei flag (o delle flag, come piace a me, pensando ad esse per quelle che sono, delle bandiere, femminile!); esso è visualizzato in forma interpretata (zona gialla della figura precedente), cioè al posto dei bit significativi viene mostrata la sigla della flag corrispondente, in accordo con la tabella:

      

FLAG  SET    RESET
Overflow Overflow OV si NV no
Direction Direzione DN decremento UP incremento
Interrupt Interruzione EI abilitato DI disabilitato
Sign Segno NG negativo PL positivo
Zero Zero ZR si NZ no
Auxiliary Carry Riporto ausiliario AC si NA no
Parity Parità PE pari PO dispari
Carry Riporto CY si NC no

      

bulletIl comando RF mostra lo stato corrente delle 8 flag documentate: se si vuole è possibile modificare una o più di esse, semplicemente specificando la sigla del nuovo stato, anche in ordine casuale:
              

      

bullet Di solito il comando è utile per modificare il valore di un registro; per questo è necessario far seguire al comando la sigla del registro desiderato. Non appena si conferma con Invio viene proposto il vecchio attuale e, sulla linea successiva, appare il segno dei 2 punti, dopo il quale è possibile digitare il nuovo valore, da confermare ancora con Invio:
              

      

bulletDa notare che, con SymbDeb il nuovo valore si può dare direttamente dopo il nome del registro, mentre il debug standard segnala errore:
              

      

Suggerimento Il comando R è molto utile e importante: ogni volta che si desidera ricominciare l'analisi e il collaudo di un programma è necessario obbligare il processore a puntare la prima istruzione: non è dunque possibile fare a meno del comando R IP seguito dal valore 0100 !

      

bulletPrima di chiudere mettiamo in evidenza la buona disponibilità di questo comando: dopo aver mostrato il valore corrente di tutti i registri esso aggiunge (bontà sua...) anche l'indirizzo, i bytes e la stringa mnemonica dell'istruzione corrente (in celeste, nella prima figura della pagina) cioè dell'istruzione che sta per essere eseguita (puntata ovviamente da CS:IP).

    

Pagina Precedente Capitolo 1 Pagina Successiva DEBUG 14/22   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
42 di 60
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

    

CAP. 1 » 1. Processore 80x86 2. Istruzioni 80x86  3. Debug  4. La Grande Libreria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati