Sezione |
Indirizzi Base
Registri Interni
|
Palestra Livello Apprendisti Livello Esperti |
Programmare in Assembly |
Esercizio n° A019 3/4 [99 di 157] |
|
|
||
Gestione Numeri Binari -
Conversione da byte a 2 caratteri Ascii EXAD - Byt2Asc da Libreria Legge le prime 265 locazioni della Memoria e ne mostra il valore |
||
Analisi del Codice - Definizione di un Puntatore di Memoria |
|
Il compito richiesto è quello di mostrare 256 bytes consecutivi, organizzati in una matrice 16x16; per questo sarà sostanzialmente uguale a quello assicurato dall'esercizio EsA017.ASM, con eccezione per l'informazione che viene messa a video. |
|
Data per spiegata la fase iniziale (Desktop) e finale (rientro al DOS) ti propongo la mia soluzione: |
|
|
Esercizio |
NB: se il testo nell'Area
ti
sembra strano installa il font Giobe.TTF: clicca qui!! |
|
La prima istruzione fissa il colore delle 256 stringhe. |
|
Le successive 3 istruzioni sono degne di nota: servono per creare un puntatore alla zona di memoria che si desidera analizzare. |
|
Un puntatore di memoria
si definisce con l'azione combinata di 2
registri, uno di segmento
e un di offset; può essere conveniente e necessario consultare
questa pagina,
per rinfrescarti le idee in merito:
|
|
Con le scelte imposte dal programma il segmento (cioè l'area di 65536 locazioni consecutive) gestito dalla coppia ES:DI è praticamente sovrapposto all'area da analizzare; mantenendo invariato ES e variando progressivamente DI è possibile scorrere tutta questa grande area. |
|
Con un piccolo sforzo di concentrazione è facile capire
che:
|
|
Possiamo concludere che la predisposizione della coppia ES:DI al valore 0000:0000, consente la visualizzazione di un numero ben più grande dei 256 bytes richiesti e mostrati da questo progetto; se ti organizzi (ma non è una cosa immediata) puoi provare a visualizzarne altri... |
|
La gestione della matrice 16x16 è chiamata a gestire 2 cicli annidati, con una tecnica già ampiamente nota; l'unica differenza sta nel modo con cui viene assunto il byte da visualizzare. |
|
In armonia con la premessa su ES:DI è chiaro che a questo puntatore spetterà il compito di indicare al processore la locazione da cui prelevare il valore a 8 bit in essa conservato: l'istruzione che esegue concretamente questo servizio è: MOV AL,ES:[DI]. |
|
Da notare, infine, che non è necessario includere nel programma la Procedura Byt2Asc essendo già disponibile nella Libreria Giobe.LIB/ASM; basterà dichiararla EXTRN all'inizio del sorgente ASM. |
|
Palestra Apprendisti | Esercizio n° A019 3/4 | |||||||
99 di 157 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|