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

Palestra Livello Apprendisti Livello Esperti

Home » Programma il Computer » Tutorial Assembly

Palestra Assembly - Home Page

  Programmare in Assembly

Esercizio n° A001 6/9 [10 di 157] 

               

Analisi del Codice · Compilazione (UnaTantum) · Analisi in ambiente Debug · Analisi del Listato · Conclusioni

Gestione Caratteri - Stampa di un solo carattere
Analisi in ambiente Debug [1 di 2]

               

bulletLa assoluta semplicit del sorgente mi ha suggerito l'idea di farti fare un po' di pratica con Debug.
bulletL'ambiente Debug benedetto da Dio; in pi occasioni mi sono sciolto in lacrime nel decantarne le doti: semplice, immediato, essenziale, vincente..

 

bulletQualunque malfunzionamento pu essere facilmente trovato se si esegue il programma passo-passo in questo ambito.

 

bulletInoltre Debug consente di "fare la mentalit": le informazioni che fornisce sono assolutamente vicine a quelle di cui godr effettivamente il processore, arrivando a mostrare come variano le risorse (registri, memoria, stack, e cos via..) dopo l'esecuzione di ogni singola istruzione.

 

bulletA partire da questo esercizio desidero insegnarti qualche trucco, un po' per volta, legato all'ambiente Debug .

 

Apri una finestra DOS su Arch-Lab Se hai gi chiuso l'Ambiente Assembly fai click sull'icona a sinistra per aprirlo di nuovo.
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

  

bullet Nella cartella C:\Arch-Lab\Lavoro, aperta automaticamente nella shell DOS, c' (dopo la compilazione condotta nella pagina precedente) l'eseguibile Esa001.COM ; vediamo di analizzarne la struttura con Debug...
bullet Al prompt digita debug esa001.com e conferma con Invio; con il comando interno - u vedrai le seguenti informazioni:

  

Console - Video & Tastiera

Esercizio MOLTO FACILE Esercizio
Apri una finestra DOS su Arch-Lab Scarica il file
EsA001.TXT
Mostra l'Effetto Prova l'eseguibile COM Scarica il codice Sorgente ASM

  

bulletL'analisi della figura ti consente di vedere come la fase di creazione (assemblatore, linker e Exe2Bin) ha tradotto le tue istruzioni e ti permette di prendere confidenza con i codici operativi (puri numeri binari) corrispondenti; notiamo:
bulletil debugger esprime le informazioni esclusivamente in esadecimale, ma non ammette (e non mette) la H finale
bullet per ogni istruzione il debugger mostra l'indirizzo in cui stata compilata, i codici operativi corrispondenti e la stringa mnemonica
bulletl'indirizzo mostrato segmentato, cio composto da un segment e un offset:
bullet il valore del segment irrilevante: nel mio esempio vale 1B62H, ma sul tuo computer potrebbe avere valore diverso perch dipende dall'effettivo segmento di memoria in cui dos ha caricato il programma Debug, che a sua volta ha caricato il nostro EsA001.COM
bulletla parte offset (nell'esempio da 0100H in poi) invece molto istruttiva: l'esatto indirizzo non rilocabile di ciascuno dei byes del codice macchina presente dell'eseguibile COM; osservandolo con attenzione ci accorgiamo che esso viene incrementato, di volta in volta, con il numero di bytes di cui composta l'istruzione corrente
bullet le istruzioni INT hanno codice operativo CDH (il secondo bytes l'operando con il numero di INT desiderata)
bullet le istruzioni MOV non hanno lo stesso codice operativo: quelle con AH hanno codice B4H e quelle con AL hanno codice B0H
bullet l'istruzione iniziale di salto JMP ha codice operativo EBH e l'operando, uguale a 01H, sta ad indicare che deve essere saltato un solo byte
bullet l'istruzione INT 21 l'ultima del nostro eseguibile; dopo di essa sono mostrate istruzioni dall'aspetto strano, ma la loro presenza irrilevante perch quando il processore eseguir questa importante chiamata di sistema, il controllo sar gi passato ad altro codice eseguibile, non pi appartenente a EsA001.COM  (per cui le istruzioni dall'aspetto strano non saranno mai eseguite).

    

Pagina Precedente Palestra Apprendisti Pagina Successiva Esercizio n° A001 6/9   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
10 di 157
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

    

PALESTRA » Apprendisti » Es.001 Es.002 Es.003 Es.004 Es.005 Es.006 Es.007 Es.008 Es.009 Es.010 Es.011 Es.012
Es.013 Es.014 Es.015 Es.016 Es.017 Es.018 Es.019 Es.020 Es.021 Es.022 Es.023 Es.024
Es.025 Es.026 Es.027 Es.028 Es.029 Es.030 Es.031 Es.032 Es.033

| Che serve per iniziare | Prima compilazione | Livello Esperti |

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