Italiano English

Intel 8086 Microprocessor System Architeture

Last update: 04/03/1997 - Viewed: 22401 dal 20 Apr 2009 - Vote:3.9 (14 Votes) 1 comments
Keywords: Microprocessors, Assembly
Sezioni: None
Argomenti: Esercitazioni di Informatica Industriale
Translation for this document is not available or is not complete,
if you are intrested to receive information please write to

Elementi di base sulla architettura di un sistema a microprocessore. Viene presentato lo schema generale, i registri ed le principali operazioni con i bit

 

 

BUS = Collezione di segnali elettronici che derivano da una sorgente comune ed eseguono una funzione comune

  • BUS INDIRIZZI: seleziona un blocco e ne abilita una locazione precisa. La sua larghezza limita la dimensione del blocco
  • BUS DATI: passa le effettive informazioni tra il blocco abilitato e la CPU. La sua larghezza (8 bit nel 8088) influisce molto sulla velocità del calcolatore.
  • BUS DI CONTROLLO: definisce il tipo di comunicazione (lettura o scrittura), apre e chiude il collegamento.

E' COMPITO DELLA CPU ATTIVARE CORRETTAMENTE OGNI BUS ED ASSICURARE UNA COMUNICAZIONE AFFIDABILE.

 

SCHEMA DELL'ARCHITETTURA INTERNA DI UN MICROPROCESSORE STANDARD


CONTATORE DI PROGRAMMA (PC): contiene l'indirizzo della successiva istruzione che deve essere eseguita

PUNTATORE ALLO STACK (SP): contiene l'indirizzo della cima dello stack, usato per trattare subroutine ed interruzioni

REGISTRI DI SEGMENTO: dividono la memoria in segmenti da 64kb. Vengono usati con altri registri a 16 bit per accedere a tutta la memoria disponibile.

REGISTRI INDICE: contengono l'offset rispetto ad un registro segmento. Servono ad accedere a blocchi di memoria con una sola istruzione.

REPERIMENTO DI UNA ISTRUZIONE DALLA MEMORIA (FETCHING)


FASE 1: trasferimento del contenuto del PC nel bus indirizzi, emissione segnale di lettura.

FASE 2: la memoria trasferisce sul bus dati il contenuto della cella di memoria all'indirizzo indicato.

FASE 3: l'INSTRUCTION REGISTER contiene l'istruzione che viene passata al decodificatore che la interpreta ed emette la sequenza di segnali necessari ad eseguirla

OSSERVAZIONE: Il PC è a soli 16 bit cioe' 216 byte (64Kb) di memoria indirizzabili.
OSSERVAZIONE: durante la decodifica ed esecuzione , il bus indirizzi resta inutilizzato

CALCOLO DI UN INDIRIZZO FISICO DI UNA LOCAZIONE DI MEMORIA


LA CPU CALCOLA AUTOMATICAMENTE L'INDIRIZZO FISICO (20 bit) DI UNA LOCAZIONE DI MEMORIA , UNENDO IL SUO INDIRIZZO LOGICO (16 bit) CON IL CONTENUTO DI UN ALTRO REGISTRO

Nel caso di una istruzione, il registro utilizzato automaticamente è CS, mentre l'indirizzo logico è PC. L'indirizzo fisico è CS:PC che è a 32 bit.

Nel caso dell 8086/88 l'indirizzo fisico da 20 bit è ottenuto sommando l'indirizzo logico con il valore del segmento shiftato di 4 posizioni a sinistra (moltiplicato 16)

IL PROGRAMMATORE PUO' AGIRE SUL CONTENUTO DEI REGISTRI DI SEGMENTO. INOLTRE PUO' DECIDERE DI VOLTA IN VOLTA QUALE REGISTRO DI SEGMENTO UTILIZZARE SCAVALCANDO L'IMPOSTAZIONE DI DEFAULT

I REGISTRI GENERALI DELL'8086/88

-GRUPPO DATI: sono registri a 16 bit a cui si può accedere anche separatamente ai 2 byte che li compongono, rispettivamente high e low

-GRUPPO PUNTATORI ED INDICI: registri a 16 bit

  • Stack Pointer (SP): Puntatore alla cima dell'area di stack
  • Base Pointer (BP):usato come registro base per i registri indice nelle funzioni di indicizzazione
  • Source Index (SI): usato come registro di indirizzamento origine per i movimenti di blocchi di memoria
  • Destination Index (DI): usato come registro di indirizzamento destinazione per i movimenti di blocchi di memoria

-REGISTRI DI SEGMENTAZIONE: sono registri a 16 bit che vengono utilizzati con altri registri per generare gli indirizzi a 20 bit.

  • Code Segment (CS): inizio della locazione di memoria che contiene il programma da eseguire
  • Data Segment (DS): primo byte della zona di memoria che contiene i dati.
  • Stack Segment (SS):inizio della parte di memoria dedicata allo stack
  • Extra Segment (ES): segmento da usare a seconda delle esigenze applicative.

METODI DI INDIRIZZAMENTO

  

MOV destinazione « sorgente

 

IMMEDIATO: l'operando e' esplicito ed appare nell'istruzione es:

 
MOV AX,324             ;AX 324 

A REGISTRO: l'operando è uno dei registri interni

 
MOV AX,BX              ;AX  BX 

DIRETTO: l'operando è contenuto in una variabile di memoria, che deve essere indicata completamente

 
MOV AX,var             ;AX  var
MOV AX,ES:var          ;AX  ES:var 

INDIRETTO A REGISTRO: l'operando è contenuto all'indirizzo contenuto in un registro. (questo registro contiene dunque un puntatore). Validi solo BX e SI

 
MOV AX,[SI]            ;AX [DS:SI] 
MOV AX,[BX]            ;AX  [DS:BX] 

INDIRETTO A REGISTRO CON SPOSTAMENTO: l'indirizzo dell'operando è dato dalla somma di una costante ed il contenuto di un registro interno

 
MOV AX,var[DI]         ;AX  [DS:(var+DI)]

INDIRETTO A REGISTRO CON BASE + INDICE + COSTANTE:

 
MOV AX,var[BX][DI]     ;AX [DS:(var+DI+BX)] 

PORTE DI Input/Output

 

UNA PORTA E' UN "POSTO" UNIVOCAMENTE IDENTIFICATO, PER LEGGERE E SCRIVERE DATI. NON FA PARTE DELLA MEMORIA DI SISTEMA (ROM e RAM)

INPUT: il microprocessore legge il contenuto di una porta di I/O
OUTPUT: Il microprocessore scrive in una porta di I/O

L'INDIRIZZAMENTO DI UNA PORTA I/O AVVIENE SULLO STESSO BUS INDIRIZZI USATO PER LA MEMORIA, CONSIDERANDO SOLO I PRIMI 16 BIT (dei 20 totali) 216=65.535 porte di I/O (0..FFFFh)

IL BUS DI CONTROLLO ATTIVA LA MEMORIA DI SISTEMA O UNA PORTA DI I/O A SECONDA DELL'ISTRUZIONE CORRENTE.

ISTRUZIONI e INDIRIZZAMENTO di Input/Output

LE ISTRUZIONI PER I/O SONO:

-Assembler

in accumulatore,porta
out porta,accumulatore

Il numero della porta (il suo indirizzo) può essere una costante da un byte (indirizzamento fisso), o nel registro DX (indirizzamento variabile).

Se l'accumulatore è AL allora viene trasferito un byte, se AX due byte (quello indirizzato ed il successivo)

-C

 
int inport(int porta) /* word */ 
char inportb(int porta) /* byte */
 
outport(int porta,int valore) 
outportb(int porta, char valore) 

In questo caso l'indirizzamento è sempre variabile, mentre esistono istruzioni differenti per trasferire un byte (char) o una parola (int).

DISPOSITIVI DI I/O


QUALSIASI COMPONENTE HW CONTROLLATO DAL SISTEMA

UN DISPOSITIVO PUO' ESSERE ASSOCIATO A PIU' PORTE O INDIRIZZI DI I/O, CHE IN GENERE SVOLGONO FUNZIONI DI STATO, CONTROLLO E COMANDO

TRA QUESTI DISPOSITIVI TROVIAMO:

-tastiera, monitor, porta seriale e parallela, timer programmabile (PIT 8253), gestore interrupt (PIC 8259), interfaccia parallela programmabile (PPI 8255), ecc...

ESEGUIRE UNA OPERAZIONI DI I/O SU UNA PORTA ASSOCIATA AD UN DISPOSITIVO, SIGNIFICA ACCEDERE DIRETTAMENTE AL DISPOSITIVO

PER MOLTI DISPOSITIVI VI SONO DEGLI INTERRUPT (DOS e/o BIOS) CHE VI ACCEDONO, COME PER LA PORTA SERIALE.

IN GENERALE SI ACCEDE ALLE PORTE DI UN DISPOSITIVO QUANDO NON ESISTE UN INT DEDICATO O SI DESIDERA UNA MAGGIORE VELOCITA'

MASCHERE DI BIT


SI UTILIZZANO PER ACCEDERE A SPECIFICI BIT ALL'INTERNO DI UN BYTE

ESEMPIO:

I pin 1..8 della porta parallela sono associati alla porta 378h. Il pin 1 è collegato direttamente al bit 0 .. il pin 8 al bit 7, della porta 378h. Per impostare ad alto (+5V) il pin 3 è necessario scrivere 1 nel bit 2 della 378h.

Come fare per non cambiare lo stato dei rimanenti pin ??

 
DB mask_bit_2 00000100b 
DW porta 0378h 

PER IMPOSTARE AD ALTO

 
mov dx,porta 
in al,dx ;leggo lo stato attuale 
or al,mask_bit_2 ;metto alto il bit 2 
out dx,al ;invio la modifica alla porta

PER IMPOSTARE BASSO

 
mov dx,porta
in al,dx ;leggo lo stato attuale 
and al,NOT mask_bit_2 ;metto basso il bit 2 
out dx,al ;invio la modifica alla porta

PER INVERTIRE LO STATO

 
mov dx,porta 
in al,dx ;leggo lo stato attuale 
xor al,mask_bit_2 ;inverto lo stato del bit 2 
out dx,al ;invio la modifica alla porta
 
The coding examples presented here are for illustration purposes only. The author takes no responsibility for end-user use
This work is property of Pk Lab. You can use it for free but you must retain author's copyright
Comments are closed for this document