|
 |
Programmare in Assembly |
Esercizio n° E004 5/6
[22 di 57] |
 | Data la particolarità del progetto desidero sottoporti
un'appendice: supponiamo di dover stampare 2
cornici come quella appena progettata, una vicina all'altra, magari per
predisporre le tabelle di controllo del
gioco "Battaglia Navale". |
 | Le alternative sono:
 | scrivere 2 volte il codice appena studiato, con diverse inizializzazioni di riga e colonna |
 | creare una procedura interna, specializzata nella
stampa dinamica di una
cornice 12*12 |
|
 | E' un'eccellente occasione per farsi la mentalità; ti
ricordo 2 regole fondamentali
della programmazione (non solo)
assembly, che ho già avuto modo di
sottoporti... |
 |
Se, leggendo un codice sorgente, si notano
tratti di programma
simili tra loro (a meno di piccoli dettagli) c'è
qualcosa
che
non va!!:
il programma va ottimizzato.
Di solito conviene estrarre i pezzi
di codice in comune e farne una
procedura interna (o, se
l'estratto si ritiene particolarmente utile, anche
una da includere in Libreria,
da dichiarare EXTRN) |
|
Un buon programma principale
(Main Program)
deve essere smilzo, essenziale, immediato: dovrebbe
limitarsi a chiamare una o 2 sole procedure e a garantire il
servizio di eventuali tasti premuti (prendere decisioni); conviene
dunque
estrarre
comunque
i pezzi di codice specializzati e farne
procedure interne:
la leggibilità del Main Program ne guadagnerà sicuramente! |
 | Ecco come diventa il programma precedente, applicando le
preziose regole del Maestro: |
 | Ti faccio notare alcune cose importanti:
 | poichè le stringhe Corn00,
Corn01 e Corn02 sono
invariabili
e dedicate alla procedura
Cornice possiamo estrarle dall'Area
dei dati del programma e inserirle prima della sua definizione;
questa scelta rende facile l'eventuale
aggiunta di Cornice alle procedure della
libreria Giobe.LIB |
 | subito dopo l'Area
dei dati del programma ne è ora presente
una nuova: l'area
destinata alle procedure (interne) del programma. |
 | se ti capitasse di prenderci gusto
ricorda che
qualunque altra procedura da te inventata
dovrà essere inserita in questo punto del programma sorgente. |
 | la parte di codice che provvedeva alla
stampa della cornice ha assunto ora una sua
dignità: è diventata procedura! Come
tale dispone ora di una sua etichetta (il nome Cornice
seguito dai 2 punti,
Cornice:) e, soprattutto, mostra la
presenza di un'istruzione in più,
RET. |
 | ricorda che ogni
procedura deve terminare con l'istruzione RET:
se ti dimentichi di questo particolare (?!) il tuo eseguibile manderà
in crash il computer! |
 | Il programma principale si limiterà a
chiamare (CALL
Cornice) la nuova procedura,
provvedendo a passarle i parametri da essa richiesti, cioè
le coordinate del suo angolo in alto a sinistra, affidate ai registri
DH (riga) e
DL
(colonna). |
|
 | Estrarre parte del codice
assembly dal programma principale per
trasformarla in procedura è un'eccellente
abitudine:
 | in primis rende più leggibile
il Main Program stesso |
 | in secundis garantisce la disponibilità di un programma
specializzato, riutilizzabile anche in possibili altre occasioni |
|
 | Le icone in alto a destra sono a tua disposizione per
vedere l'eseguibile
EsE004_1.COM (ovviamente uguale al precedente...) e per scaricare questo
sorgente EsE004_1.ASM, variante del
precedente. |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|