La lettura della memoria fisica non è il vero problema da risolvere: qualunque processore recupera il suo contenuto (un byte, 8bit) con una sola istruzione, per esempio MOV AL, ES:[DI] , che lascia nel suo registro accumulatore AL il byte contenuto nella locazione puntata da ES: DI , il puntatore caricato con l'indirizzo logico corrispondente a quello fisico desiderato.
L'indirizzo logico si predispone caricando i due registi ES e DI con le desiderate parti d'indirizzo fisico ; per esempio per scaricare il contenuto dell'indirizzo 001A8H si può usare questo codice:
Il problema grosso è ora interpretare a video il valore binario presente in AL: la cosa non è banale e serve un algoritmo di conversione adatto allo scopo ; lo stesso vale per mostrare a video l'indirizzo segmentato della locazione sorgente del dato.codice:MOV AX,0000H MOV ES,AX MOV DI,01A8H MOV AL,ES:[DI]
In definitiva si tratta di scrivere 2 procedure specializzate, da Byte o da Word a stringa ascii esadecimale; un esempio concreto (... fatti, non parole) lo puoi vedere nella seguente figura:
che mostra l'effetto di un codice che legge le prime 128 locazioni della Memoria RAM e ne mostra il valore esadecimale, in gruppi di 16, come DEBUG.. In aggiunta mostra l'indirizzo segmentato di ogni gruppo.
Ogni dettaglio del progetto è disponibile qui .
codice:Giobe®2000 - Tutto sull'Assembly - Lezioni, programmi, segreti, trucchi


Rispondi quotando