Appunti Wiki
Advertisement
Nota disambigua
Il titolo di questa voce non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è B8. Formato delle istruzioni macchina, tempi di esecuzione.
Blue Glass Arrow RTL  B7. Istruzioni per il controllo del processoreCrystal Clear app kfm home  Calcolatori elettronici (Assembler 8086)
Gli appunti che seguono sono contenuti nella sottopagina /sub (modifica · cronologia · aggiorna)

Formato delle istruzioni macchina[]

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[]

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[]

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[]

  • 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[]

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: Human-edit-redo BHE.

Le istruzioni lunghe occupano il processore per tutto il tempo di esecuzione, durante il quale le richieste di interrupt non vengono ascoltate.

Blue Glass Arrow RTL  B7. Istruzioni per il controllo del processoreCrystal Clear app kfm home  Calcolatori elettronici (Assembler 8086)
Advertisement