Sezione![]() |
Indirizzi Base
Registri Interni
|
Capitolo 1 |
Il Processore e il Debugger |
DEBUG 11/22 [39 di 60] |
|
|
|
Aggiornato 24 settembre 2003 e 17 febbraio 2005 |
![]() |
|
![]() | Sebbene sia ormai chiaro che l'ambiente debug non sia particolarmente adatto al progetto (ma indispensabile nel collaudo...) nelle rare occasioni in cui viene deputato a tale compito può essere necessario spostare una certa quantità di bytes per poterne intromettere altri. |
![]() | In realtà più che di uno spostamento si tratta di una copia, dato che i bytes coinvolti saranno ancora presenti nelle locazioni sorgente. |
![]() | Il comando M (MOVE, muovi) si aspetta 3 indirizzi (offset): quello iniziale e finale dell'area in cui sono contenuti i bytes da copiare e quello iniziale dell'area in cui si desidera copiarli. |
![]() | Se l'indirizzo specificato è solo quello di offset i dati visualizzati si ritengono appartenenti al segmento puntato da DS; in condizioni di default tutti e 4 i registri di segmento hanno lo stesso valore, per cui il problema non si pone; naturalmente è possibile passare anche indirizzi completi (cioè anche con il valore del segment). |
![]() | Nell'esempio seguente i primi 32 bytes a partire dall'indirizzo DS:0100H sono copiati nelle locazioni a partire da DS:0500H; la conferma del comando con Invio sembra non produrre alcun effetto, ma la successiva conferma con il comando D mostra l'avvenuto servizio: |
![]() |
Se fai click sull'icona a
sinistra si apre l'Ambiente Assembly
e puoi
provare DEBUG
on-line. Scegli 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 |
![]() |
|
![]() | Il comando può essere dato passando l'indirizzo iniziale della prima area e la lunghezza (espressa con una L seguita dal numero esadecimale delle locazioni da copiare) seguito dall'indirizzo iniziale della seconda area: |
![]() |
|
![]() | Non possiamo passare oltre senza sottolineare la magia di questo comando: se l'area sorgente e quella di destinazione si sovrappongono la copia viene portata a termine senza perdita di informazione; naturalmente l'area sorgente non potrà rimanere inalterata se quella di destinazione la copre! |
![]() |
|
![]() |
Capitolo 1 |
![]() |
DEBUG 11/22 |
![]() |
![]() |
![]() |
||
39 di 60 |
|
|
|
|
Home
![]() |
|
|||||||
|
Motore Ricerca |
|