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° A004 5/6 [30 di 157] 

               

Analisi del Codice · Analisi in ambiente Debug · Conclusioni

Gestione Caratteri - Stampa una stringa in bianco e nero
Analisi in ambiente Debug  [3 di 3]

               

bullet Desidero tornare a farti notare come viene codificato l'operando delle 3 CALL (gi trattato nell'esercizio EsA002): i 2 bytes aggiunti dall'assemblatore dopo il codice operativo (E8H) non assomigliano all'indirizzo visibile in chiaro nella parte mnemonica ma si tratta di un numero relativo con segno, detto displacement (spiazzamento), che indica il numero di bytes da saltare in avanti (se positivo) o indietro (se negativo) rispetto alla posizione di partenza.
              
bullet In pi, anche questo numero a 16 bit soggetto alla regola Lo-Hi (Low-High), tipica dei processori della famiglia 80x86, secondo la quale ogni informazione pi grande di 8 bit compilata in memoria alla rovescia.
              

Console - Video & Tastiera

Esercizio FACILE Esercizio
Apri una finestra DOS su Arch-Lab Scarica il file
EsA004.TXT
Mostra l'Effetto Prova l'eseguibile COM Scarica il codice Sorgente ASM
NB: se il click sull'icona nera non funziona scrivi c:\arch-lab\bin\sys\assembler.pif direttamente nel campo indirizzo del Browser

 
bulletNel nostro progetto tutte e 3 le procedure sono esterne e quindi codificate sotto il codice macchina del Main program; per questo tutti e 3 i displacement sono positivi; in dettaglio:
bulletlo mnemonico della procedura chiamata per prima mostra un indirizzo di offset 0160H, codificato con un displacement 0028H, pari a 40 bytes pi avanti, esclusi quelli dell'istruzione di partenza e di arrivo: la procedura puntata la BIOScls
bulletla seconda CALL punta l'indirizzo 0155H (displacement 000FH = 15 bytes pi avanti): esegue la BIOSchr
bulletla terza CALL punta l'indirizzo 0150H (displacement 0004H = 4 bytes pi avanti): esegue la KEYwait
              
bullet A questo proposito ti segnalo un'ultima interessante novit; la parte topica del nostro esercizio (colorata in giallo nella figura) gestisce la stampa dei caratteri ascii della stringa puntata da SI e basa il suo funzionamento su 2 salti interni, uno in avanti, condizionato dalla flag Z (JZ 0149) e l'altro uno indietro, non condizionato (JMP SHORT 013C).
bullet Entrambi i salti hanno un campo d'azione fissato dal rispettivo operando, un displacement (spiazzamento) a 8 bit, codificato con un numero binario con segno; per questo possibile saltare fino a 127 posizioni in avanti (se positivo) e fino a 128 posizioni indietro (se negativo).
              
bullet L'analisi del codice macchina delle 2 istruzioni pu spiegare a meraviglia il meccanismo messo in atto dal processore per eseguirle:
bulletil condizionato salta all'indirizzo 0149H: dopo il codice operativo 74H presenta il byte 06H=+6 , imponendo di saltare 6 bytes in avanti, esclusi quelli dell'istruzione di partenza (JZ 0149) e dell'istruzione di arrivo
bulletil non condizionato salta all'indirizzo 013CH: dopo il codice operativo EBH presente il byte F3H=-13 , imponendo di saltare 13 bytes indietro, inclusi quelli dell'istruzione di partenza (JMP 013C) e dell'istruzione di arrivo
bulletIn entrambi i casi le colorazioni ti aiuteranno a verificare...
              
bullet Come ormai sai anche il file Listato, prodotto su richiesta dallassemblatore, fornisce la codifica (quasi) completa del sorgente ASM; poich in esso questa ambiguit non appare, pu essere utile darci un'occhiata...
bullet Se sei interessato ti ho preparato un estratto significativo di EsA004.LST:
              
Scarica il file
EsA004.LST

    

Pagina Precedente Palestra Apprendisti Pagina Successiva Esercizio n° A004 5/6   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
30 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