Il µP Intel 8086 All’attenzione del Professor Claudio Gatto Marco Lettieri 3 C Informatica A.S. 2009/2010 Brevi cenni storici Il microprocessore 8086 fece il suo ingresso nel 1978. Aveva un bus dati a 16 bit ed era stato realizzato completamente in America con la tecnologia HNMOS ( ossia N- Channel Silicon Gate ). Alla fine degli anni ’70 i microprocessori erano tutti con un bus dati a 8 bit e un bus indirizzi a 16 e non erano molto versatili proprio per questo motivo; con l’avvento del microprocessore 8086 della Intel si aveva una potenza molto maggiore e una versatilità migliore dei precedenti,quindi molte più locazioni di memoria (erano circa 1.048.576 ) e uno spazio di indirizzamento pari a 1Mbyte. L’ 8086 ha 29.000 transistor e opera a 5 Mhz. La sua struttura è anche detta “dual in line” ossia due file di piedini parallele. Sono 20 piedini per lato, 40 in totale Registri Possiede tre tipi di registri: • Registri di dati • Registri puntatori • Registri segment Registri Dati I registri dati sono AX (registro accumulatore), BX (registro base), CX (registro contatore) e DX (registro dati). Possono essere usati come registri da 16 bit o dividerli in parti parti da 8 bit ciascuna: bassa(ad esempio AL(Low)) e alta(AH(high)). Registri Puntatori IP(Puntamento d’istruzione) che contiene il puntatore dell’istruzione da seguire, come se fosse un segnalibro. SP(Puntamento di Pila(Stak Pointer)) che contiene il puntatore alla testa dello stack. BP(Puntatore di base) è utilizzato come base per accedere allo stack. SI(Indice della sorgente) e DI(Indice della destinazione). Registri Segmento CS,DS,ES e SS. Sono registri che generano gli indirizzi fisici per fare accesso alla memoria. CS contiene il puntatore d’inizio del segmento codici, DS il puntatore d’inizio del segmento dati, ES di dato supplementare e SS di stack. In altre parole i registri segmento individuano dove trovare i vari segmenti. Il registro dei Flag Esistono due tipi di flag: Flag di stato e flag di controllo. OF (OVERFLOW FLAG) indica l’eccedenza in un calcolo; DF (DIRECTION FLAG) indica, nelle operazioni di manipolazioni delle stringhe la direzione; IF (INTERRUPT FLAG); TF (TRAP FLAG) consente l’esecuzione delle interruzioni “passo passo” per il debug; SF (SIGN) indica il segno del risultato; ZF (ZERO) indica se il risultato vale o no 0; AF (AUXILIARY CARRY FLAG) è usato nelle operazioni con BCD; PF (PARITY FLAG) indica se il risultato è pari; CF (CARRY FLAG) indica se c’è riporto dall’operazione precedente. Il flag può essere 0 o 1: se vale 0 la condizione non è verificata, 1 se lo è (ad esempio se CF vale 0 vuole dire che il risultato dell’operazione precedente non ha riporto, se invece vale 1 lo ha.) I principali vantaggi di questa segmentizzazzione sono: • Spazio di indirizzamento pari a 1Mbyte e inidirizzi a 16 bit. • Separazione tra dati,codice e stack e quindi la possibilità di di avere più segmenti dati,codice e stack. • Possibilità di sovrapporre i segmenti. BIU (Bus Interface Unit) • • • • La BIU è un sottosistema che gestisce a tutti i dati e alle istruzioni provenienti (e verso) l’esterno. Gestisce quindi anche: Il fetch delle istruzioni; La lettura e scrittura dei risultati delle operazioni aritmetiche; Generazione degli indirizzi; L’accodamento delle istruzioni. La BIU lavora parallelamente con la EU(executive unit) che è il sottoprogramma che esegue i calcoli. Insieme eseguono l’operazione di “prefetch” che carica in via preventiva le istruzioni dalla memoria e le memorizza nella coda delle istruzioni. FINE