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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio

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

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

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

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

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

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

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

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

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

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

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

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

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

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

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

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

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

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

Powered by: Relators:

Powered by: Relators: Powered by: Hacking Group Como www.hgcomo.org Relators: Beretta Matteo, matteo@hgcomo.org Pizzagalli Diego Ulisse ulisse@hgcomo.org Atmel AVR Studio 4 integra al suo interno un ambiente di programmazione

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

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

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

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

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

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

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE La base del sistema decimale è 10 I simboli del sistema decimale sono: 0 1 2 3 4 5 6 7 8 9 Il sistema di numerazione decimale è un sistema posizionale. L aggettivo

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

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4 ARCHITETTURE MICROPROGRAMMATE. 1 Necessità di un architettura microprogrammata 1 Cos è un architettura microprogrammata? 4 Struttura di una microistruzione. 5 Esempi di microprogrammi 9 Esempio 1 9 Esempio

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

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

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello): Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande

Dettagli

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

PROVA INTRACORSO TRACCIA A Pagina 1 di 6 PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento

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

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Programmazione in linguaggio assembly per architetture Intel 8088

Programmazione in linguaggio assembly per architetture Intel 8088 Programmazione in linguaggio assembly per architetture Intel 8088 Marco Di Felice 1 Università of Bologna Dipartimento di Scienze dell Informazione Corso di Architettura degli Elaboratori mail: difelice@cs.unibo.it

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

Dispositivi di rete. Ripetitori. Hub

Dispositivi di rete. Ripetitori. Hub Ripetitori Dispositivi di rete I ripetitori aumentano la distanza che può essere ragginta dai dispositivi Ethernet per trasmettere dati l'uno rispetto all'altro. Le distanze coperte dai cavi sono limitate

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007

REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007 REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007 INTRODUZIONE Uno degli elementi più importanti che compongono un Business Plan è sicuramente la previsione dei risultati economico-finanziari. Tale

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1 La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.

Dettagli

Codifica binaria dei numeri relativi

Codifica binaria dei numeri relativi Codifica binaria dei numeri relativi Introduzione All interno di un calcolatore, è possibile utilizzare solo 0 e 1 per codificare qualsiasi informazione. Nel caso dei numeri, non solo il modulo ma anche

Dettagli

Introduzione. Architettura

Introduzione. Architettura Introduzione Questo simulatore fornisce una versione semplificata dell assemblatore sfruttato dal processore 8088 trasformando il codice inserito in input in codice eseguibile e ne simula l esecuzione

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15 WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione

Dettagli

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Dettagli

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Architettura dei calcolatori e sistemi operativi Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Sommario Il processo di assemblaggio Il collegatore (linker) 2 Assemblatore: traduzione

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

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

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

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

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

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

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati Il Livello LogicoDigitale i Blocchi funzionali combinatori Circuiti integrati Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

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

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch. Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE Comunicazione importante dalla prossima settimana, la lezione del venerdì si terrà: dalle 15:00 alle 17.15 in aula 311 l orario

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli