Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Differenza tra Macro e Procedure |
SCHEDA n° 03 [ 4 di 4] |
|
|
Siamo pronti per tirare le somme: abbiamo la consapevolezza che sia le Procedure che le Macroistruzioni sono strutture molto utili... | |
Il problema da risolvere è: quando conviene usare le prime in alternativa alle seconde? |
|
Se abbiamo letto con attenzione quanto detto finora, la risposta non dovrebbe essere difficile; entrambe rendono più leggibile il codice sorgente (non solo assembly) e riducono gli errori di programmazione, ma sono estremamente diverse tra loro! |
|
Per arrivare alla soluzione conviene rivedere le considerazioni precedenti in una prospettiva di confronto e con spirito di osservazione. |
|
Una Procedura è una zona di
programma inalterabile,
specializzata e di norma
versatile, cioè in grado di
fare cose simili ma diverse, in funzione dei
valori predisposti in uno o più registri prima della sua chiamata; ti voglio
proporre 3 esempi molto significativi (ma l'aspetto del
passaggio dei parametri è visibile in
molti altri casi):
|
|
La chiamata di una procedura è
quasi sempre inutile se non si provvede a inizializzare uno o più registri prima della sua chiamata; dunque:
|
|
Quando una Procedura non può essere chiamata senza averle anteposte una o più istruzioni di inizializzazione, è il momento di creare una Macro! |
|
La conclusione logica delle precedenti considerazioni si
riflette nella creazione di altrettante Macro, una per ciascun servizio:
|
|
Ecco come potrebbero essere definite le 3 macro: |
|
M_Chr
MACRO carattere MOV AL,carattere CALL BIOchr1 ENDM |
M_CURSOR
MACRO
riga,colonna MOV DL,colonna MOV DH,riga CALL SET_cur ENDM |
M_msgN
MACRO Testo LEA SI,Testo CALL BIOSmsg ENDM |
|
Dopo aver definito le 3 Macro
(all'inizio del sorgente ASM) sarà possibile sostituire le istruzioni
presentate 3 punti fa con una sola riga di programma per ciascun gruppo:
|
|
In sostanza la presenza di una Macroistruzione in un sorgente ASM non cambia nulla, se non esteticamente e funzionalmente; la quantità di bytes prodotta dal compilatore è esattamente identica ma il codice risulterà più compatto e breve. | |
Avrai notato che i parametri da associare ai vari registri sono semplicemente elencati uno dopo l'altro, separati da una virgola, sottolineando una volta di più la potenza di questa struttura |
|
L'uso corretto di una Macro è quello di organizzare la chiamata di una Procedura: il suo compito è quello di sostituire (con una sola riga di programma) il gruppo di istruzioni necessarie per inizializzarla; la cosa che non fa risparmiare memoria di programma (il codice macchina prodotto dall'assemblatore è sempre lo stesso) ma rende più leggibile il programma. |
|
Scheda n° 03 | Differenza tra Macro e Procedure | |||||||
Scheda n° 03 - 4 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|