|
 |
Gli strumenti di Lavoro |
EDITOR 11/11
[19 di 87] |
|
 |
|
Aggiornato
31 marzo 2006 |
 | A questo punto abbiamo scelto l'Editor
in cui scrivere il nostro codice sorgente; ma bisogna avere le idee chiare sulla strategia con cui condurre il
lavoro.
|
 |
Quando
scriviamo il nostro codice sorgente la visione
d'insieme è limitata ad una sola videata; questo limite, almeno all'inizio,
può indurre insicurezza. Sviluppa la tua
idea sulla carta, prima di cominciare a tradurla
o copiarla a video dentro il tuo editor di fiducia! |
 | Creiamo
Prova.ASM:
dunque, apri il tuo Editor e comincia a
scrivere esattamente questo testo: |
_prog
SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:_prog,DS:_prog
ORG
0100H
INIZIO: MOV AH,00H ;Pulisci lo
schermo
MOV
AL,03H ;(ClearScreen)
INT
10H ;
MOV
AH,00H ;Aspetta la pressione
INT
16H ;di un tasto
MOV
AH,4CH ;Torna al dos
INT
21H ;
_prog ENDS
END INIZIO |
 | Scrivi il tuo programma sorgente, rispettando le
regole del gioco; non ti preoccupare se non conosci le direttive
o le parole chiave dell'assemblatore
(trattate comunque nei prossimi paragrafi); questa preoccupazione non ti deve
assillare neanche per il futuro: le sole direttive consigliate sono quelle
riportate negli esempi e possono essere prese per quelle che sono,
senza entrare nel merito |
 | Se sei incuriosito dal codice sorgente che hai
scritto posso anticiparti che mette in atto 3 eventi, uno dietro l'altro:
 | esegue un Clearscreen (pulisce lo schermo,
con MOV AH,00H,
MOV AL,03H,
INT 10H) |
 | aspetta la pressione di un tasto qualunque
(con MOV AH,00H,
INT 16H) |
 | torna al Dos (con
MOV AH,4CH,
INT 21H). |
|
 | Osserva e memorizza;
il testo è scritto su 4 colonne distinte:
 | nella prima (a partire dal primo
carattere sulla sinistra) trovano posto le etichette;
nel nostro esempio sono 2,
_prog
e
INIZIO: |
 |
Le etichette
sono particolari parole chiamate a:
 |
localizzare l'indirizzo
di variabili o punti importanti del programma
(l'indirizzo di tali punti è
difficile da predeterminare perché dipende dal numero di istruzioni inserite prima del punto
stesso: per conoscerlo è necessario sommare la lunghezza (in
bytes) di ogni istruzione precedente ed aggiungere 256 al totale
(per via dell'ORG 100H)! Una paranoia assoluta che conviene
lasciar fare all'assemblatore: uno dei suoi compiti è proprio
quello di sostituire all'etichetta
il numero (indirizzo)
corrispondente) |
 |
sostituire costanti
numeriche (di
norma le costanti possono essere digitate direttamente nel testo
sotto forma di numero binario espresso in esadecimale (come per altro si vede anche
nel nostro esempio); è buona abitudine tuttavia sostituire
le espressioni esadecimali con etichette,
per rendere più leggibile il programma) |
|
 | nella seconda colonna trovano posto le
stringhe mnemoniche dell'operazione che il processore è chiamato a
compiere (come MOV o
INT) |
 | la terza colonna contiene gli eventuali
operandi dell'istruzione: |
 |
La zona degli operandi
rispetta sempre la regola destinazione, sorgente; in
altri termini: la
parte a sinistra della virgola è l'oggetto
in
cui collocare il dato esadecimale o il contenuto
dell'oggetto
indicato dalla parte a destra della virgola (l'oggetto di cui si parla è generalmente un
registro o l'etichetta che
rappresenta una locazione di
memoria) |
 | ecco alcuni esempi:
 | l'istruzione MOV
AL,03H precisa di caricare in
AL (registro
a 8 bit) il valore 03
esadecimale |
 | l'istruzione MOV
CS:[depo],BH sposta il
contenuto del registro BH (registro
a 8 bit) dentro
la locazione puntata da "depo",
etichetta chiamata a localizzare una variabile a 8 bit |
 | l'istruzione MOV
DX,CS:[depo] sposta il
contenuto della locazione puntata da "depo",
(etichetta chiamata a localizzare una variabile a 16 bit) in DX
(registro a
16 bit). |
|
 | la quarta colonna è opzionale e serve per
i commenti; ogni testo digitato
dopo un ; è da ritenersi un
commento e viene ignorato dal compilatore:
|
 |
L'aggiunta
di commenti è un'abitudine eccellente; non di rado l'interpretazione
del nostro sorgente a distanza di qualche giorno può risultare difficile
da capire anche a noi stessi; un commento mirato ed
essenziale è, dunque, un buon investimento... |
|
 |
Per
portarti sulla colonna successiva non digitare gli spazi che
mancano, usa il tabulato (tasto Tab)! |
 | Quando hai completato il testo, salvalo come
Prova.ASM sul tuo disco
fisso. |
 | Se ti va puoi fare un'altro
esercizio; riapri il tuo Editor e
scrivi il testo anche del secondo listato: |
_prog
SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:_prog,DS:_prog
ORG
0100H
INIZIO: JMP Main
KeyWait:MOV
AH,00H ;Aspetta la pressione
INT
16H ;di un tasto
RET
;
BiosCls:MOV AH,00H ;
MOV
AL,03H ;Pulisci lo schermo
INT
10H ;(ClearScreen)
RET
;
Main: CALL BiosCls ;
CALL KeyWait
;Chiama le procedure
MOV
AH,4CH ;e poi torna al dos
INT
21H ;
_prog ENDS
END INIZIO |
 | Quando hai completato il testo, salvalo come
Prova1.ASM sul tuo disco
fisso.
|
 | Il codice sorgente che hai
scritto mette in atto gli stessi 3 eventi di quello precedente; in questo
caso, però utilizza la tecnica della chiamata di procedure. Infatti:
 | definisce la procedura
BiosCls, che
pulisce lo schermo (con
MOV AH,00H,
MOV AL,03H,
INT 10H,
RET)
|
 |
definisce la procedura
KeyWait, che aspetta la pressione di un tasto qualunque
(con
MOV AH,00H,
INT 16H,
RET)
|
 |
Chiama in sequenza le 2 procedure (con CALL KeyWait,
CALL BiosCls)
e poi torna al Dos (con MOV AH,4CH,
INT 21H). |
|
 | Entrambi i testi che hai digitato per
esercizio sono disponibili, pronti da vedere ("Apri
il file dal percorso corrente")
o da scaricare ("Salva
il file su disco"):
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|