Le istruzioni di trasferimento del controllo di esecuzione interrompono il flusso sequenziale del programma, le istruzioni atte a modificare il flusso sono di 4 tipi:
- Istruzioni per gestire gli interrupt;
- Istruzioni di salto;
- Istruzioni per realizzare cicli;
- Istruzioni per gestire procedure.
Istruzioni di salto
Le istruzioni di salto consentono di forzare il processore a procedere nell’ esecuzione senza eseguire l’istruzione successiva, i salti possono essere di tipo NEAR o di tipo FAR:
- Salti NEAR – l’istruzione a cui si salta appartiene allo stesso segmento di codice, quindi viene modificato solo il contenuto del IP (offset dell’istruzione da eseguire);
- Salti FAR – l’istruzione a cui si salta non appartiene allo stesso segmento di codice, quindi il processore modifica sia il contenuto del IP (offset dell’istruzione da eseguire) sia il contenuto di CS (nuovo segmento di codice).
Le istruzioni di salto si dividono in due categorie fondamentali:
- istruzioni di salto incondizionato
- istruzioni di salto condizionato
Le istruzioni di salto incondizionato sono tali da consentire sempre il salto, senza il controllo di alcuna condizione, mentre le istruzioni di salto condizionato sono tali da consentire il salto solo se è verificata una certa condizione. Generalmente il controllo della condizione riguarda il confronto fra valori numerici.
Per effettuare un salto incondizionato si usa l’ istruzione JMP, la sintassi è la seguente: JMP <target> dove target è l’ indirizzo di memoria a cui saltare.
Per dichiarare <target> all’interno del programma occorre scriverne il nome seguito da : (dichiarazione di etichetta).
Un salto condizionato nell’esecuzione di un programma è eseguito tramite diversi tipi di istruzione, la sintassi è la seguente: <istr_salto> <target>.
Le istruzioni di salto condizionato si dividono in 3 gruppi:
- Test su singoli flag;
- Test su numeri con segno;
- Test su numeri senza segno.
Test su singoli flag
Confronto di numeri con segno
Confronto di numeri senza segno
Istruzioni di iterazione
Le istruzioni di iterazione permettono di ripetere una sequenza di istruzioni per un numero definito di volte. L’esecuzione di una istruzione di iterazione comprende:
- Aggiornamento di un registro (contatore);
- Controllo di una condizione;
- Istruzione di salto.
Un’iterazione in un programma Assembly è eseguita tramite diversi tipi di istruzione di iterazione e la sintassi è la seguente: <istr_iterazione> <target>
N.B. Tutte le istruzioni di iterazione fanno uso del registro CX come contatore!
L’ assembly dell’ 8086 prevede diverse istruzioni di iterazione:
Nel prossimo articolo parleremo delle Procedure e Macro, se invece ti sei perso lo scorso articolo, si è parlato delle Istruzioni Logico-Aritmetiche.
Stai cercando altre guide? Allora dai uno sguardo alla nostra raccolta dedicata alla Programmazione Assembly.
Alla prossima!