Sezione |
Indirizzi Base
Registri Interni
|
Palestra Livello Apprendisti Livello Esperti |
Programmare in Assembly |
Esercizio n° A004 6/6 [31 di 157] |
|
|
||
Gestione Caratteri - Stampa una stringa in bianco e nero | ||
Conclusioni |
|
|
|
|
||
Cosa hai imparato | |||
|
|
Il testo di una stringa ascii deve essere definito tra virgolette e terminato con 00H. |
|
Per puntare un testo conviene sempre utilizzate l'istruzione LEA (sebbene altri preferiscano MOV con l'operatore OFFSET). |
|
La presenza di parentesi quadre, [...] (come nella MOV AL,CS:[SI]) si legge: "il contenuto nella locazione puntata da"; se non si aggiunge altro il segmento di riferimento DS. |
|
Personalmente amo preporre il segment override CS: alle parentesi quadre, CS:[...], per una lungimirante visione della programmazione assembly... |
|
Sebbene la cosa sia irrilevante ai fini del progetto assembly, abbiamo scoperto che il processore preleva i dati pi grandi di 8 bit a partire dal byte meno significativo; per questo l'assemblatore compila (e fa trovare nella memoria di programma...) gli indirizzi alla rovescia, in sintonia con la regola Lo-Hi (Low-High). |
|
Sempre irrilevante ai fini del progetto assembly, la tecnica di associare un numero con segno detto displacement, alle istruzioni di salto e di chiamata, per codificare l'indirizzo d'arrivo. | |
Gi sapevamo che se positivo esprime il numero di bytes da saltare in avanti esclusi quelli delle istruzioni di partenza e di arrivo; in questo esercizio abbiamo verificato che se negativo esprime il numero di bytes da saltare indietro compresi quelli delle istruzioni di partenza e di arrivo. |
|
L'uso dell'operatore SHORT nei salti non condizionati(JMP) consente di risparmiare un byte di codice macchina, se la distanza tra il punto di partenza e quello d'arrivo non eccessiva. |
|
Il problema dell'eccessiva distanza tra il punto di partenza e quello d'arrivo molto frequente anche nei salti condizionati (JE, JGE,...): bisogna imparare a evitarlo altrimenti la compilazione non sar possibile (error A2053: Jump out of range by nnn bytes). |
|
Il comando interno - u mostra spesso sequenze di istruzioni incomprensibili: abbiamo imparato a tradurre i rispettivi codici macchina con i caratteri ascii di un probabile testo e ad usare il comando interno - d per averne conferma. |
|
|
|
||
Prova ad introdurre modifiche al sorgente.... | |||
|
|
Nella shell DOS fai una copia del sorgente EsA004.ASM (per non perdere l'originale): copy esa004.asm prove0004.asm e conferma con Invio. |
|
Esercizio |
Se la finestra non simile a quella riprodotta qui sotto leggi le istruzioni in questa pagina | ||||
|
Lancia macro prove004 /e e, quando sei nell'editor dell'Ambiente Assembler puoi, per esempio, modificare il testo a tuo piacimento.. |
|
|
|
||
Cosa ti aspetta | |||
|
|
Il prossimo esercizio ti fornisce una potenza in pi: scrivere a colori!! | |
Se saprai usare questa possibilit con parsimonia e gusto, potrai scrivere programmi di grande effetto.. |
|
Palestra Apprendisti | Esercizio n° A004 6/6 | |||||||
31 di 157 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|