Calcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione
Formato delle istruzioni macchina modifica
In ambiente 8086 il formato delle istruzioni macchina è variabile, cioè le istruzioni hanno codici macchina di lunghezze diverse: al codice operativo sono riservati 1 o 2 byte, agli operandi fino a 4 byte. L'unità di controllo, dopo aver letto il primo byte dell'istruzione, deve capire la lunghezza dell'istruzione.
Primo byte modifica
Oltre ad accogliere una parte del codice operativo, il primo byte può contenere a seconda dell'istruzione alcuni bit particolari:
- W: specifica se l'istruzione opera su byte (W = 0) o su word (W = 1);
- D: specifica l'ordine degli operandi (ad. es vale 0 se il registro è l'operando sorgente o 1 se è l'operando destinazione);
- S: specifica se l'operando immediato è rappresentato su 1 o 2 byte.
Secondo byte modifica
Nelle istruzioni con due operandi, il secondo byte contiene i campi MOD, REG e R/M:
- il campo REG specifica un registro su 3 byte;
- il campo MOD specifica il significato dell'operando R/M (ad es. se MOD vale 11, anche il secondo operando è un registro che è specificato in R/M).
Esempi di istruzioni in base alla lunghezza modifica
- 1 byte:
NOP
,PUSH
,POP
- 2 byte:
MOV AX
,BX
,MOV AX
,[BX]
- 3 byte:
MOV AX
,imm
- 4 byte:
MOV AX
,var
,MOV [BX]
,imm
- 6 byte:
MOV var
,imm
Tempi di esecuzione modifica
Il linguaggio assembler viene usato quando è richiesto un tempo di esecuzione minimo in termini di colpi di clock e non è disponibile un compilatore sufficientemente efficiente in termini di ottimizzazione del tempo di esecuzione. I tempi di esecuzione delle istruzioni sono specificati nel manuale in base a:
- tipo di istruzione;
- posizione degli operandi: gli operandi in memoria richiedono un tempo di accesso maggiore di quello richiesto dagli operandi immediati, e oltretutto l'indirizzo potrebbe dover essere calcolato (es.
[BX]var
) o un'istruzione potrebbe richiedere un accesso sia in lettura sia in scrittura (es.ADD var
,AX
); - allineamento degli operandi in memoria: BHE
Le istruzioni lunghe occupano il processore per tutto il tempo di esecuzione, durante il quale le richieste di interrupt non vengono ascoltate.