| Tutti 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" |
| tutti 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. |
| L'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. |
| E' 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). |
| Il 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). |
| Il 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. |
| Il fatto che i valori imposti dai debugger
siano maggiori fa pensare che essi stessi utilizzino una parte dello
stack per motivi personali... |