Mai dire mai! Se i valori presenti in memoria sono
particolarmente significativi può essere necessario confrontarli tra loro,
sebbene questo evento sia poco probabile; in ogni caso la sintassi prevede
al solito 2 modi, sostanzialmente uguali.
Il comando C
(COMPARE, confronta) si aspetta 3 indirizzi
(offset): quello iniziale e finale
della prima area e quello iniziale
della seconda area.
Naturalmente è possibile passare anche
indirizzi completi (cioè anche con il valore del segment);
se l'indirizzo specificato è solo
quello di offset i dati visualizzati si ritengono
appartenenti al segmento puntato da DS;
in condizioni di default (come quelle in cui operiamo ora) il problema non
si pone (tutti e 4 i registri di segmento hanno lo stesso valore).
Il comando C
risponde mostrando (purtroppo velocemente...) l'indirizzo completo e il
contenuto di entrambe le aree, nella sequenza:
Nell'esempio seguente sono confrontate le 2
aree DS:0100H e DS:0200H;
poichè il loro contenuto è noto (per effetto degli esercizi fatti nella
pagina precedente) il risultato del confronto è piuttosto gratificante:
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
Se le 2 aree di memoria contengono gli stessi bytes non
viene mostrato alcun valore; è il caso del seguente esempio nel quale
entrambi gli indirizzi iniziali di ciascuna area sono volutamente uguali a DS:0100H:
Anche in questo caso 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
confrontare) seguito dall'indirizzo iniziale
della seconda area: