Sezione |
Indirizzi Base
Registri Interni
|
Palestra Livello Apprendisti Livello Esperti |
Programmare in Assembly |
Esercizio n° A004 5/6 [30 di 157] |
|
|
||
Gestione Caratteri - Stampa una stringa in bianco e nero | ||
Analisi in ambiente Debug [3 di 3] |
|
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. |
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. |
|
Esercizio |
Scarica il file EsA004.TXT |
|||||
Nel 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:
|
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). | |
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). |
L'analisi del codice macchina
delle 2 istruzioni pu spiegare a meraviglia il
meccanismo messo in atto dal processore per eseguirle:
| |||||
In entrambi i casi le colorazioni ti aiuteranno a verificare... |
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... | |
Se sei interessato ti ho preparato un estratto significativo di EsA004.LST: |
Scarica il file EsA004.LST |
|
Palestra Apprendisti | Esercizio n° A004 5/6 | |||||||
30 di 157 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|