Calcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione
![]() |
![]() | ![]() |
---|
Formato delle istruzioni macchina[modifica | modifica sorgente]
3 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 | modifica sorgente]
4 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 | modifica sorgente]
5 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 | modifica sorgente]
- 13 1 byte: NOP, PUSH, POP
- 15 2 byte: MOV AX, BX, MOV AX, [BX]
- 17 3 byte: MOV AX, imm
- 18 4 byte: MOV AX, var, MOV [BX], imm
- 20 6 byte: MOV var, imm
Tempi di esecuzione[modifica | modifica sorgente]
23 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.
![]() |
![]() | ![]() |
---|