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 20/22 [48 di 60] 

    

 

Aggiornato 17 febbraio 2005
    Comando P -  Esegue le procedure di un programma eseguibile 
     
bulletIl comando P (PROCEED, procedi) esegue un'intera procedura, di solito rappresentata dall'istruzione CALL xxxx o INT xyH:
bulletnel primo caso si tratta di un sottoprogramma proprietario del codice eseguibile sotto test, normalmente allocato nel medesimo segmento di codice dell'istruzione.
bulletINT rappresenta invece sempre una procedura di sistema, sempre esterna al segmento del nostro codice:
bulletse è una funzione BIOS trova posto nella parte più alta del primo mega di memoria, nell'area fisica che va dall'indirizzo F000H, a meno che non sia stata "rilocata" da programmi di gestione, come drivers o applicativi residenti in memoria. Capita spesso che la scheda video si appropri del vettore INT 10H, mappandone i servizi dentro la sua rom, dall'indirizzo C0000H
bulletse è una funzione DOS è collocata nella parte bassa della memoria: un indirizzo verosimile è per esempio 0E000H
bulletse è una funzione speciale (per esempio quelle del mouse, attivate con INT 33H) è allocata in posizioni non molto distanti da quelle del DOS, per esempio a 11000H

      

bulletDunque, quando il debug ci presenta una di queste istruzioni:
bulletè assolutamente necessario dare il comando P se non desideriamo esplicitamente entrare nella procedura chiamata da CALL(per verificarne passo-passo il funzionamento).
bulletci conviene dare il comando P per evitare di entrare nella procedura di sistema chiamata da INT (verificarne passo-passo il funzionamento è inutile e controproducente).

      

bulletQuesto comando consente anche di eseguire in blocco le istruzioni ripetute (quelle con prefisso REP) e le istruzioni gestite da LOOP: in questo caso può essere conveniente alternare questa possibilità a quella offerta dal comando T, più adatto per cercare e trovare imperfezioni durante l'esecuzione di queste procedure iterative.

      

    
    Comando G -  Esegue un programma
     
bulletIl comando G (GO, vai!) esegue tutto il programma; se viene dato senza parametri inizia l'esecuzione del programma presente in memoria a partire dall'indirizzo CS:0100H; il segmento di default è ovviamente quello di codice, CS.
bulletNaturalmente l'esecuzione "diretta" (senza parametri) del programma non ha senso: per fare questo basta lanciare l'eseguibile dal prompt del Dos, senza scomodare il debugger.
bulletLo scopo di G è quello di eseguire in blocco un certo numero di istruzioni, per poi proseguire passo-passo con il comando T o con il comando P; per fare questo è sufficiente aggiungere un indirizzo dopo la G, confermando con Invio; il programma sarà eseguito fino al punto indicato.
bulletLa sequenza di azioni consigliata per la ricerca di malfunzionamenti è frutto dell'esperienza; personalmente seguo questo metodo:
bulletmi procuro la stampa (su carta) delle istruzioni da esaminare, magari in forma LST (cioè complete di indirizzi offset e bytes associati alle istruzioni)
bulletapro debug dal DOS e mi preparo l'ambiente migliore (pulizia con il comando F, caricamento del file con i comandi N e L, in sequenza)
bulletscorro con il comando U, dato più volte, il codice disassemblato per verificare che quanto vedo coincide con il listato (cosa ovvia, se non ho commesso errori, quindi non del tutto scontata...)
bulletdopo aver annotato l'indirizzo dell'istruzione successiva a quella fino alla quale voglio eseguire il programma (per esempio 010AH, nell'immagine della figura seguente) do il comando G 010A e confermo con Invio.
              
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
-f 100 6000 00
-n prova.com
-l
-u
1311:0100 B400   MOV AH,00
1311:0102 B003   MOV AL,03
1311:0104 CD10   INT 10
1311:0106 B400   MOV AH,00
1311:0108 CD16   INT 16
1311:010A B44C   MOV AH,4C
1311:010C CD21   INT 21
1311:010E 0000   ADD [BX+SI],AL
-g 10a
AX=1C0D BX=0000 CX=000E DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=1311 ES=1311 SS=1311 CS=1311 IP=010A NV UP EI PL NZ NA PO NC
1311:010A B44C   MOV AH,4C  
-

      

bulletDa questo momento si prosegue con il comando comando T, osservando con estrema attenzione i nuovi valori dei registri (soprattutto quello delle flag).

      

Suggerimento Ti posso consigliare un altro modo molto gratificante di eseguire questo collaudo:
torna momentaneamente in ambiente windows (con il tasto WINDOWS, o semplicemente con Alt-Invio): la pagina DOS in cui lavora debug con il programma eseguibile, Prova.COM, viene così costretta in una finestra, nel desktop. 
apri un'altra finestra DOS (icona MsDOS o su quella Assembly, se disponi del mio ambiente...) e affiancala alla precedente.
apri nella seconda finestra Qedit con il programma sorgente, Prova.ASM.
esegui le procedure indicate sopra nella prima finestra e tieni d'occhio il codice sorgente corrispondente nella seconda!!!
              

      

Ricorda... Quando utilizzi il comando G fai molta attenzione a specificare un indirizzo corretto, altrimenti rischi di mandare in crash il computer!!

    

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