Nell'ultimo esempio dell'appendice C ci sono parti del codice che si ripetono in modo identico; ciò avviene nella parte iniziale per l'input dei due valori da moltiplicare.
Una cosa simile è però il più possibile da evitare, sia per eliminare la noia di dover scrivere più volte le stesse istruzioni, sia per non correre il rischio di dimenticare qualche gruppo di istruzioni nel momento che si apportano delle modifiche.
A tale proposito si può allora ricorrere alle macro che sono gruppi di istruzioni che si scrivono una volta sola e si «richiamano» dove occorre.
Chiariamo subito che il concetto di «richiamo» di una macro non ha niente a che vedere con quello analogo relativo ai sottoprogrammi; quando l'assemblatore incontra il riferimento ad una macro non fa altro che copiare fisicamente le relative istruzioni in quel punto del programma (si parla anche di «espansione» della macro). Per questo motivo in una macro non possono esserci delle etichette, in quanto altrimenti comparirebbero più volte nel sorgente «espanso», causando errore da parte dell'assemblatore. |
Nell'assembly con sintassi AT&T le macro si dichiarano, solitamente all'inizio del sorgente, con la direttiva .macro seguita da un nome, e si chiudono con la direttiva .endm; il richiamo si effettua invece scrivendo semplicemente il nome.
Usando le macro nell'esempio dell'appendice C si evita di scrivere due volte buona parte delle istruzioni relative alle fasi di input (purtroppo non tutte, perché, come detto, le parti contenenti le etichette dei cicli non possono essere inserite nelle macro), ottenendo il listato seguente.(1)
|
1) una copia di questo file, dovrebbe essere disponibile anche qui: <allegati/programmi-assembly/io-macro.s>.