Italiano English |
Navigators Sections In evidence Most required Last Modify
Intel 8086 Microprocessor System ArchitetureTranslation 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
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. CALCOLO DI UN INDIRIZZO FISICO DI UNA LOCAZIONE DI MEMORIA
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
-REGISTRI DI SEGMENTAZIONE: sono registri a 16 bit che vengono utilizzati con altri registri per generare gli indirizzi a 20 bit.
METODI DI INDIRIZZAMENTO
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 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/OutputLE 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
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
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 ALTOmov 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 BASSOmov 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 STATOmov 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
|
|
Nota: questo materiale è di proprietà di Pk Lab ed è utilizzabile liberamente a condizione di citarne la fonte
[Home Page] [Search]Copyright PkLab (c) 2011 Contatto: - P.Iva: 01219980776 |
Comments
1 comments (Send your comment)Sent by rob 07/05/2012 | #1
mi è stato molto utile..