Istruzioni per il Controllo del Processore

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Il Sistema Operativo Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per: gestire.
Programmazione assembler
in un programma Assembler
Procedure In assembler.
Gestione Input Output A. Ferrari.
Organizzazione della memoria
Perché le interruzioni?
Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory.
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
File.
L’organizzazione della comunicazione di I/O G. Vercelli
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Struttura dei sistemi operativi (panoramica)
L. Servoli - Corso Fisica dei Dispositivi Elettronici 1 Uno scheduler deve avere implementate almeno le seguenti funzionalità: 1) Inizializzatore: preparazione.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
I File.
Programmazione Avanzata
Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5,
GLI INTERRUPT PAG..
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Esercizio 18 – Le eccezioni Creare un trap-handler che gestisca opportunamente le eccezioni 7 (Bus error durante accesso ad area dati/stack ) e 12 (overflow)
INPUT / OUTPUT. Connessione tra componenti CPU RAM DischiMonitor StampanteTastieraMouse BUS = Interfacce o Controller.
Le procedure di gestione input/output Poiché le operazioni di input/output sono più lente rispetto alla velocità del processore, occorrerà sincronizzarle.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
Architettura degli elaboratori
Istruzioni per la Manipolazione dei Bit
Architettura del calcolatore
GESTIONE INTERRUPT CPU INTEL 8086
Introduzione al linguaggio assembly del microprocessore a parte
ARCHITETTURA DI UN ELABORATORE
BUS DI CPU M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Unità centrale di processo
Gli interrupt Quando una periferica richiede attenzione alla cpu genera un segnale detto di interrupt.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Architettura di una CPU
Il µP Intel 8086 Marco Lettieri 3 C Informatica A.S. 2009/2010 All’attenzione del Professor Claudio Gatto.
Architettura IA - 16 M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Procedure e Macro.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Gestione dei dispositivi di I/O:
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Sistemi Elettronici Programmabili
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
L’esecuzione dei programmi
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Il calcolatore Stefano Cagnoni e Monica Mordonini
Architettura IA - 16 M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda Interfaccia verso il bus.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Come esegue le istruzioni il microprocessore Un’istruzione è sempre composta da più operazioni elementari.
Architettura 8086/8088 M. Rebaudengo - M. Sonza Reorda
Gli interrupt Richiesta di attenzione alla cpu. Viene generato un segnale detto di interrupt diretto alla cpu.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Transcript della presentazione:

Istruzioni per il Controllo del Processore L’Assembler 8086 Istruzioni per il Controllo del Processore M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica

Istruzioni per il Controllo del Processore Servono a regolare il funzionamento del processore attraverso comandi software. Si dividono nelle seguenti categorie: istruzioni per la gestione delle interruzioni istruzioni sui flag istruzioni di sincronizzazione istruzione nulla.

Istruzioni di Interrupt Permettono di gestire gli Interrupt software. L’arrivo di un Interrupt causa: il salvataggio nello stack dei registri IP e CS il salvataggio, sempre nello stack, del Flag Register l’esecuzione di una routine di servizio dell’Interrupt (Interrupt Service Routine o ISR).

Differenze Interrupt-Procedure Il meccanismo di Interrupt è simile a quello di chiamata a procedura. Esistono tuttavia delle differenze: mentre l’esecuzione di una procedura può essere avviata solo via software, quella di una ISR può esserlo anche via hardware mentre una procedura può essere NEAR o FAR, una ISR è sempre FAR, in quanto la sua attivazione comporta comunque il caricamento di un valore in CS un Interrupt causa il salvataggio nello stack, oltre che dei registri CS e IP, anche del Flag Register.

Interrupt Vector L’indirizzo della routine di servizio dell’Interrupt viene ottenuto da una tabella allocata agli indirizzi bassi della memoria (locazioni da 0000:0000h a 0000:03FFh); ogni elemento di tale tabella, detta Interrupt Vector, contiene l’indirizzo di partenza, su 32 bit, della ISR relativa ad uno dei 256 Interrupt riconosciuti. 00000 IP0 CS0 IP1 00004 CS1 IP2 00008 CS2

Istruzione INT Causa l’attivazione della routine di servizio relativa ad un certo Interrupt. Formato INT interrupt-type dove interrupt-type identifica l’Interrupt, ossia il numero d’ordine nell’Interrupt Vector della ISR che si desidera attivare all’interno delle 256 ammesse dal sistema. L’Indirizzo Fisico cui accedere all’interno dell’Interrupt Vector viene ottenuto semplicemente moltiplicando per 4 il parametro interrupt-type.

INT (II) Le operazioni causate da una INT sono, nel dettaglio, le seguenti: salvataggio nello stack del Flag Register azzeramento dei flag TF (Trap Flag) e IF (Interrupt Enable/Disable) salvataggio nello stack del registro CS caricamento in CS della seconda word dell’Interrupt Vector salvataggio nello stack del registro IP caricamento in IP della prima word dell’Interrupt Vector.

Istruzione IRET È l’istruzione conclusiva di una ISR. Causa il ritorno del sistema nello stato precedente all’ultima INT e l’esecuzione delle istruzioni ad essa successive nel programma interrotto. Non ha operandi. Provoca le seguenti operazioni: preleva dallo stack il valore di IP preleva dallo stack il valore di CS preleva dallo stack il valore del Register Flag.

Istruzione INTO Equivale ad una INT 4 quando l’Overflow Flag (OF) è settato, altrimenti equivale ad un’istruzione nulla. Non ha operandi. Viene utilizzata quando è necessario controllare la validità del risultato di un’istruzione.

Istruzioni di Sincronizzazione Permettono all’ 8086/8088 di sincronizzarsi con dispositivi esterni: HLT forza il processore nello stato idle, in cui non esegue nessuna istruzione e da cui esce solo quando riceve un Interrupt esterno WAIT forza anch’essa il processore nello stato idle, ma con due differenze rispetto alla precedente: al termine di eventuali routine di servizio dell’Interrupt, il processore torna nello stato idle ogni 5 colpi di clock viene testata la linea TEST: quando questa diventa attiva il processore procede all’esecuzione dell’istruzione successiva alla WAIT. ESC usata per inviare istruzioni al coprocessore matematico 8087.

Regione critica Nel caso in cui occorra controllare l’accesso a resorse condivise in ambienti multitasking, normalmente, si usano variabili di tipo semaforo che permettono ad un solo processo di accedervi. L’implementazione del semaforo e’ la seguente: ; SEMAPHORE = 1: Regione critica disponibile MOV AL,0 TRYAGAIN: XCHG SEMAPHORE, AL JZ TRYAGAIN …. ; Regione Critica MOV SEMAPHORE, 1

Possibili conflitti Nel caso di un ambiente multiprocessore, qualora il semaforo valga 1 (regione critica disponibile), potrebbe succedere che 2 processori eseguano contemporaneamente l’istruzione di XCHG.

Dal momento che l’istruzione richiede 2 cicli di bus, potrebbe verificarsi la situazione seguente: 1> processore A usa il primo ciclo di bus per leggere il contenuto del semaforo 2> processore B usa il successivo ciclo di bus per leggere il contenuto del semaforo 3> processore A azzera il contenuto del semaforo completando l’istruzione XCHG 4> processore B azzera il contenuto del semaforo completando l’istruzione XCHG. Per entrambi i processori il semaforo varrebbe 1 ed occuperebbero la risorsa, con un evidente errore.

LOCK Non è un’istruzione vera e propria, ma un prefisso da premettere ad una istruzione, quando si vuole che nessun altro dispositivo utilizzi il bus fin tanto che essa non è stata completamente eseguita. MOV AL,0 TRYAGAIN: LOCK XCHG SEMAPHORE, AL ; istruzione eseguita in ; 2 consecutivi cicli di bus JZ TRYAGAIN … ; Regione Critica MOV SEMAPHORE, 1

Istruzione NOP Non esegue nessuna operazione, se non quella di far avanzare l’Instruction Pointer all’istruzione successiva. Sue possibili applicazioni sono: occupare il posto di una istruzione cancellata quando si vuole modificare il codice macchina senza doverlo ri-assemblare; introdurre un periodo di attesa di durata nota prima dell’esecuzione dell’istruzione successiva.

Istruzioni sui Flag Permettono di settare, resettare e complementare alcuni flag. Sono: STC, CLC, CMC: settano, resettano e complementano il Carry Flag STD e CLD: settano e resettano il Direction Flag STI e CLI: settano e resettano l’Interrupt Flag.

INT 21 Il DOS mette a disposizione del programmatore una serie di procedure di sistema per eseguire varie operazioni, tra cui l’input da tastiera e l’output su video di singoli caratteri. L’accesso a tali procedure avviene attraverso l’istruzione INT 21. L’operazione richiesta viene specificata scrivendo un opportuno valore nel registro AH.

Input da tastiera AH=1: aspetta che sulla tastiera venga battuto un tasto, lo visualizza, e ne ritorna il codice ASCII in AL AH=6; come il precedente, ma non è sensibile al CTRL-BREAK AH=7: come il primo, ma non è sensibile al CTRL-BREAK, ed il carattere non viene visualizzato. AH=8: come il precedente, ma è sensibile al CTRL-BREAK

Input da tastiera (II) AH=0AH: legge una stringa (terminata da <CR>) e la mette in un buffer, il cui indirizzo è preso in DS:DX; nel primo carattere deve essere stata preventivamente scritta la lunghezza del buffer, nel secondo viene scritta la lunghezza della stringa letta.

Output su video AH=2: visualizza il carattere il cui codice ASCII è contenuto in DL; esegue il controllo su CTRL-BREAK AH=5: scome il precedente, ma senza il controllo su CTRL-BREAK AH=9: visualizza la stringa il cui indirizzo è contenuto in DS:DX, e il cui termine è segnalato dal carattere ‘$’.

Data e Ora AH=2AH: acquisisce la data, scrivendo in CX il numero dell’anno, in DH quello del mese, in DL quello del giorno AH=2CH: acquisisce l’ora, scrivendo in CH l’ora, in CL i minuti, in DH i secondi, in DL i centesimi di secondo.