Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Palestra Livello Apprendisti Livello Esperti

Home » Programma il Computer » Tutorial Assembly

Palestra Assembly - Home Page

  Programmare in Assembly

Esercizio n° A019 3/4 [99 di 157] 

               

Analisi del Codice · Definizione di un Puntatore di memoria · Conclusioni

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

               

bulletIl 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.

  

bulletData per spiegata la fase iniziale (Desktop) e finale (rientro al DOS) ti propongo la mia soluzione:

  

Console - Video & Tastiera

Esercizio FACILE Esercizio
NB: se il testo nell'Area  ti sembra strano
     
installa il  font
Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile COM Scarica il codice Sorgente ASM

  

bulletLa prima istruzione fissa il colore delle 256 stringhe.

  

bulletLe successive 3 istruzioni sono degne di nota: servono per creare un puntatore alla zona di memoria che si desidera analizzare.

  

bulletUn 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:
bulletnel nostro caso sono coinvolti il registro di segmento ES e quello di offset DI, cosicchè il puntatore è identificato dalla coppia ES:DI
bulletpoichè le prime locazioni della Ram sono allocate a partire dall'indirizzo fisico 00000H, corrispondente all'indirizzo logico 0000:0000, è facile capire che entrambi i registri dovranno essere caricati con il valore 0000H
bulletmentre il registro di offset DI, può essere caricato direttamente (MOV DI,0000H) il registro di segmento ES deve essere caricato tramite registro, nell'esempio AX (MOV AX,0000H, MOV ES,AX)

  

bulletCon 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.

  

bulletCon un piccolo sforzo di concentrazione è facile capire che:
bulletcon ES:DI=0000:0000, si sta puntando la prima locazione fisica della Ram convenzionale
bulletcon ES:DI=0000:0001, si sta puntando la seconda locazione Ram
bulletcontinuando ad aumentare il valore di DI, in pratica si puntano di volta in volta le locazioni successive
bulletcon ES:DI=0000:FFFF il registro di offset DI ha assunto il suo valore massimo e sta puntando l'ultima locazione disponibile, la 65536ma, dentro il segmento puntato da ES

  

bulletPossiamo 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...

  

bulletLa 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.

  

bulletIn 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].

  

bulletDa 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.

    

Pagina Precedente Palestra Apprendisti Pagina Successiva Esercizio n° A019 3/4   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
99 di 157
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

    

PALESTRA » Apprendisti » Es.001 Es.002 Es.003 Es.004 Es.005 Es.006 Es.007 Es.008 Es.009 Es.010 Es.011 Es.012
Es.013 Es.014 Es.015 Es.016 Es.017 Es.018 Es.019 Es.020 Es.021 Es.022 Es.023 Es.024
Es.025 Es.026 Es.027 Es.028 Es.029 Es.030 Es.031 Es.032 Es.033

| Che serve per iniziare | Prima compilazione | Livello Esperti |

TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati