|
 |
Programmare in Assembly |
Premesse Importanti
[2 di 157] |
|
|
 |
Aggiornato 15
febbraio 2007 |
 | Tutto e facile e
scontato quando si
sa cosa fare... e tu, se sei qui in questo momento, probabilmente non sai
proprio nulla, ma hai tanta voglia di entrare in questo mondo ancora
sconosciuto ma ricco di fascino (.. come tutte le cose ignote). |
 | Ricordati: per chi
vuole vincere nulla è impossibile... basta
non mollare e far lavorare
intuito e fantasia. |
 | La stesura e la scelta dei contenuti
dei singoli esercizi non è stata banale, per non correre il rischio di
stroncare sul nascere la buona
disponibilità e le
speranze di autonomia dei miei allievi...;
un buon insegnante deve saper dare tutto, ma a
piccole, gustose,
dosi; ... e deve saper
emozionare... |
 | Deve mettere la soluzione in mano all'allievo dandogli la
sensazione di averla trovata da solo. |
 |
Ricorda: l'allievo
(...prima o poi...) supera il maestro
...
...e se il maestro conosce il suo
compito non può che esserne felice! |
 | Poichè è la prima volta...
desidero darti alcuni consigli:
 | gli esercizi vanno eseguiti
rigorosamente nella sequenza proposta, uno
dopo l'altro: sono stati pensati per introdurre
difficoltà crescenti e, spesso, quelli che seguono sono l'evoluzione
del precedente |
 | è opportuno che i concetti imparati
di volta in volta non vengano dimenticati:
ti consiglio un quaderno degli esercizi,
sul quale riporterai le informazioni che più ti hanno colpito: è il modo
migliore per memorizzare le cose per sempre... |
 | in particolare la pagina "Conclusioni",
presente in ogni esercizio, è una vera e propria
raccolta di Trucchi del mestiere: se
impari e ti ricordi queste
pagine diventerai presto autonomo e
sicuro. |
 | gli argomenti teorici
coinvolti negli esercizi sono tutti
documentati; ad essi rimandano i link
interattivi, presenti in gran quantità nelle pagine del mio sito.
Almeno all'inizio non è necessario cliccarci sopra:
ci sono e nessuno li toglierà..; ci puoi tornare dopo aver fatto un po' di
pratica |
 | negli scritti che ti proporrò ci sono gli
mnemonici delle istruzioni: ovviamente
non ne sai nulla ma, uno alla volta,
diventeranno di tua conoscenza; per ora li puoi subire
così come sono, intuendo la loro operatività, anche consultando i
ricchi commenti ad essi associati |
 | a proposito, impara fin d'ora a
dare presenza ai tuoi sorgenti, con l'uso del
tasto TAB: ogni riga di programma ha sempre 4
campi che puoi imparare a separare appunto con
tabulati: |
|
Campo
Etichetta |
|
Campo
Mnemonico |
|
Campo
Operando |
|
Campo
commento
(fortemente consigliato!!) |
|
|
Inizio: |
|
MOV |
|
AH,00H |
|
;carica il registro AH con il
;numero esadecimale 00H |
| |
|
MOV |
|
AL,03H |
|
;carica il registro AL con il
;numero esadecimale 03H |
| |
|
INT |
|
10H |
|
;chiama la procedura di sistema |
|
 | impara anche a commentare
ogni riga di programma, così come ho fatto io per te: quando
riprenderai in mano il sorgente, dopo qualche tempo, sarai grato a te
stesso... |
 | i commenti si
aggiungono dopo un ; (punto e virgola)
sul quarto tabulato;
commentare un sorgente è un'arte:
nell'esempio precedente il commento è becero (la pedissequa traduzione
dell'istruzione è inutile...); e più intelligente e utile interpretarla,
per esempio così:
|
Campo Etichetta |
|
Campo Mnemonico |
|
Campo Operando |
|
Campo
commento (fortemente consigliato!!) |
|
|
Inizio: |
|
MOV MOV INT |
|
AH,00H AL,03H 10H |
|
;Provvede alla cancellazione del ;video, posizionando il cursore ;alla riga0,colonna0,in alto a ;sinistra (a livello BIOS) |
|
|
|
|
|
|
|
|
 |
Importante:
impara a scegliere con intelligenza
le etichette da associare ai punti interni del codice che
stai scrivendo; certamente si tratta di scelte
decisamente personali, comunque legittime e indiscutibili; io
posso solo proporti il mio punto di vista, fermo restando che la libertà
è un bene impagabile:
 | se possibile usa parole con
meno di 8 caratteri (così da essere
ospitate all'interno del Campo Etichetta,
senza invadete il Campo Mnemonico);
l'uso di stringhe troppo lunghe non giova alla
leggibilità e all'ordine
di un sorgente ASM |
 | usa sempre stringhe
significative e sinteticamente
emblematiche, cioè in grado di rendere con pochi
caratteri il senso dell'oggetto
a cui si riferiscono; di solito questo consiglio è utile per
definire variabili,
costanti o
procedure (per esempio
Byt2Dec,
Via_Cur, Random,
...), non certo per le etichette intermedie
del codice |
 | non sprecare energie per le
etichette intermedie del
codice; è assurdo (salvo in caso eccezionale) creare e usare
stringhe del tipo sotto,
giù,
rientra, fine, ecc..:
dopo un po' la nostra fantasia comincia ad essere frustrata e
non sapremo più cosa inventare.
Personalmente uso la tecnica delle etichette di servizio, del tipo
XXX01,
XXX02, .., cioè stringhe numerate in modo progressivo, in
grado di svolgere egregiamente il proprio compito senza
far scoppiare il cervello in
fantasie non necessarie |
 | lo stesso discorso vale per le
etichette intermedie delle
procedure: anche in questo caso
conviene usare etichette di servizio, numerate in modo progressivo
ma ora con una radice del nome della procedura. Per esempio
Byt2_0,
Byt2_1..., con riferimento alla mia
Byt2Dec |
 | idem per la definizione delle
etichette destinate alle
variabili; per esempio quando le
stringhe di testo sono numerose
(sempre salvo eccezioni) è inutile perdere tempo a pensare
definizioni differenziate: molto meglio
Testo01, Testo02,..
o Cornic1,
Cornic2, .. , comunque raggruppando le etichette in
categorie emblematiche numerate |
|
|
 | Infine, ricorda che tutti i sorgenti hanno
una
struttura, necessaria per consentire al compilatore di tradurre
in numeri binari (codice
macchina) le parole che hai scritto
nel sorgente (codice assembly); questa
struttura è sempre
la stessa e va copiata di programma in programma. |
 | La descrizione di questi argomenti
di contorno è forse un po' noiosa (perchè non produce effetto
visibile, ...quello che in questo momento brami), ma indispensabile per dare
sicurezza al lavoro. |
 |
Non ti devi preoccupare di conoscerli
ora: il
primo esercizio
ha anche il compito di fornirti Una Tantum
queste preziose nozioni. |
 |
Ti ricordo che per organizzare e realizzare un progetto
in Assembly è indispensabile: |
| |
 |
|
conoscere gli argomenti del
primo capitolo
del Tutorial
(il
processore e le sue
istruzioni; il Debug e le
Librerie di Sistema) |
 |
|
disporre e conoscere compilatore,
linker e editor, argomenti trattati nel
secondo capitolo
del Tutorial |
 |
|
aver scaricato e letto i preziosissimi
Manuali stampabili |
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|