Il linguaggio assembly 8086

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il linguaggio assembly 8086"

Transcript

1 Il linguaggio assembly 8086 Introduzione Il linguaggio macchina Il linguaggio naturale di un microprocessore è il linguaggio macchina. Nel linguaggio macchina non esistono riferimenti astratti o simbolici e tutte le operazioni sono eseguite direttamente sui registri o in locazioni assolute di memoria. La programmazione in linguaggio macchina è stata a lungo l unica possibile, all inizio dell epoca del calcolo elettronico, prima dell introduzione degli assemblatori e dei compilatori. Il linguaggio macchina non è altro che l insieme delle istruzioni definite per un particolare processore. Ogni istruzione è identificata dal suo codice, di solito riportato in binario o esadecimale. Il linguaggio macchina si compone di istruzioni alle quali fanno immediatamente seguito i relativi operandi. Un esempio di linguaggio macchina per il processore Intel 8086 è il seguente codice per il confronto del contenuto dell accumulatore AX con la costante 2066: Per facilitare la descrizione delle istruzioni e degli operandi, si fa uso della notazione esadecimale in alternativa a quella binaria. L esempio precedente assume in esadecimale questo aspetto: 3D Resta però difficile lavorare anche con questa notazione. Il codice rimane indistinguibile dagli operandi e solo a fatica, con l aiuto di una tabella di conversione si riconosce in 3D l istruzione di confronto. Un certo impegno è anche necessario per la traduzione di in (1*16)+2+(8*256)=2066. (viene memorizzato prima il byte della parte bassa e poi il byte della parte alta del numero considerato a 16 bit) Oggi la programmazione in linguaggio macchina non ha praticamente più alcun interesse. Ovunque possibile viene fatto uso di linguaggi ad alto livello. Nei casi in cui si vuole programmare il più vicino possibile alle risorse della macchina si fa uso di un linguaggio assembler. Assembler Il codice binario (o la sua rappresentazione equivalente esadecimale) usato nel linguaggio macchina è molto scomodo; per l uomo è molto più facile raffigurare e lavorare con simboli e messaggi piuttosto che con cifre. I linguaggi assembler o assembly sono stati introdotti proprio per eliminare i problemi di uso del linguaggio macchina. Le caratteristiche principali dei linguaggi assembler sono le seguenti: 1. In assembler le istruzioni non sono identificate da codici astratti ma da simboli letterali con significato mnemonico. ADD significa ad esempio addizione. 2. Alle variabili viene fatto riferimento per nome e non per locazione assoluta di memoria. 3. E possibile definire istruzioni macro assembler, composte a loro volta da altre istruzioni, e richiamarle nel programma. L istruzione assembler corrispondente all esempio in linguaggio macchina sopra riportato è: CMP AX, 2066 Pag. 1

2 che senza dubbio è più facile da comprendere rispetto alla rappresentazione binaria e esadecimale del linguaggio macchina. L assembler estende le istruzioni originali del linguaggio macchina, identificate da appositi simboli, con proprie istruzioni di definizione dati, operative, ecc. Il programma assembler viene tradotto in linguaggio macchina da un programma apposito, chiamato assemblatore. Ogni istruzione assembler corrisponde a una istruzione in linguaggio macchina. Un ulteriore vantaggio dell assembler rispetto al linguaggio macchina è che l assemblatore prima di tradurre il codice di ingresso effettua un controllo sulla sua correttezza. Questo contribuisce ad identificare ed eliminare eventuali errori. Il controllo degli errori da parte dell assemblatore è formale e si riferisce solo all aspetto delle istruzioni. In assembler, a differenza dei linguaggi ad alto livello, tutto è permesso. In assembler non esistono tipi di dati e la stessa distinzione tra dati e codice non è molto netta; nulla impedisce di trattare il codice come se fossero dei dati e viceversa. Il ricorso all assembler può essere importante per generare delle funzionalità particolari e non disponibili nell ambito del linguaggio di cui si fa uso ( S.Operativi o programmazione in tempo raale) o nei casi in cui sia importante la dimensione del codice macchina generato ( microcontrollori con capacità di memoria limitata). Consideriamo a titolo di esempio due programmi che svolgono la stessa funzione: entrambi scrivono sullo schermo la parola ciao. Il primo programma è scritto in C, il secondo in assembler. #include <stdio.h> main() { printf( ciao \n ); } DSEG SEGMENT Outstr db ciao,13,10, $ DSEG ENDS SSEG SEGMENT stack dw 32 dup (?) SSEG ENDS ;segmento dati ;segmento catasta CSEG SEGMENT ;segmento codice assume cs:cseg, ds:dseg, ss:sseg start: mov bx,dseg mov ds,bx ;DS=DSEG via bx mov dx,offset outstr ;puntatore a ciao mov ah,09h ;uscita su schermo int 21h ;richiamo MS-DOS mov ah,4ch int 21h CSEG ENDS END start ;termine programma ;richiamo MS-DOS ; termine programma ; inizio a start Pag. 2

3 Il primo programma è molto più compatto del secondo, oltre che più facile da leggere e capire. Il programma assembler è a prima vista certamente molto più complicato ed è necessario un certo tempo per analizzarne e comprenderne le funzioni, che in questo caso sono comunque molto semplici. Entrambi i programmi funzionano secondo lo stesso principio, richiamando un modulo del sistema operativo per la presentazione di una stringa sullo schermo. Nel programma in linguaggio C i dettagli di questa chiamata sono nascosti al programmatore al quale è sufficiente scrivere l istruzione printf. Spetta al compilatore generare la chiamata al sistema operativo, aggiungere alla stringa i codici di controllo a capo e ritorno carrello, ecc. Nel programma assembler è necessario tenere esplicitamente conto di tutti questi aspetti. Le chiamate al sistema operativo hanno luogo per mezzo dell istruzione INT 21h. La stringa di uscita è definita nell area dati; con essa devono essere indicati esplicitamente i codici di a capo (ASCII 10), ritorno carrello (ASCII 13) e termine stringa $. La differenza nello spazio occupato in memoria dai due programmi è evidente quando si passa a compilarli e collegarli. Le dimensioni in byte dei codici sorgente, oggetto (compilato) e eseguibile (collegato) dei due programmi sono qui confrontate: Programma C Programma assembler Cod. sorgente 57 byte 682 Cod. compilato Prog. eseguibile 15 KB 610 La differenza nelle dimensioni del programma sorgente assembler è dovuta al maggior spazio richiesto per le istruzioni e per i commenti necessari. Il codice compilato è però già più compatto per il programma assembler. La differenza più rilevante si nota dopo che i programmi sono stati collegati alle rispettive biblioteche e routine di servizio: il programma in assembler manca quasi completamente di overhead, che invece caratterizza il programma in C. Il programma scritto in assembler è più rapido a caricarsi e eseguirsi; entrambi i programmi producono lo stesso risultato e non sono distinguibili solo sulla base di quest ultimo. Non esistono criteri assoluti per optare per un linguaggio ad alto livello oppure assembler. Se con l assembler è possibile scrivere programmi più efficienti, è anche vero che la loro stesura prende molto più tempo rispetto allo scrivere programmi in un linguaggio avanzato. Anche la documentazione e la manutenzione di programmi assembler sono più difficili e dispendiosi. La programmazione in assembler resta comunque di attualità in tutti i casi dove con la programmazione ad alto livello si raggiungono i limiti di capacità di memoria o velocità di esecuzione di una macchina. Alcune funzioni, in particolare quelle che agiscono direttamente sulle risorse del sistema, non sono realizzabili se non in assembler. Aspetto non trascurabile della programmazione assembler è il suo carattere didattico. Indipendentemente dal numero e tipo di prodotti software installati in un sistema, il processore, almeno con le architetture attuali, opera su istruzioni di macchina assimilabili a quelle di un programma assembler. L assembler aiuta quindi a comprendere meglio i meccanismi di funzionamento della macchina. Esistono diversi linguaggi assembler per lo stesso processore, così come di ogni linguaggio ad alto livello esistono versioni differenti. Il microprocessore 8086 (e famiglia) Il microprocessore 8086, appartiene a una famiglia di processori prodotti dalla società Intel. Esso ha una lunghezza di parola di 16 bit, ma può lavorare anche su byte (8 bit). Il bus dati dell 8086 è di 16 bit e la memoria indirizzabile 1 Mbyte. Pag. 3

4 Il set di istruzioni del microprocessore 8086 comprende circa 70 istruzioni di base combinabili in un massimo di 30 modi diversi di accesso alla memoria. L 8086 ha fatto la sua comparsa nel Un anno più tardi è uscito il tipo 8088, la cui unica differenza rispetto all 8086 è di fare uso di un bus dati di 8 bit invece che di 16, pur mantenendo intatta la possibilità di indirizzare 1 Mbyte di memoria. In tutto il resto, e in particolar modo in riferimento agli aspetti di programmazione, i due microprocessori sono identici. Nel 1983 la Intel ha prodotto il microprocessore Esso ha una lunghezza d parola e un bus dati a 16 bit, ma la possibilità di indirizzare 2 24 byte di memoria (16 Mbyte). Novità di questo nuovo processore è la possibilità di lavorare in due modi, reale e protetto. Nel modo reale l indirizzamento è limitato a 1 Mbyte di memoria e le istruzioni sono quelle dell 8086 mantenendo quindi la compatibilità con quest ultimo. Nel modo protetto si possono indirizzare 16 Mbyte di memoria oltre che fare uso di nuove istruzioni. L 8086 è stato progettato per facilitare la multiprogrammazione per mezzo sia di istruzioni sia di una gestione più razionale dello spazio di memoria. Nel 1986 compare l Intel La sua lunghezza di parola e il suo bus sono a 32 bit; esso ha inoltre la possibilità di indirizzare direttamente 4 Gbyte di memoria, l intero spazio descrivibile con 2 32 indirizzi. I registri Il microprocessore 8086 dispone di 14 registri per l esecuzione delle operazioni aritmetiche e logiche e per l indirizzamento delle aree dati, di programma e di catasta. Alcuni registri sono associati a particolari operazioni AH AL BH CH DH BL CL DL Accumulatore AX Base Conteggio CX Dati BX DX 15 0 SP BP SI DI Puntatore catasta Puntatore base Indice sorgente Indice destinazione CS DS SS ES Segmento codice Segmento dati Segmento catasta Segmento extra IP ODITSZ A P C Contatore istruzione Flag Pag. 4

5 I registri più flessibili e più frequentemente usati sono i registri dati AX, BX, CX, DX. Questi registri possono essere considerati sia come entità uniche a 16 bit, sia come coppie di registri a 8 bit. L accumulatore AX è ad esempio composto dai registri a 8 bit AH e AL, singolarmente indirizzabili. In maniera analoga si hanno BH, BL, CH, CL, DH, DL. Il registro AX serve da accumulatore principale. Operazioni aritmetiche e logiche vengono di solito effettuate su questo registro. Tutte le operazioni di ingresso e uscita vengono effettuate via AX. BX è il registro base. Questo è l unico dei registri di uso generale che può anche essere utilizzato per puntare a locazioni di memoria. CX è il registro di conteggio. Il contenuto di CX viene automaticamente diminuito di 1 a ogni ciclo nell esecuzione di istruzioni iterative, facilitando in questo modo molte operazioni su stringhe e di spostamento dati. Il registro dati DX è anche utilizzato come puntatore in alcune istruzioni di ingresso/uscita. I registri AX, BX, CX, DX possono essere usati liberamente per operazioni aritmetiche e logiche, a eccezione di alcune operazioni quali la moltiplicazione MUL, la divisione DIV e altre ancora che richiedono che alcuni degli operandi si trovino in registri prestabiliti. Un seondo gruppo di registri è quello dei registri puntatori e indice. SP (stack pointer) è il puntatore all inizio della catasta; viene automaticamente modificato all esecuzione delle istruzioni PUSH, quando nuovi dati vengono messi in catasta, e POP quando i dati vengono tolti dalla catasta. BP è il puntatore base e serve per accedere direttamente a dati che si trovano sulla catasta. I due indici sorgente SI e destinazione DI puntano alla memoria dati. Essi vengono usati per passare più dati in successione da una locazione iniziale a una finale, ad esempio nel trasferimento di stringhe di caratteri. I registri CS, DS, SS, ES puntano ai segmenti definiti in memoria. In particolare il segmento di codice CS punta al segmento contenente le istruzioni del programma, DS (data segment) al segmento dell area dati e SS (stack segment) al segmento di catasta. Non è necessario che i segmenti siano localizzati in zone diverse della memoria; le rispettive aree possono coincidere. E infine a disposizione un altro registro di segmento, ES (extra segment). Esso è usato per indirizzare un area dati diversa da quella alla quale fa riferimento DS. IP(instruction pointer) è il puntatore alla prossima istruzione di programma che deve essere eseguita. IP è automaticamente incrementato ogni volta che una nuova istruzione viene letta dalla CPU. Le 9 flag del sistema 8086 sono raccolte in un registro collettivo che ha come nome stato del processore. Ogni flag corrisponde ad un bit del registro di stato; i rimanenti 7 bit non sono utilizzati. Le flag non sono indirizzabili singolarmente, per l accesso ad esse occorre far uso delle funzioni definite a questo scopo. Le flag sono: Carry, Parità, Auxiliary carry, Zero, Sign, Trap, Interrupt, Direction e Overflow. In generale, le flag servono sia per determinare le condizioni di esecuzione del processo, sia per riportare il risultato di un operazione e gli eventuali errori. Per questo i valori delle flag vengono modificati mediante l uso di apposite istruzioni e anche automaticamente durante l esecuzione di operazioni aritmetiche e logiche. Le flag Carry, Auxiliary carry, Overflow e Sign riflettono il risultato dell ultima operazione aritmetica che è stata eseguita, segnalando eventuali condizioni di errore. Le flag Parità e Zero indicano in maniera compatta le condizioni di parità sui bit di una parola e se il risultato di una operazione è uguale a zero. Le flag Direction, Interrupt e Trap sono sotto il controllo esclusivo dell operatore. Direction indica se le operazioni di trasferimento di blocchi di dati vanno eseguite per indirizzi crescenti o decrescenti di memoria; Interrupt serve all abilitazione o disabilitazione delle interruzioni e Trap mette il processore in un modo di esecuzione di una sola istruzione alla volta. Quest ultima flag è di utilità in fase di controllo dei programmi. Pag. 5

6 Indirizzamento Il microprocessore 8086 è in grado di indirizzare un massimo di 1 Mbyte di memoria. Dato che la sua lunghezza di parola è di 16 bit, con i quali è possibile identificare 2 16 =65536 celle elementari di memoria (byte), è stato scelto di impiegare un sistema un sistema di indirizzamento più complesso basato sull uso dei segmenti. Lo spazio di memoria di 1 Mbyte è considerato diviso in segmenti, ciascuno di 16 byte di lunghezza. Gli indirizzi effettivi di memoria sono calcolati combinando una parola di segmento e una di offset (spostamento) all interno del segmento. Il valore del segmento è moltiplicato per 16 e addizionato alla parola di offset per ottenere il puntatore alla locazione assoluta di memoria indirizzo offset ( 16 bit) segmento (16 bit) locazione effettiva di memoria (20 bit) In conseguenza di questo particolare metodo di indirizzamento gli indirizzi sono scritti con una coppia di parole segmento:offset. Ad esempio in forma esadecimale come: 0A16:255E. La locazione effettiva indirizzata è: 0255E +0A160 0C7BE Secondo questo principio diversi indirizzi segmentati possono corrispondere allo stesso indirizzo assoluto. In riferimento all esempio mostrato, anche 0C16:055E e 0825:446E puntano alla medesima locazione. Il calcolo delle locazioni effettive di memoria avviene internamente al processore ed è completamente trasparente al programmatore. In altre parole, da programma vengono caricati i valori nei segmenti e nei registri di puntamento alla memoria. Le locazioni effettive ne risultano così definite e non è necessario calcolarle esplicitamente. Questo tipo di indirizzamento è il risultato di una scelta di sistema. Il microprocessore 8086 doveva avere una lunghezza di parola di 16 bit; 64 Kbyte erano però troppo poche per le applicazioni già previste in fase di sviluppo. 1 Mbyte di memoria di memoria indirizzabile è stato considerato un valore realistico e più adatto alle applicazioni del processore. E concepibile estendere il concetto degli indirizzi segmentati. Con due parole di 16 bit sono indirizzabili un massimo di 2 32 locazioni, corrispondenti a 4 Gbyte di memoria. Questo metodo è stato scartato nell 8086 probabilmente per evitare di appesantire il sistema con linee di bus più grandi, con un tempo più lungo per il calcolo degli indirizzi ecc. Pag. 6

7 Nell esecuzione della maggior parte delle operazioni il microprocessore 8086 fa uso di registri predeterminati. Il puntatore alla successiva istruzione da eseguire è dato dalla coppia CS:IP. Il puntatore alla locazione attuale di catasta è SS:SP. Non è possibile ridefinire questi registri, ma solo modificarne indirettamente il valore. Per l indirizzamento dell area dati si ha maggiore flessibilità. Principalmente si fa uso del segmento dati DS e del segmento extra ES insieme ai puntatori SI e DI o il registro base BX. Struttura di un programma MS Macro Assembler Nomi Un nome è una sequenza di caratteri che serve a identificare univocamente variabili e procedure definite in un programma. Esso può avere lunghezza qualsiasi; l assembler fa riferimento ai primi 31 caratteri. Un nome deve iniziare con una lettera o uno dei segni _,?, ; esso non può iniziare con un numero, anche se è permesso fare uso di numeri internamente al nome. L assembler interpreta allo stesso modo lettere maiuscole e minuscole che possono essere così liberamente scambiate. Un nome infine, non deve riprodurre uno dei termini predefiniti dall assembler come ADD, MOV, LABEL, LENGTH, ecc. Formato delle istruzioni assembler Una riga di programma assembler ha il seguente aspetto: [nome] istruzione operandi [;commenti] Delle quattro parti che la compongono, solo l istruzione di operazione e gli eventuali operandi sono obbligatorie. Le parti rimanenti sono opzionali. Il nome serve a identificare una parte di programma o una variabile: out_string DB Ciao ;variabile continue: MOV AX,BX ;parte di programma display_text PROC NEAR ;sottoprogramma L istruzione rappresenta la parte principale dell intera linea di programma. Essa può essere sia un istruzione originale del linguaggio macchina 8086 sia un istruzione Macro Assembler. Gli operandi, se richiesti dall istruzione, devono sempre essere indicati. Il commento è un testo libero preceduto da un punto e virgola. Il commento serve a descrivere meglio l istruzione assembler che da sola è, per sua natura, difficilmente comprensibile. E buona norma che i commenti siano concisi ma allo stesso tempo il più esplicativi possibile. E superfluo ripetere nel commento il significato di una istruzione (lo si capisce infatti dall istruzione stessa). Piuttosto è meglio scrivere perché si fa uso proprio di una certa istruzione. Evitare quindi di scrivere: MOV AX,BX ; copia BX in AX scrivere piuttosto: MOV AX,BX ; parametro in AX ; per passaggio a sottoprogramma Rappresentazione dei dati La rappresentazione dei dati è una parte introdotta con il Macro Assembler. L insieme di istruzioni di macchina originali 8086 non comprende infatti alcuna definizione di struttura di dati, ma offre soltanto istruzioni per operare su locazioni di memoria. Pag. 7

8 Nel Macro Assembler sono a disposizione un certo numero di direttive per la definizione dei dati. I dati vengono incorporati nel codice macchina prodotto nella posizione e nel formato con il quale essi vengono definiti. Uno dei vantaggi maggiori del linguaggio assembler rispetto a quello di macchina è proprio la possibilità di fare riferimento alla memoria con operatori simbolici (i nomi delle variabili) invece che con indirizzi assoluti. Per la definizione delle variabili sono a disposizione le seguenti istruzioni: DB define byte DW define word DD define doubleword DQ define quadword DT define tenword Con DB si definiscono uno o più byte, singolarmente indirizzabili: constant DB 10 textstring DB Questa è una riga di testo all_zero DB 100 dup (0) Nel primo esempio è allocato (riservato) un byte di memoria all indirizzo stabilito dal contatore; esso viene inizializzato con il valore 10. Nel secondo esempio, la stringa Questa è una riga di testo è scritta sotto forma di codici ASCII, a iniziare dal byte al quale punta textstring. Nel terzo esempio viene generata una stringa lunga 100 byte, ognuno dei quali assume valore iniziale 0. La direttiva dup serve a far ripetere 100 volte il valore indicato ( ). DW (Define word) serve alla definizione di una variabile che ha lunghezza di una parola (16 bit): total_count DW 0 Per total_count è allocata in memoria una parola con valore iniziale 0. Nell 8086 le parole sono memorizzate in due byte adiacenti. Nel byte con indirizzo inferiore è messa la parte meno significativa della parola, seguita dalla parte più significativa. La parola 1234 hex è pertanto memorizzata come Occorre fare pertanto attenzione quando si accede ai singoli byte di una parola in memoria di fare riferimento alla parte effettivamente desiderata. DD, DQ e DT servono rispettivamente per l allocazione in memoria di 4 byte, 8 byte e 10 byte. L assemblatore è piuttosto rigido nel controllare, per quanto possibile, i tipi di dati. In fase di assemblaggio viene segnalato un errore se si prova a trasferire una variabile definita come byte in un registro della lunghezza di una parola o viceversa. Dato che le istruzioni operative, pur mantenendo lo stesso nome, hanno aspetto differente nel codice macchina generato, l assemblatore ha bisogno di una dichiarazione esplicita dei tipi di dati per decidere quale istruzione vada scelta in ogni caso specifico. In assembler non è fatta alcuna distinzione tra dati variabili e costanti. Ogni dato in memoria è singolarmente indirizzabile e modificabile. L istruzione EQU (nome EQU espressione) accetta quale espressione una costante, una stringa di testo o un espressione. L espressione numerica viene calcolata prima di essere assegnata alla variabile simbolica nome, un testo viene invece sostituito senza subire variazioni. a_1 EQU 24 ; a_1 prende il valore 24 pk EQU 10*20 ; pk prende il valore 200 msg EQU esecuzione interrotta DOScall EQU INT 21h Pag. 8

9 inc10 EQU ADD AX,10 msg, DOScall e inc10 sono sostituiti dalle linee di testo indicate dopo EQU ogni volta che si incontrano nel programma sorgente. L uso di EQU contribuisce a rendere più leggibili i programmi una volta che le proprie istruzioni mnemoniche siano state correttamente scelte. Segmenti Il microprocessore 8086 fa uso di 4 segmenti per indirizzare le sezioni di memoria in cui sono contenuti i dati, il codice del programma e la catasta. Con l istruzione Macro Assembler SEGMENT è possibile dichiarare separatamente le aree da associare ai segmenti. La fine di un segmento è indicata da ENDS (End Segment) AreaDati SEGMENT AreaDati ENDS ProgArea ProgArea SEGMENT ENDS La definizione esplicita di tutti i segmenti non è obbligatoria. Un programma può consistere di un solo segmento. I registri DS e ES sono inizializzati dal sistema operativo all atto del caricamento di un programma in modo da puntare all inizio dell area dedicata al processo, che non corrisponde a quella dove sono contenuti i dati. Se si vuole che DS punti effettivamente all area dati, occorre caricare in esso l indirizzo relativo con le istruzioni seguenti: MOV AX, AreaDati MOV DS,AX ; DS=AreaDati Nell istruzione di spostamento dati MOV la destinazione è indicata per prima. Il passaggio attraverso AX è necessario in quanto non è possibile caricare direttamente una costante in un registro di segmento ma occorre passare per uno degli altri registri. Il caricamento diretto nel registro CS non è permesso in alcun caso. Questo registro può essere modificato solo da istruzioni di controllo dell esecuzione del programma che agiscono contemporaneamente sul registro IP, quali ad esempio JMP, CALL, RET ecc. Una direttiva molto importante per le operazioni sui segmenti è quella di ASSUME. Questa direttiva serve ad indicare all assemblatore quale segmento, tra quelli dichiarati, è da considerare associato ai registri di segmento. La direttiva ASSUME precede le istruzioni di movimento dati: ASSUME DS: AreaDati, CS: ProgArea ASSUME indica all assemblatore in quale segmento si trovano le variabili in modo che possano essere calcolati i puntatori ad esse relativi. Direttive Semplificate Per definire i segmenti è possibile utilizzare una modalità semplificata.model SMALL ; o altri modelli.data ; i dati Pag. 9

10 .CODE inizio: MOV MOV DS,AX ; inizializza DS al segmento dati.stack END inizio Istruzioni di base Movimento dati Istruzione fondamentale per il movimento dei dati da una locazione di memoria a un altra è MOV, che può operare sia su un byte (8 bit) che su una parola (16 bit). MOV ha come operandi registri, puntatori alla memoria oppure costanti. L assemblatore riconosce dagli operandi se l operazione è a 8 o a 16 bit e genera l istruzione di macchina opportuna. Nell istruzione MOV al primo operando corrisponde la destinazione e al secondo il punto di origine, come nell esempio seguente dove un byte viene spostato da CH in AL: MOV AL,CH CH non viene modificato in seguito a questa operazione. In maniera analoga ha luogo lo spostamento di una parola da registro a registro: MOV BX,AX In questo caso il valore di AX viene copiato in BX. In linguaggio macchina è possibile far riferimento a locazioni assolute di memoria, come nel caso seguente dove una parola è copiata dalla memoria in AX: MOV AX,[04h] In questa operazione è sottointeso il segmento DS e la parola copiata si trova alla locazione assoluta DS:04. In un programma MS Macro Assembler i riferimenti alle locazioni di memoria riservate alle variabili sono simbolici e in questo caso si fa uso del puntatore a byte, BYTE PTR o a parola WORD PTR: alfa DW 1234h MOV AL, BYTE PTR alfa Il contenuto del byte meno significativo, a causa della registrazione in memoria a rovescio nella variabile alfa, 34h, è copiato in AL. Modi di indirizzamento della memoria Con l istruzione MOV AL,[300h] si copia in AL il contenuto della locazione di memoria DS:300h. Il segmento DS è sottointeso. Tale modo di indirizzare la memoria è denominato diretto. Un altro modo di indirizzare la memoria è quello indiretto tramite registri. Si utilizzano in questo caso i seguenti registri: [BX] [SI] [DI] [BP] Pag. 10

11 Per esempio l istruzione MOV AH,[BX] copia il contenuto della locazione di memoria indirizzata da DS:BX in AL.. L effettivo indirizzo dell operando sorgente si ottiene dal segmento DS *16 + offset dove per offset si intende il contenuto di BX. E come se fosse scritto MOV AH,DS:[BX]. Nel caso in cui si volesse forzare il processore ad utilizzare un altro registro di segmento, questo deve essere esplicitamente indicato: MOV AH,CS:[BX] MOV AH,ES:[BX] Anche i registri SI e DI possono essere utilizzati con la stessa modalità di BX. MOV AL, [SI] MOV BL,[DI] il registro DS è sempre sottointeso. L indirizzamento indiretto può essere utilizzato per ll operando di destinazione. L istruzione MOV [BX], AL copia il contenuto di AL nella locazione indirizzata da DS*16+BX. Il registro BP, a differenza degli altri, fa sempre riferimento all area di stack che è indirizzata attraverso il registro di segmento SS. MOV BX,[BP] è trattato come MOV BX,SS:[BP] Istruzioni aritmetiche Le istruzioni aritmetiche più frequentemente usate sono: ADD, SUB, MUL, DIV, INC, DEC, CMP. Le istruzioni di addizione ADD e sottrazione SUB sono complementari; esse operano su un qualsiasi registro o locazione di memoria. Il primo operando contiene in seguito il risultato dell operazione. Addizione della costante 5 ad AX, con risultato in AX: ADD AX,5 Addizione del contenuto di CX a quello di BX, con risultato in BX: ADD BX,CX Per l addizione del contenuto di un registro a quello di una locazione di memoria valgono le considerazioni già fatte a proposito di MOV. Per i riferimenti alle variabili in memoria vengono usati i puntatori BYTE PTR e WORD PTR. Sottrazione del contenuto di BH da quello di AH, con risultato in AH: SUB AH,BH INC (incremento) e DEC (decremento) operano rispettivamente addizionando e sottraendo 1 al registro o alla locazione di memoria indicata. Queste istruzioni sono eseguite più rapidamente delle corrispondenti ADD reg/mem,1 e SUB reg/mem,1; inoltre prendono meno spazio in memoria. Incremento di SI di 1: INC SI La moltiplicazione MUL e la divisione DIV fanno uso di alcuni registri predefiniti. In entrambi i casi si distingue tra operazioni a 8 e a 16 bit; eventuali condizioni di overflow o di errore sono segnalate per mezzo delle flag aritmetiche. Moltiplicazione e divisione fanno sempre uso dell accumulatore principale AX come uno degli operandi. Per la moltiplicazione tra due numeri a 8 bit uno degli operandi è messo in AL, l altro può trovarsi in qualsiasi registro o locazione di menoria. Nell istruzione il registro AL è sottointeso: MUL BL ; AL*BL -> AX Pag. 11

12 Il risultato di una moltiplicazione con operando a 8 bit può avere lunghezza fino a 16 bit ed è messo in AX. Se gli 8 bit superiori del risultato sono diversi da 0, le flag CF e OF assumono valori 1 ad indicare la presenza di cifre significative. In maniera analoga avviene la moltiplicazione tra due parole a 16 bit. Una parola è messa in AX, l altra è in un registro o locazione di memoria qualsiasi. Il risultato è diviso: i 16 bit inferiori sono in AX, i 16 bit superiori in DX. Se il contenuto della parola più significativa DX, è diverso da 0, CF e OF prendono valore 1. Nell 8086 sono possibili due operazioni di divisione, di una parola a 16 bit per un byte e di una parola doppia (a 32 bit) per una parola a 16 bit. La divisione ha luogo sempre su numeri interi senza segno e produce un quoziente e un resto anch essi interi. Nella divisione a 8 bit il dividendo è messo in AX e il divisore, registro o locazione di memoria, è esplicitamente indicato: DIV CL In seguito a questa operazione il quoziente (intero) viene riportato in AL e il resto in AH. Nella divisione a 16 bit, il dividendo ha una lunghezza di 32 bit. I suoi 16 bit più significativi sono messi in DX e quelli meno significativi in AX. Effettuata l operazione, il quoziente è ritornato in AX e il resto in DX. DIV WORD PTR alfa L operazione di divisione è sempre riferita ad un registro o una locazione di memoria. L assembler ha bisogno anche in questo caso di un riferimento univoco al tipo di indirizzamento in memoria, per BYTE o per WORD, in modo da generare le istruzioni macchina corrispondenti. Istruzioni logiche Il microprocessore 8086 dispone di istruzioni che permettono di operare sui registri con le più importanti funzioni logiche: AND, OR, NOT, XOR, di spostamento (shift) SHL e SHR e di rotazione ROL e ROR. Le istruzioni AND, OR, NOT e XOR agiscono contemporaneamente su tutti i bit di un registro o locazione di memoria. L istruzione AND è usata in particolare per mascherare o estrarre singoli bit da una parola. Come per le funzioni matematiche, gli operandi delle istruzioni logiche sono registri e locazioni di memoria. Il primo degli operandi indicati è anche quello destinato a ricevere il risultato dell operazione: AND AX,BX Solo nel caso di NOT l operando è uno solo: NOT DX Nel seguente esempio l istruzione AND è utilizzata per estrarre i primi 4 bit più significativi del registro AX, azzerando i successivi: AND AX,0F000h ( h serve a indicare che la costante rappresenta un valore esadecimale). L istruzione di OR esclusivo XOR, è usata per azzerare il contenuto di un registro in alternativa a MOV reg,0: XOR AX,AX Le istruzioni di spostamento (shift) a destra e a sinistra, SHL e SHR e di rotazione (rotate) a destra e a sinistra, ROR e ROL richiedono che il numero di bit di spostamento o rotazione si trovi nel registro CL. Uno spostamento a sinistra di 4 bit del contenuto di AX viene effettuato nel modo seguente: MOV CL,4 SHL AX,CL Pag. 12

13 Per lo spostamento e la rotazione di un solo bit è sufficiente la forma diretta dell istruzione, passando all assemblatore l operando 1: SHR AX,1 Non è possibile fornire un operando costante diverso da 1; in tal caso occorre far uso del registro CL. Operazioni su catasta La catasta (stack) è una struttura dati utilizzata per memorizzare risultati intermedi di operazioni, per trasferire dati ad altri moduli del programma e per salvare lo stato dei registri quando l esecuzione del programma principale viene interrotta per passare il controllo ad un sottoprogramma. La catasta è una zona riservata della memoria che può essere localizzata ovunque. L accesso alla catasta funziona secondo il principio LIFO ( Last In First Out), l ultimo dato a entrare è il primo a uscire. I registri relativi alla catasta sono il segmento SS (stack segment) e SP (stack pointer), puntatore alla posizione dell ultimo elemento messo su catasta. SP è sempre riferito a SS; non è possibile cambiare questa definizione. Nell implemetazione dell 8086 la catasta cresce da una posizione iniziale verso locazioni inferiori di memoria. Sulla catasta possono essere poste solo parole di 16 bit. Le operazioni principali su catasta sono due, PUSH e POP. Con l istruzione PUSH un registro, oppure due byte di memoria, sono copiati nella locazione di memoria SS:SP dopo che SP è stato diminuito di due (lo stack cresce verso locazioni inferiori di memoria). Operazione inversa a PUSH è POP che toglie parole dalla catasta e le mette nel registro o nella locazione di memoria indicata come operando. Dopo un operazione di POP, SP è incrementato di 2. Esempio di istruzioni di uso dello stack: PUSH AX POP ES ; ES=AX Dato che le operazioni sono limitate a parole di 16 bit, non è possibile eseguire ad esempio PUSH BH. Inoltre, anche sulla catasta le parole sono registrate con la parte meno significativa per prima. Le flag sono copiate in catasta con un operazione unica PUSHF. Similmente POPF legge una parola dalla catasta e assegna di conseguenza i relativi valori alle 9 flag. La catasta è usata anche per il passaggio dei dati a sottoprogrammi. Dato che al richiamo del sottoprogramma sulla cima della catasta si trovano i puntatori di ritorno al processo chiamante ( CS e IP ), non è possibile accedere ai dati contenuti in essa con operazioni di POP. Si fa in questo caso uso del puntatore di base BP caricato con il valore di SP. Le istruzioni relative hanno di solito il seguente aspetto: PUSH BP MOV BP,SP MOV AX, [BP] +6 ; primo parametro MOV BX, [BP] + 8 ; secondo parametro POP BP In seguito all operazione PUSH BP sulla catasta si trovano in ordine, BP,IP,CS, l ultimo parametro messo sulla catasta con PUSH, il penultimo parametro e così via. Per accedere a questi parametri è quindi necessario addizionare a BP una costante relativa alla loro posizione sulla catasta. Al termine del sottoprogramma, il valore originale di BP è ripristinato con un istruzione POP. Pag. 13

14 Operazioni di salto Le operazioni di salto servono ad interrompere l esecuzione sequenziale di un programma per proseguirla da un altro punto. Le operazioni di salto vengono utilizzate per realizzare cicli iterativi e nella scelta tra più alternative di esecuzione. I salti possono essere incondizionati e condizionati. Con un salto incondizionato il controllo viene direttamente trasferito a un altra parte del programma: JMP Label_1 In questo caso, l esecuzione procede dalla locazione indicata Label_1. L assemblatore converte i riferimenti simbolici in salti a locazioni assolute. I salti condizionati avvengono, come indica il nome, solo se è verificata una particolare condizione. Questa condizione è segnalato dallo stato delle flag; nel caso più frequente vengono usate la flag di carry CF e le flag di indicazione del risultato di un confronto. L istruzione di salto condizionato relativo alla flag CF si chiama JC (junp if carry): JC cont1 Se il bit di carry ha il valore true (1), viene effettuato un salto a cont1. La condizione relativa a CF può anche essere che il salto debba avere luogo solo quando la flag ha il valore false (0). L istruzione usata si chiama JNC (jump if not carry): JNC cont2 In questo caso, se il bit di carry ha valore false, viene effettuato un salto a cont2. Nel caso di un salto condizionato combinato con un operazione di confronto, è necessario che le due istruzioni vengano eseguite in immediata successione. In questo esempio AX è confrontato con BX; se i loro valori sono diversi è richiesto un salto a cont3: CMP AX,BX JNE cont3 JNE significa jmp if not equal, cioè salta se i due termini non sono uguali. Il confronto vero e proprio avviene con l istruzione CMP; l informazione sullo stato di uguaglianza è passata all istruzione successiva mediante la flag zero. L istruzione CMP esegue una operazione di sottrazione senza caricare il risultato, ma settando il flag Zero se gli operandi sono uguali. Nel set di istruzioni 8086 sono disponibili altre funzioni di salto condizionato: JE (Jmp if equal), JAE (Jmp if Above or Equal), JB (Jump if Below), e molti altri. Alcune di queste istruzioni funzionano allo stesso modo come JAE e JNB ( Junp if Not Below). L istruzione CMP richiede due operandi. Essa può prendere molte forme a seconda del tipo di confronto che ha luogo, tra registri oppure di un registro con un dato costante o il contenuto di una locazione di memoria. Nella forma più semplice e più frequentemente usata vengono confrontati registri tra di loro, oppure registri e costanti: CMP AX,BX CMP BX,5 Le istruzioni di confronto segnalano il risultato di una operazione per mezzo delle sei flag aritmetiche. Consideriamo il seguente esempio. I valori di AX e BX vengono confrontati tra loro. Se il valore contenuto in BX è maggiore di quello contenuto in AX occorre eseguire la parte di codice P1, in caso contrario P2: CMP AX,BX JBE P1:... P2 Pag. 14

15 JMP cont1 P2: cont1: Non esistono chiamate condizionate a sottoprogrammi. Se si ha la necessità di richiamare un sottoprogramma solo al verificarsi di una certa condizione occorre far uso di qualche riga di codice in più per aggirare la chiamata quando la condizione non è verificata. Istruzioni di Input / Output Il processore 8086 vede i dispositivi di I/O in modo separato dalla memoria e quindi con istruzioni apposite. Lo spazio di indirizzamento dei dispositivi di Ingresso/Uscita è di 2 16 =65536 locazioni denominate port. Originariamente i port hanno dimensione di un byte (8 bit ). Le istruzioni per comunicare con i port sono: IN AL,DX OUT DX,AL La prima legge dal port il cui indirizzo è contenuto in DX e copia il valore letto nel registro AL. La seconda invia il contenuto del registro AL nel port il cui indirizzo è contenuto nel registro DX. Si noti che il registro DX a 16 bit è compatibile con il numero totale dei port (da 0 a 65535). Soltanto con indirizzi di port inferiori o al massimo uguali a 255 si può scrivere l indirizzo del port direttamente nell istruzione, senza usare DX: IN AL,61h Si può sempre comunque utilizzare il modo generale: MOV DX,61h IN AL,DX Sottoprogrammi Un tipo particolare di salto incondizionato è il richiamo di un sottoprogramma con l istruzione CALL: CALL DISPLAY DISPLAY: RET All istruzione di CALL il processore provvede a salvare in catasta i valori di CS e IP. Nuovi valori per CS:IP corrispondenti alla locazione del sottoprogramma chiamato (nell esempio DISPLAY), sono caricati nei rispettivi registri in modo che l esecuzione possa procedere dalla nuova posizione. Il ritorno da sottoprogramma avviene con l istruzione di chiusura RET. Con RET vengono letti due byte da catasta e assegnati a CS e IP. L esecuzione continua quindi nel programma originale dall istruzione successiva a quella di richiamo del sottoprogramma. E ovvio che al momento di eseguire RET, il puntatore alla catasta deve far riferimento ai byte corrispondenti a CS e IP. In caso contrario il controllo del programma passa ad una locazione errata che quasi certamente non contiene dati interpretabili come valide istruzioni del programma, provocando quasi subito l arresto della macchina. Occorre quindi far sempre attenzione, se si fa uso della catasta all interno di un sottoprogramma, a far corrispondere ad ogni istruzione PUSH una di POP prima di uscire dal sottoprogramma stesso con l istruzione RET. Pag. 15

16 Se la catasta è stata usata per passare dati al sottoprogramma, si può far uso dell istruzione RET [n]. In questo caso n parole vengono cancellate dalla catasta durante l operazione di ritorno, dopo la lettura di CS e IP. Gestione delle interruzioni Un interruzione (interrupt) è una sospensione dell esecuzione regolare di un programma per permettere l esecuzione di un programma di servizio. Un interruzione può essere causata da una condizione fisica quale l arrivo di un segnale su un port di ingresso, una condizione di errore quale la divisione per zero ecc. Le interruzioni si distinguono in hardware e software, a seconda che queste siano chiamate in seguito ad un evento fisico oppure un istruzione di programma. Il richiamo da programma (software interrupt) si effettua con: INT n ; n compreso tra 0 e 255 L esecuzione salta in questo caso al sottoprogramma il cui indirizzo si trova alla locazione 0:4*n e 0:4*n+2. Nel sistema 8086, lo spazio di memoria compreso tra 0:0 e 0:3FF hex è infatti occupato dagli indirizzi o vettori, dei sottoprogrammi di servizio delle interruzioni. I vettori 0-4 sono predefiniti nell architettura dell 8086 per la gestione di stati di errore o di esecuzione. Gli altri vettori sono liberi, ma nei sistemi MS-DOS alcuni di essi sono utilizzati per le routine interne del sistema operativo. Alcuni vettori sono a disposizione del programmatore. Prima di passare il controllo al sottoprogramma di servizio all interruzione, vengono salvati sulla catasta i valori di CS, di IP e delle flag. Questi valori sono automaticamente ripristinati con l esecuzione dell istruzione IRET (Interrupt Return) posta al termine del sottoprogramma di servizio. E compito del sottoprogramma di servizio salvare, e in seguito ripristinare, eventuali altri registri di cui esso fa uso durante l esecuzione. Le Istruzioni MACRO Con una macro è possibile definire proprie istruzioni, anche di una certa complessità, che vengono trattate dall assemblatore come se fossero istruzioni originali del sistema. In un certo senso, una macro svolge funzioni analoghe a quelle di un sottoprogramma. In entrambi i casi gruppi di istruzioni che devono essere eseguiti più volte allo stesso modo all interno di un programma sono isolati e richiamati come una procedura unica. La differenza tra una macro e un sottoprogramma è che le istruzioni della macro vengono copiate e assemblate una per una ogni volta che è fatto riferimento ad essa. Il vantaggio dell uso delle macro è che si risparmiano chiamate a sottoprogrammi che a loro volta comportato la messa di parametri in catasta, la modifica dei registri CS e IP e il loro successivo ripristino. Lo svantaggio consiste nel fatto che il programma assume dimensioni tanto maggiori quanto più viene fatto uso di macro. In pratica conviene definire brevi gruppi di istruzioni come macro e formare sottoprogrammi per blocchi più lunghi. Una macro può essere definita in un qualsiasi punto del programma, è sufficiente che la definizione preceda il primo richiamo che ad essa viene fatto. La macro è identificata dal suo nome, seguito dall identificatore MACRO. La seguente macro converte il valore contenuto nei 4 bit più bassi (0-3) del registro AL nel codice ASCII corrispondente, 0-9 e A-F. Se il valore di questi bit è minore o uguale a 9 il codice ASCII è dato dalla sua somma con 30hex; se il valore in ingresso è maggiore di 9, occorre addizionare ancora 7 al risultato per ottenere il codice ASCII relativo alle lettere A-F (41hex-46hex). Conv_ascii MACRO ;input in AL ;output in AL LOCAL cont_1 Pag. 16

17 AND AL,0Fh ;mascheramento bit 4-7 ADD AL,30h ;conversione ascii 0-9 CMP AL,39h ;carattere <=9? JBE cont_1 ;carattere ascii tra 0 e 9 ADD AL,7h ;conversione ascii A-F Cont_1 NOP ;nessuna operazione ENDM Questa macro è chiamata da programma facendo semplicemente uso del suo nome: Conv_ascii L assemblatore, nell incontrare la macro, sostituisce una per una, nel punto indicato le istruzioni in essa definite. Pag. 17

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086 I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi Elementi di Assembly 8086 1 Assembly 8086 I registri Per poter elaborare le informazioni ricevute dall esterno,

Dettagli

Assembler Intel 80x86: Struttura di un programma e Direttive

Assembler Intel 80x86: Struttura di un programma e Direttive Assembler Intel 80x86: Struttura di un programma e Direttive Calcolatori Elettronici B a.a. 2004/2005 Massimiliano Giacomin 1 Istruzioni e direttive Formato generale dei comandi: [nome] codice operazione

Dettagli

CALCOLATORI ELETTRONICI II

CALCOLATORI ELETTRONICI II CALCOLATORI ELETTRONICI II L ASSEMBLATORE Microsoft MASM MASM Argomenti della lezione Faremo riferimento al linguaggio sorgente accettato dall assemblatore Microsoft MASM nelle versioni successive alla

Dettagli

Il microprocessore 8086

Il microprocessore 8086 1 Il microprocessore 8086 LA CPU 8086 Il microprocessore 8086 fa parte della famiglia 80xxx della INTEL. Il capostipite di questa famiglia è stato l 8080, un microprocessore ad 8 bit che ha riscosso un

Dettagli

L Assembler 80x86 Concetti Generali. M. Rebaudengo M. Sonza Reorda P. Bernardi

L Assembler 80x86 Concetti Generali. M. Rebaudengo M. Sonza Reorda P. Bernardi L Assembler 80x86 Concetti Generali M. Rebaudengo M. Sonza Reorda P. Bernardi Sommario Introduzione Pseudo-Istruzioni Operatori Modi di Indirizzamento Istruzioni Sommario Introduzione Pseudo-Istruzioni

Dettagli

Cenni ad Assembly Intel

Cenni ad Assembly Intel Cenni ad Assembly Intel Luca Abeni April 17, 2015 Architerrura Intel Utilizzata sulla maggior parte dei laptop, desktop e server moderni Lunga storia Dagli anni 70 (Intel 8080-8 bit!)......fino ad oggi

Dettagli

Istruzioni di modifica della sequenza di elaborazione

Istruzioni di modifica della sequenza di elaborazione Istruzioni di modifica della sequenza di elaborazione Permettono di modificare la sequenza di esecuzione delle istruzioni di un programma, normalmente controllata dal meccanismo automatico di avanzamento

Dettagli

Programmazione dello Z80

Programmazione dello Z80 Il microprocessore si incarica di: gestire il programma e i suoi dati di eseguire i calcoli richiesti. Le azioni appena elencate rendono necessario che il microprocessore abbia da qualche parte, al suo

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack (tradotto talvolta in italiano con pila o catasta) è un'area di memoria privilegiata, dove il microprocessore può salvare

Dettagli

Esempio di moltiplicazione come somma e spostamento

Esempio di moltiplicazione come somma e spostamento Esempio di moltiplicazione come somma e spostamento Implementare una moltiplicazione coinvolge algoritmi di shift e somma Istruzioni di Shift:movimento di bit: ROL Rd ROR Rd LSL Rd LSR ASR Rd Rd 22 x 35

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Anno Accademico 2009-2010 Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo I processori Intel

Dettagli

Il linguaggio Assembly della CPU 8086. Il linguaggio Macchina

Il linguaggio Assembly della CPU 8086. Il linguaggio Macchina Il linguaggio Assembly della CPU 8086 Il linguaggio Macchina Fortemente orientato alla macchina Direttamente eseguibile Praticamente illeggibile Utilizzato negli anni 50 70 per sviluppare programmi Attualmente

Dettagli

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000 AXO Achitettura dei Calcolatori e Sistema Operativo Instruction Set Architecture (ISA) e 68000 introduzione a ISA ISA - Instruction Set Architecture insieme delle istruzioni (instruction set) che possono

Dettagli

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 90.1 Sistemi di numerazione.................................................... 605 90.1.1 Sistema decimale..................................................

Dettagli

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. I processori Intel Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. L'8086 e' un processore a 16 bit quindi i suoi registri potranno

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: 1. motivi didattici: l architettura dei processori

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE 1. INTRODUZIONE In questo capitolo viene presentata la struttura, sia interna che esterna, di un microprocessore generico riprendendo i concetti esposti nella

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

ARCHITETTURA DEI CALCOLATORI VOLUME I

ARCHITETTURA DEI CALCOLATORI VOLUME I Graziano Frosini ARCHITETTURA DEI CALCOLATORI VOLUME I ASSEMBLER E CORRISPONDENZA FRA C++ E ASSEMBLER CON RIFERIMENTO AL PERSONAL COMPUTER E ALL AMBIENTE DI PROGRAMMAZIONE DJGPP Copyright MMIX ARACNE editrice

Dettagli

Assembler 8086/8088: Concetti Generali

Assembler 8086/8088: Concetti Generali L Assembler 8086 Concetti Generali M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Sommario Introduzione Pseudo-Istruzioni Operatori

Dettagli

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine. Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere

Dettagli

Calcolatori Elettronici Parte X: l'assemblatore as88

Calcolatori Elettronici Parte X: l'assemblatore as88 Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso

Dettagli

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 11/01/08 Nota Questi lucidi sono

Dettagli

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO 1 Domanda [1 punto] Dato il formato in virgola mobile su 32 bit così definito (precisione singola): o 1

Dettagli

Lezione n.9. Introduzione al linguaggio macchina

Lezione n.9. Introduzione al linguaggio macchina Lezione n.9 Autore:Luca Orrù 1 Sommario Esecuzione delle istruzioni Architettura interna ed esterna Linguaggio assembler e modi d indirizzamento Consideriamo ora la singola istruzione e la scomponiamo

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore Dispensa di Fondamenti di Informatica Architettura di un calcolatore Hardware e software La prima decomposizione di un calcolatore è relativa ai seguenti macro-componenti hardware la struttura fisica del

Dettagli

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori

Dettagli

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Dettagli

Lezione 16: L architettura LC-3

Lezione 16: L architettura LC-3 Lezione 16: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 15 Maggio 2013 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Capitolo 3 Operazioni di ingresso e uscita

Capitolo 3 Operazioni di ingresso e uscita Capitolo 3 Operazioni di ingresso e uscita 3.1. Per assicurare che i dati siano letti solo una volta. 3.2. Assumendo i registri dell interfaccia dello schermo in Figura 3.3, si può usare il seguente programma:

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Von Neumann. John Von Neumann (1903-1957)

Von Neumann. John Von Neumann (1903-1957) Linguaggio macchina Von Neumann John Von Neumann (1903-1957) Inventore dell EDVAC (Electronic Discrete Variables AutomaFc Computer), la prima macchina digitale programmabile tramite un soiware basata su

Dettagli

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra

Dettagli

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

L'informazione e la sua codifica

L'informazione e la sua codifica L'informazione e la sua codifica Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Informatica e telecomunicazione Cos è l informatica informatica? lo studio sistematico degli

Dettagli

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Famiglia dei processori INTEL

Famiglia dei processori INTEL Famiglia dei processori INTEL 1975 2002 8080-8086 - 80286-80386 - 80486 - Pentium - Pentium II-III-IV - Itanium Compatibilità del SW (assemby) 8086 80286 80386 80486 Pentium Pentium III Perché studiare

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

L architettura del calcolatore (Prima parte)

L architettura del calcolatore (Prima parte) L architettura del calcolatore (Prima parte) Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Calcolatore astratto e reale Concetto astratto

Dettagli

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO Programma diviso in due moduli: MA.ASM: programma pricipale e funzioni di utilità MB.ASM: sottoprogramma di elaborazione Primo modulo: MA.ASM EXTRN alfa: BYTE

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Esegue la sommatral'accumulatoreac e Se I=1, ilcontenutodellacelladi memoriailcui indirizzoè

Esegue la sommatral'accumulatoreac e Se I=1, ilcontenutodellacelladi memoriailcui indirizzoè Parte II AND 104 I, micro-operazioni c 0 t 0 : MAR PC c 0 t 1 : MBR M, PC PC+1 c 0 t 2 : OPR MBR(OP), I MBR(I) q 7 Ic 0 t 3 : R 1 Ciclo di fetch (q 7 +I )c 0 t 3 : F 1 c 1 t 0 : MAR MBR(AD); / 104 da Hex

Dettagli

Introduzione. Le istruzioni del livello della macchina standard (livello 2) si possono dividere, con buona approssimazione, in due gruppi:

Introduzione. Le istruzioni del livello della macchina standard (livello 2) si possono dividere, con buona approssimazione, in due gruppi: Appunti di Informatica Appendice 3 Istruzioni e flusso di controllo TIPI DI ISTRUZIONI. 1 Introduzione.. 1 Istruzioni per il movimento dei dati. 2 Istruzioni per operazioni diadiche... 2 Istruzioni per

Dettagli

Corso basilare di programmazione

Corso basilare di programmazione Parte vi Corso basilare di programmazione Introduzione............................................ 947 Programma didattico.................................. 947 Strumenti per la compilazione..........................

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi Il calcolatore elettronico Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi Introduzione Un calcolatore elettronico è un sistema elettronico digitale programmabile Sistema: composto da

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Introduzione Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.:

Dettagli

4. Operazioni aritmetiche con i numeri binari

4. Operazioni aritmetiche con i numeri binari I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:

Dettagli

Linguaggio macchina. 73.1 Organizzazione della memoria. 73.1.1 Pila per salvare i dati. 73.1 Organizzazione della memoria... 37

Linguaggio macchina. 73.1 Organizzazione della memoria. 73.1.1 Pila per salvare i dati. 73.1 Organizzazione della memoria... 37 37 Linguaggio macchina Capitolo 73 73.1 Organizzazione della memoria.............................................. 37 73.1.1 Pila per salvare i dati............................................... 37 73.1.2

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Classe 3 A Inf - Alcune informazioni sull'uso del programma Debug

Classe 3 A Inf - Alcune informazioni sull'uso del programma Debug Classe 3 A Inf - Alcune informazioni sull'uso del programma Debug Un po' di storia Debug è un programma che da lunghissimo tempo è presente nei sistemi Microsoft. Fin dall'epoca dei primi dischetti DOS,

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

Nel microprocessore 8086 abbiamo una gran quantità di registri

Nel microprocessore 8086 abbiamo una gran quantità di registri I registri del microprocessore 8086 Nel microprocessore 8086 abbiamo una gran quantità di registri AH AL AX 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 B H B L BX 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 C H C L CX 1 0 1 1

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Rappresentazione binaria

Rappresentazione binaria Rappresentazione binaria DOTT. ING. LEONARDO RIGUTINI RICERCATORE ASSOCIATO DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT

Dettagli

Il livello architettura e set di istruzioni

Il livello architettura e set di istruzioni Corso di Informatica 2 Prof. Sciuto Il livello architettura e set di istruzioni Daniele Paolo Scarpazza Dipartimento di Elettronica e Informazione Politecnico di Milano 7 Giugno 2004 Daniele Paolo Scarpazza

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32

Dettagli

SET/CLEAR LOAD DATA FROM STRING

SET/CLEAR LOAD DATA FROM STRING SET/CLEAR STD CLD AZIONE: Imposta ad 1 (STD) o a zero (CLD) il valore del flag DF. Sono istruzioni senza parametri. Vanno sempre messi!! FLAG di cui viene modificato il contenuto: Nessuno (a parte DF).

Dettagli

PROGRAMMA DI SISTEMI TERZA AET 2014/2015

PROGRAMMA DI SISTEMI TERZA AET 2014/2015 PROGRAMMA DI SISTEMI TERZA AET 2014/2015 Docente: Gamerra Giuseppe, Porta Giovanni Testo : manuali originali dello Z80, appunti in classe, dispense sulla intranet, simulatore OSHONSOFT A) Non sono state

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

Parte II.2 Elaboratore

Parte II.2 Elaboratore Parte II.2 Elaboratore Elisabetta Ronchieri Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Dicembre 1, 2015 Elisabetta Elisabetta Ronchieri II Software Argomenti

Dettagli

Corso basilare di programmazione «

Corso basilare di programmazione « Parte iv Corso basilare di programmazione Introduzione................................................................... 601 Programma didattico.......................................................

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

I sistemi di elaborazione

I sistemi di elaborazione 2 I sistemi di elaborazione 2.0 I sistemi di elaborazione c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 2.0 0 2 I sistemi di elaborazione Architettura

Dettagli

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007 2007 SISTEMI OPERATIVI Gestione della memoria Domande di verifica Luca Orrù Centro Multimediale Montiferru 18/06/2007 Gestione della memoria 1. Si descriva il concetto di memoria virtuale (esame del 19-06-2006)

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann Elementi di Informatica e Programmazione Architettura del calcolatore (prima parte) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Problema:

Dettagli

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra.

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra. Appunti di Calcolatori Elettronici Modello di macchina multilivello Introduzione... 1 Linguaggi, livelli e macchine virtuali... 3 La struttura a livelli delle macchine odierne... 4 Evoluzione delle macchine

Dettagli

Lezione 7 Sommatori e Moltiplicatori

Lezione 7 Sommatori e Moltiplicatori Architettura degli Elaboratori e delle Reti Lezione 7 Sommatori e Moltiplicatori Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 7 1/36 Sommario!

Dettagli

Aritmetica: operazioni ed espressioni

Aritmetica: operazioni ed espressioni / A SCUOLA DI MATEMATICA Lezioni di matematica a cura di Eugenio Amitrano Argomento n. : operazioni ed espressioni Ricostruzione di un abaco dell epoca romana - Museo RGZ di Magonza (Germania) Libero da

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario L hardware di I/O Struttura Interazione tra computer e controllori

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

L informatica comprende:

L informatica comprende: Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

La codifica dell informazione

La codifica dell informazione La codifica dell informazione Parte I Sui testi di approfondimento: leggere dal Cap. del testo C (Console, Ribaudo):.,. fino a pg.6 La codifica delle informazioni Un calcolatore memorizza ed elabora informazioni

Dettagli

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086) PROF. CARMELO CALARCO Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086) 1 IL LINGUAGGIO ASSEMBLY Il linguaggio assembly è un linguaggio di programmazione a basso livello. Per linguaggi di basso livello

Dettagli

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 13 aprile 2012 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Dettagli