PkLab.Net - Ingegneria Informatica e Automatica
Italiano English

Intel 8086 Microprocessor System Architeture

Last update: 04/03/1997 - Viewed: 15268 dal 20 Apr 2009 - Vote:3.8 (13 Votes) con 1 commenti
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
Vote this page
0    1    2    3    4    5   

Comments

1 comments (
Send your comment)

Sent by rob 07/05/2012 | #1

mi è stato molto utile..

Leave your comment:

Name:

Email:

Emails will not be visible or used in any way, and are not required

Comment:


Verify code:


Type the code you can see here on the left
 

Note:
  • Please keep comments relevant
  • Any content deemed inappropriate or offensive may be edited and/or deleted
  • No HTML code is allowed. Please use BBCode to format your text
  • URLs, complete of "http://" o "mailto:" , will be auto-linked
  • Nota: questo materiale è di proprietà di Pk Lab ed è utilizzabile liberamente a condizione di citarne la fonte
    [Privacy] [Termini e condizioni] [Home Page]  [Search]
    Copyright PkLab (c) 2009
    Contatto: - P.Iva: 01219980776