Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Schede del Tutorial

Home » Programma il Computer » Tutorial Assembly

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [ 01 di 198] 

    

    Legenda della Tabella - HELP1
     
Le Tabelle che descrivono le caratteristiche di ogni istruzione hanno, di solito, una intestazione (che ne illustra la sintassi) e 5 campi (con i dettagli funzionali); le informazioni fanno riferimento al funzionamento in modo reale. I punti seguenti aiutano ad interpretare questi dati.
     
bulletIntestazione: i 2 campi di questa parte mettono in evidenza:
bulletla sintassi dell'istruzione.
bulletla sua logica, cioè su chi e come esercita la sua azione.

Per esempio:

      

  ADC Destinazione, Sorgente 

 Destinazione  <<  Destinazione + Sorgente + flag Carry

      

bulletEsempio d'applicazione (primo campo): raccoglie una o più istruzioni, in funzione degli operandi e dei modi di indirizzamento possibili; di solito le tipiche operazioni si svolgono:
bullettra registro e registro, o tra registro e memoria, o tra memoria e registro.
bullettra registro e costante, o tra memoria e costante.
bullettra accumulatore e costante.

Ecco alcuni esempi:

      

 Esempio di Applicazione

Mnemonico

Operandi

ADC

 DX,BX

ADC

 CL,[Depo01]

ADC

 SI,1234H

ADC

 [Depo01],02H

      

bulletNumero dei Cicli di clock (secondo campo): è il campo più precario di tutti e va preso solo per farsi un'idea sui tempi d'esecuzione di ciascuna delle istruzioni proposte dall'esempio, in funzione del processore chiamato ad eseguirle:

      

Cicli di Clock
86 286 386 486
3 2 2 1
 9+EA 7 6 2
13+EA

      

Ricorda... NB: il tempo effettivamente consumato per eseguire un'istruzione è piuttosto articolato: un certo numero di cicli di clock è intrinseco (e indicato dalla tabella) ma spesso va integrato con altri cicli, in funzione del contesto in cui viene eseguita l'istruzione.
Il numero di cicli di clock suggerito dal secondo campo della tabella è dunque solo indicativo e sostanzialmente inutile (... vorrei, ma non posso...).

      

Gli effettivi valori sono influenzati fortemente dall'architettura del processore e, nel loro ambito, da numerosi altri fattori.

      

bullet Le temporizzazioni per tutti i processori : alcune regole sono da ritenersi generali:
bullet in ogni caso il tempo corrispondente ad un ciclo di clock è pari all'inverso della frequenza del processore (con f=500Mhz >> T=2ns; con f=1Ghz >> T=1ns)
bulletil numero di cicli nel funzionamento in modo protetto è, di solito, molto differente da quello in modo reale: le nostre tabelle non si curano di mostrare le differenze (per la conoscenza delle quali non rimane che consultare i manuali), dando per scontato il funzionamento nel secondo modo.
bulletalcune istruzioni iterative (come LOOP) consumano un numero di clock proporzionale al numero di iterazioni che compiono; la presenza di una n nelle tabelle sottolinea questa evenienza (per esempio: 10+4n significa comunque 10 cicli + 4 cicli per ogni giro eseguito).
bulletle istruzioni di salto condizionato (come JZ) hanno sempre 2 tempi d'esecuzione; se la condizione non è vera il salto non viene eseguito e il tempo consumato è solitamente molto inferiore e specificato in tabella con il prefisso noJ.

      

bullet Le temporizzazioni con l'8086 : data la quasi certa improbabilità d'uso di questo oggetto ancestrale sono riportate solo per completezza, essendo per altro presenti anche nella manualistica ufficiale...; i tempi di esecuzione, molto elevati, evidenziano i limiti di questa vecchia architettura e sono del tutto irrilevanti nel ... nuovo millennio.... Come non bastasse devono essere spesso integrati dal numero aggiuntivo di cicli dovuto:
bulletal tipo di indirizzamento richiesto (e suggerito dalla Tabella EA, Effective Adddress): è necessario consumare un determinato numero di cicli di clock aggiuntivi per assicurare il funzionamento con operandi in memoria; ecco il dettaglio:

      

Tabella Effective Address Calculation
Tipo di Indirizzamento Effettivo  N° Clock Esempio
Spiazzamento 6 MOV AX,Depo
Tramite Registro (BP o BX o DI o SI) 5 MOV AX,[BP]
Spiazzamento+ Base (BP o BX) 9 MOV AX,Depo[BP]
Spiazzamento+ Indice (DI o SI) 9 MOV AX,Depo[DI]
Base BP + Indice (DI o SI) 7 MOV AX,[BP+DI]
Base BX + Indice (DI o SI) 8 MOV AX,[BX+DI]
Spiazzamento + Base BP + Indice DI 11 MOV AX,Depo[BP+DI]
Spiazzamento + Base BX + Indice SI 11 MOV AX,Depo[BX+SI]
Spiazzamento + Base BP + Indice SI 12 MOV AX,Depo[BP+SI]
Spiazzamento + Base BX + Indice DI 12 MOV AX,Depo[BX+DI]

      

bulletla presenza di override, cioè la volontà di dichiarare esplicitamente il segmento di una determinata locazione di memoria (per esempio CS:[Depo]) aggiunge altri 2 cicli di clock al totale.
bulleta questo processore si riferisce anche il terzo campo (Accessi in memoria): indica il numero di accessi in memoria previsti dall'istruzione e serve per integrare il numero effettivo di cicli di clock necessari per eseguirla, 4 in più per ogni accesso.

      

Accessi in
Memoria
1

      

bulletLe temporizzazioni con gli altri 80x86 : possono essere molto diverse da quelle indicate, per esempio a causa di questi eventi:
bulletsebbene il calcolo dell'indirizzo effettivo sia ora realizzato da hardware e non comporti l'aggiunta di cicli pretesa dall'8086 può ancora capitare di aggiungere un ciclo al totale se l'operando in memoria richiede 3 riferimenti, come in MOV AX,Depo01[BX+SI] o in MOV AX,[BX+SI+10].
bulletper alcune istruzioni di controllo (come CALL) il numero di clock è influenzato dalla lunghezza dell'istruzione successivamente; la presenza di una m nelle tabelle sottolinea questa necessità (per esempio: 10+4m significa comunque 10 cicli + 4 cicli per ogni componente dell'istruzione successiva, per esempio il suo numero di bytes....).

      

bullet Accessi in memoria (terzo campo): vedi secondo campo, numero di cicli di clock.

      

bulletNumero di Bytes dell'istruzione (quarto campo): indica il numero di bytes previsti per codificare l'istruzione, di solito almeno un codice operativo e talvolta uno o più operandi:

      


Bytes
2
2,4

      

bulletFlag Influenzate dall'istruzione (quinto campo): di certo la parte più utile della tabella, mette in evidenza tutti i nove bit significativi del registro delle flag, segnalando il valore assunto da ciascuno di essi dopo l'esecuzione dell'istruzione; i nove bit rappresentano le flag di Overflow, di Direzione, di Interrupt, diTrap, di Segno, di Zero, di Riporto Ausiliario, di Parità e di Riporto (Carry), distribuiti nel registro in accordo con lo schema seguente:
     
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
        OF DF IF TF SF  ZF   AF   PF   CF

      

Sono previste 5 possibilità:
bullet? la flag può cambiare, assumendo un valore indefinibile a priori.
bullet# la flag subisce certamente un cambiamento, in funzione del risultato dell'istruzione.
bullet0 la flag è comunque lasciata a zero.
bullet1 la flag è comunque lasciata a uno.
bullet   (casella vuota) nessuna variazione.

      

Flag   influenzate
O D I T S Z A P C
?       1 # # # ?

    

Pagina Precedente Scheda n° 07 Pagina Successiva Istruzioni Cpu 80x86 Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Scheda n° 07 - 01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198

    

SCHEDE » 1.Header EXE 2.PseudoOp MASM 3.Differenza tra Macro e Procedure
4.
Tabella Vettori 5.PSP 6.Stack 7.Istruzioni 80x86
8.La misura dell'Informazione 9.Numeri e Logica Binaria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati