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 6/22 [34 di 60] 

    

 

Aggiornato  24 settembre 2003 e 17 febbraio 2005
    Comando D -  Analizza il contenuto della memoria [prima parte]
     
bulletIl nostro Debug è una vera bomba... Evitiamo, per ora, di assumere files da controllare: già così, da solo, questa utility mostra la sua assoluta versatilità. 

      

Suggerimento Se vuoi trarre il massimo profitto dalle pagine di questo paragrafo ti conviene aprire una shell Dos (cliccando sulla corrispondente icona del menu d'Avvio) e provare in diretta le cose che descriveremo: digita subito DEBUG e, quando appare il trattino, a sinistra, digita i comandi che ti suggerirò, di volta in volta.
Diventerai ben presto autonomo e sicuro e ti verrà voglia di provare da solo... 

      

bulletCominciamo con il comando D, DUMP; già il nome merita una pausa di riflessione:
bulletil sostantivo dump significa letteralmente bidone della spazzatura, posto sudicio, o più elegantemente cestino dei rifiuti;
bulletil verbo dump significa invece rovesciare

      

bullet La brillante verve anglosassone ha colpito ancora... quando si richiede un dump qualcuno ci rovescia il cestino dei rifiuti sulla scrivania...; proprio quello che facciamo noi quando, disperati, ci accorgiamo di avere cestinato, per errore, un documento a cui tenevamo. Il comando D vuota sul video una bella fetta di memoria, mostrandone tutti i dettagli possibili.
bulletAldilà della metafora questo comando è veramente potente, sebbene lo si possa apprezzare solo quando si ha effettivamente qualcosa da cercare; premendo la lettera D, senza nessuna altra specifica, appare a video questa schermata:
              
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

      

bulletNB: la prima cosa che salta agli occhi è la naturalezza con cui DEBUG tratta le informazioni: poiché è uno strumento dedicato all'analisi del processore (i suoi registri) e della memoria ogni numero da esso presentato sul monitor va inteso espresso nella lingua del processore cioè esadecimale.
bulletSi tratta di uno strumento dedicato per cui, in questo ambiente, la presenza della 'H' che ci siamo educati a mettere dopo ciascun numero esadecimale è data per scontata.
bulletNaturalmente la regola vale anche quando saremo chiamati a dare informazioni a DEBUG, per fissare un indirizzo o per predisporre il valore di un registro o di una locazione di memoria... I numeri (esadecimali) digitati dovranno essere forniti senza la 'H' finale!

      

Attenzione ! E' importante ricordare fin d'ora che i numeri esadecimali si possono trattare senza la "H" posteriore solo quando abbiamo a che fare con DEBUG; se è vero che esso non capirebbe (segnalando errore...) comandi del tipo D  0100H  è altrettanto vero che l'assemblatore farebbe altrettanto se invece dimenticassimo di metterla . Questo concetto è ripreso e spiegato in questa pagina.

      

bulletDetto questo, analizziamo la videata ottenuta; sono 8 righe così strutturate:
bulletil campo di sinistra (in verde) mostra l'indirizzo segmentato della prima locazione di memoria che andremo ad ispezionare: il puntatore è inteso espresso in esadecimale.
bulletil campo centrale (in celeste) elenca il contenuto delle 16 locazioni consecutive, a partire da quella indirizzata dal primo campo, espresso in esadecimale.
bulletil campo di sinistra (in giallo) cerca di tradurre in forma Ascii il contenuto delle medesime locazioni.

      

bulletLe 7 righe successive hanno la medesima struttura e descrivono altre 16 locazioni ciascuna, per un totale di 128 (un ottavo di kBytes).

      

bulletValutiamo in modo critico le informazioni di questa immagine:
bulletl'indirizzo di segmento è, per tutti i puntatori, sempre lo stesso (nell'esempio 0DE0): il suo valore dipende esclusivamente da quello della prima zona di ram libera al momento del caricamento del debugger in memoria; questo ultimo riserva ai nostri esperimenti un intero segmento che comincia proprio da 0DE0:0000.
bulletl'indirizzo di offset iniziale è 0100: il suo valore risente del fatto che Debug ha riservato per se stesso le prime 256 locazioni, per ospitare, nella logica dei programmi gestiti dal Dos, il proprio PSP).
bulletla sequenza dei numeri seguenti è esattamente la traduzione esadecimale di quello che debug ha effettivamente trovato: il loro valore è assolutamente imprevedibile e può essere cambiato in ogni momento, senza provocare alcun danno, come vedremo nelle prossime pagine.
bulletla zona gialla dei caratteri Ascii è illeggibile, tanto più quanto maggiore è la casualità dell'area di memoria analizzata; tutti i bytes che corrispondono a caratteri Ascii stampabili sono mostrati per quello che sono, mentre tutti gli altri (da 00H a 1FH, caratteri di controllo, e da 80H a FFH, caratteri ascii estesi) sono visualizzati con un punto.

      

bulletPer motivi di chiarezza la sequenza dei 16 bytes di ciascuna riga è divisa in 2 da un trattino.
bulletSe il comando D viene dato di nuovo, viene rovesciata a video la successiva "cestinata" di 128 bytes, e così ad oltranza.
bulletSe si desidera tornare all'inizio o se si vuole analizzare un'altra parte della memoria basta specificare l'indirizzo subito dopo la lettera D, ma di questo parleremo nella prossima pagina.

    

Pagina Precedente Capitolo 1 Pagina Successiva DEBUG 6/22   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
34 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