A B E C D G -...

33
SISTEMI Un calcolatore è un insieme di dispositivi che interagiscono tra di loro al fine di svolgere dei particolari lavori. Un sistema è un insieme di parti o componenti correlati tra loro in modo che tale insieme possieda una propria struttura ed un proprio comportamento. = interazione = sistema Il componente di un sistema potrebbe interagire con un oggetto esterno al sistema che lo influenza oppure che viene influenzato dal componente. L’ambiente esterno è un insieme di tutti gli oggetti che, pur non appartenendo al sistema, interagiscono in qualche modo con esso. Un sistema può essere considerato come un componente di un sistema più complesso. Ogni componente di un sistema piò essere considerato a sua volta un sistema. SISTEMI MISTI Modifica umana su sistemi già esistenti in natura Lago artificiale Un sistema si dice fisico se tutte le sue caratteristiche possono essere misurate fisicamente (confrontate con un sistema di misura). Se almeno una delle caratteristiche del sistema non può essere misurata fisicamente, esso è astratto. FISICI ASTRATTI ARTIFICIALI (costruiti dall’uomo) NATURALI Sistemi già presenti in natura A B E G F D C

Transcript of A B E C D G -...

Page 1: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

SISTEMI Un calcolatore è un insieme di dispositivi che interagiscono tra di loro al fine di svolgere dei particolari lavori. Un sistema è un insieme di parti o componenti correlati tra loro in modo che tale insieme possieda una propria struttura ed un proprio comportamento. = interazione = sistema

Il componente di un sistema potrebbe interagire con un oggetto esterno al sistema che lo influenza oppure che viene influenzato dal componente. L’ambiente esterno è un insieme di tutti gli oggetti che, pur non appartenendo al sistema, interagiscono in qualche modo con esso. Un sistema può essere considerato come un componente di un sistema più complesso. Ogni componente di un sistema piò essere considerato a sua volta un sistema.

SISTEMI MISTI Modifica umana su sistemi già esistenti in natura Lago artificiale

Un sistema si dice fisico se tutte le sue caratteristiche possono essere misurate fisicamente (confrontate con un sistema di misura). Se almeno una delle caratteristiche del sistema non può essere misurata fisicamente, esso è astratto.

FISICI

ASTRATTI

ARTIFICIALI (costruiti dall’uomo)

NATURALI Sistemi già presenti in natura

A B

E

G

F

D

C

Page 2: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze fisiche variabili. Se tutte le grandezze di un sistema sono grandezze costanti, il sistema viene detto astratto. In situazione opposta, il sistema dinamico. In un sistema statico tutte le grandezze sono costanti. Le grandezze variabili in un sistema dinamico si dividono in variabili esogene e endogene. Le variabili esogene rappresentano interazioni tra il sistema e l’ambiente esterno mentre le variabili endogene rappresentano caratteristiche o interazioni tra i vari componenti interni di un sistema. Esogena nel sistema automobile è la pendenza della strada mentre una variabile endogena al sistema automobile è la forza motrice del motore sulle ruote. Le variabili esogene a loro volta si dividono in due categorie: variabili esogene in ingresso e variabili esogene in uscita. Le variabili esogene in ingresso rappresentano sollecitazioni dell’ambiente esterno sul sistema. Le variabili esogene in uscita, invece, rappresentano le risposte di un sistema all’ambiente esterno. In ingresso è la pendenza del terreno mentre in uscita è la diminuzione della velocità, quantità di chilometri percorsi. I sistemi chiusi sono quelli che non hanno variabili esogene di ingresso. Se possiede almeno una variabile esogena, il sistema viene detto aperto. Esiste una legge ben precisa che lega tra loro tutte le variabili di un sistema. Le variabili sono forza, spostamento velocità e accelerazione. A volte questa legge non esiste perché, ad esempio, nessuno può prevedere i numeri di estrazione del lotto. Se c’è una forza che caratterizza le variabili del sistema esso è detto deterministico. Un sistema si dice deterministico se esiste una legge ben precisa che lega tra loro tutte le sue variabili. Un sistema viene detto probabilistico nel caso opposto. Un sistema deterministico si dice invariante (o stazionario) se la legge che lega tra loro tutte le sue variabili è sempre la stessa. Viceversa, se tale legge può cambiare nel tempo, il sistema si dice variante.

ASTRATTI FISICI

MISTI

ARTIFICIALI NATURALI

SISTEMI

CHIUSI

VARIANTI

STATICI

APERTI

PROBABILISTICI

DINAMICI

DETERMINISTICI

INVARIANTI

DISCRETI CONTINUI

Page 3: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Il calcolatore elettronico fa parte delle sezioni sottolineate.

DIAGRAMMA TEMPORALE

SISTEMI I sistemi digitali sono sistemi: 1 artificiali (non naturali) 2 fisici (non astratti) 3 dinamici (non statici) 4 aperti (non chiusi) 5 deterministici (non probabilistici) 6 invarianti (non varianti) 7 discreti (non continui) Per stabilire se un sistema è discreto o astratto è necessario studiare le sue grandezze fisiche. Una grandezza fisica variabile si dice continua quando può variare il proprio valore rispetto al tempo con continuità ossia può assumere un valore diverso in qualsiasi istante. Viceversa una grandezza fisica variabile si dice discreta se cambia il proprio valore solo in determinati istanti di tempo. Una grandezza fisica variabile discreta si dice digitale se può assumere solo un numero finito di valori (in caso contrario viene detta non digitale). Un sistema viene detto discreto se tutte le sue grandezze variabili sono di tipo discreto. Viene detto continuo nel caso opposto. Inoltre tutte le variabili esogene (d’ingresso e d’uscita) possono assumere un numero finito di valori.

Vi

V (t)

T (sec) Ti

Page 4: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

SISTEMA CONTINUO SISTEMA DISCRETO

MODELLI I modelli sono sistemi costruiti dall’uomo al fine di rappresentare la struttura o il comportamento di altri sistemi. I modelli si suddividono in modelli iconici e modelli analogici. I modelli iconici servono per rappresentare la struttura di un altro sistema (modelli in scala). I modelli analogici rappresentano per analogia il comportamento di un altro sistema (gli strumenti di misura). Un modello è sempre un sistema anche se costruito dall’uomo. CLASSIFICAZIONE MODELLI 1°: MODELLI GRAFICI cioè disegni che rappresentano simbolicamente la struttura o il comportamento di un altro sistema (1°Es. sistemi a blocchi che si dividono in: elettrici, logici e funzionali; 2°Es. diagrammi temporali; 3°Es. tabelle). 2°: MODELLI MATEMATICI che rappresentano le leggi che legano tra loro le grandezze di un sistema per mezzo di insiemi di espressioni simboliche (Es. sistemi di equazioni). 3°: MODELLI PROCEDURALI che sono programmi la cui esecuzione permette di simulare il comportamento di un altro sistema (Es. videogiochi).

Per descrivere il comportamento di semplici sistemi digitali come questo abbiamo bisogno di fare uso di un altro tipo di modello: quello matematico che prende il nome di “automa”.

Lampadina Pila

Page 5: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Se un insieme finito con cardinalità n (di n elementi) è anche ordinato, esso si chiama ennupla. ENNUPLA (e1 , e2 , e3 , … , en) Se n è uguale a 2 si parla di coppia. La coppia è un insieme ordinato di due elementi. La tripla è un insieme ordinato di tre elementi. La quadrupla è un insieme ordinato di quattro elementi. La quintupla è un insieme ordinato di cinque elementi. Un automa è una quintupla del tipo (S , I , U , f , g) dove: S è un insieme e viene detto insieme degli stati. I suoi elementi sono detti stati dell’automa. S {s1 , s2 , s3 , … , sn , …) INSIEME DEGLI STATI. L’insieme degli stati può essere anche infinito. Se l’insieme degli stati di un automa è finito, tale automa viene detto a stati finiti. Gli automi a stati finiti sono utilizzabili per rappresentare il comportamento dei sistemi digitali. Gli stati di un automa a stati finiti rappresentano i valori delle variabili endogene di un sistema digitale. I è un insieme finito di elementi. I = { i1 , i2 , i3, … , in} INSIEME DEI VALORI D’INGRESSO. Di solito i valori d’ingresso di un automa che rappresenta un sistema digitale rappresentano i valori delle grandezze d’ingresso di tale sistema. U è un insieme finito di elementi. U = {u1 , u2 , u3 , … , un} INSIEME DEI VALORI D’USCITA. I valori di uscita di un automa rappresentano i valori delle grandezze d’uscita di tali sistemi. ƒ è una funzione che ha per dominio il prodotto cartesiano tra l’insieme degli stati S e l’insieme dei valori di ingresso I. ƒ : S x I � S FUNZIONE DI TRANSIZIONE DI STATO. ƒ = deformazione delle grandezze variabili interne del sistema. S x I = dominio = l’insieme dei valori su cui è definita la funzione S = codominio = insieme dei valori che la ƒ può assumere. g risposta del sistema alle sollecitazioni dell’ambiente esterno (grandezze in uscita). PRODOTTO CARTESIANO TRA DUE INSIEMI. Dati due insiemi “A” e “B”, si definisce prodotto cartesiano dei due insiemi (e si indica con A x B) l’insieme di tutte le coppie il cui primo elemento appartiene all’insieme “A” ed il secondo elemento appartiene all’insieme “B”. A = {a1 , a2 , a3 , … , an , …} B = {b1 , b2 , b3 , … , bn , …} A x B = {(a1,b1) , (a1,b2) , (a1,b3) , … , (a1,bn) , … , (a2,b1) , (a2 b2) , … , (a2,bn) , … , (an,b1) , (an,b2) , , … , (an,bm) , …} Se #A = n e #B = m allora #(A x B) = n x m (# è il cardinale cioè e il numero di elementi di un insieme).

ESEMPIO Automa a stati finiti che rappresenta il comportamento del sistema digitale lampadina azionata da un pulsante. S = {ON , OFF} ON = acceso OFF = spento I = {P , R} P = pressione tasto R = rilascio tasto U = {L , B} L = luce B = buio ƒ (ON , P) = OFF g (ON , P) = buio ƒ (ON , R) = ON g (ON , R) = luce ƒ (OFF , P) = ON g (OFF , P) = luce ƒ (OFF , R) = OFF g (OFF , R) = buio Questo è un modello simbolico che rappresenta esattamente il comportamento di un semplice sistema digitale.

Page 6: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

La matrice delle transizioni di stato:

S I

ON

OFF ON/L OFF/B

OFF/B ON/L

R P

s1

i1 i2 …… im

s2

s3

.

.

.

sn

f1,1 g1,1

f2,1 g2,1

f3,1 g3,1

…… ……

fn,1 gn,1

f1,2 g1,2

f2,2 g2,2

…… ……

f3,2 g3,3

fn,2 gn,2

…… ……

…… ……

fn,m gn,m

…… ……

f3,m g3,m

f2,m g2,m

f1,m g1,m

…… ……

…… ……

…… ……

S I

AUTOMI

SEQUENZIALI (g: S x I � U)

COMBINATORI ( g = I � U)

A STATI FINITI (#S = n)

IMPROPRI(di Mealy) (g : S xI � U)

NON A STATI FINITI

(#S = �)

PROPRI(di Moore) (g : S � U)

Page 7: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

CLASSIFICAZIONE DEGLI AUTOMI 1° COMBINATORI / SEQUANZALI Un automa si dice combinatorio quando la funzione di trasformazione d’uscita non dipende dallo stato e quindi dipende solo dal valore d’ingresso. Un automa si dice sequanziale nel caso opposto. 2° A STATI FINITI / NON A STATI FINITI Un automa sequenziale viene detto a stati finiti se l’insieme degli stati finiti è finito. Viene detto non a stati finiti nel caso opposto. 3° PROPRI (O DI MOORE) / IMPROPRI (DI MEALY) Un automa sequenziale a stati finiti viene detto proprio o di Moore se la sua funzione di trasformazione di uscita non dipende dai valori d’ingresso. In caso contrario l’automa viene detto improprio o di Mealy.

ESEMPIO Automa che rappresenta il comportamento dell’impianto d’illuminazione di una stanza.

ON L

ON L

OFF B

OFF B

I S

ON

OFF

P2

P1

I S

P1

P2

ON

OFF

OFF

ON

ON

U

B

L

OFF

.

.

.

fn,2

s1

I S

……

i2

im

f1,1

f1,2

……

f1,m

g(s1)

.

.

.

g(s2)

i1

……

.

.

.

U

.

.

.

f2,n

g(sn)

fm,n

. ……

.

……

fn,1

f2,2

f2,1

sm

.

.

.

s2

Page 8: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Diagramma delle transizioni di stato (grafo).

Se tutti i grafi sono orientati, il grafo è detto “grafo orientato”. I grafi servono per rappresentare intuitivamente la struttura o il comportamento di sistemi reali complessi. Si disegna con un nodo per ogni stato, dal quale dobbiamo fare uscire un numero di archi uguali al numero dei valori di ingresso. I versi si danno in base alla matrice.

DEFINIZIONI 1ªDefinizione: ALFABETO Un alfabeto è un insieme finito di simboli grafici. A = {c1, c2, c3, …,ck} k = #A (numero di elementi di A) Gli elementi di un alfabeto sono detti caratteri. Per “i” appartenente a [i…k], “ci” è l’i-mo carattere dell’alfabeto “A”. I caratteri sono dei simboli grafici cioè disegni con indeterminato significato. 2ªDefinizione:CODICE Un codice è un insieme finito di sequenze di simboli di un determinato alfabeto “A” che rappresentano gli elementi di un altro insieme. C = {P1,P2,P3,…,Pn} n = #C (numero di elementi di C) Per “i” appartenente a [i…n], Pi è una sequenza di simboli dell’alfabeto “A”.

U

S

I

t

t0

t1

t2

t3

t4

t5 . . .

P1

P2

P2

P1

P2

P1 . . .

OFF

ON

OFF

ON

OFF

ON

.

.

.

L

B

L

B

L

B . . .

Page 9: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

I = {o1,o1,o3,…,om} m = #I (numero di elementi di I) Ciascun elemento del codice è detto parola. Gli elementi dell’insieme “I” sono detti oggetti rappresentati dal codice.

I CODICI OPERAZIONE DI DECODIOFICAZIONE

(N.B.: In tutti gli schemi sono disegnati, per comodità, solo alcuni elementi degli insiemi) Sui codici sono definite due operazioni. La prima operazione è l’operazione di decodifica. L’operazione di decodifica fa corrispondere ad ogni parola di un codice l’oggetto che tale parola rappresenta. Può succedere che due o più parole per codice rappresentano lo stesso oggetto. Se ciò accade il codice si dice ridondante. Un codice si dice ridondante se esistono due o più parole che rappresentano lo stesso oggetto. In caso contrario il codice viene detto non ridondante. OPERAZIONE DI CODIFICA

L’operazione di codifica fa corrispondere ad ogni oggetto dell’insieme “I” la parola del codice che la rappresenta. Può accadere che due o più oggetti diano per risultato la stessa parola. In questo caso il codice viene detto ambiguo. Un codice si dice ambiguo quando uno o più oggetti sono rappresentati dalla stessa parola del codice. Un codice viene detto non ambiguo nel caso contrario. La decodifica e la codifica non sono funzioni matematiche.

COD (Om) = Pn

COD (Oi) = Pi

COD (O3) = P3

COD (O2) = P2

COD (O1) = P1

DECOD (Pn) =Om

DECOD (Pi) =Oi

DECOD (P3) =O3

DECOD (P2) =O2

P1.

Pi. P3.

P2.

Pn.

.O1

.Oi

.O2

.O3

.Om

.O3

.Om

.Oi

.O1

.O2

P3.

P2.

Pn.

Pi.

DECOD (P1) =O1

P1.

Page 10: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

ESEMPI DI CODICI 1°: Il codice fiscale delle persone fisiche. ALFABETO A = {A, B, …, Z, 0, 1, …, 9} #A = 36 CODICE C = {RSSMRA…X,………} OGGETTI RAPPRESENTATI “I” = Insieme dei cittadini italiani. #I = 60 milioni Non è ambiguo perché due persone non possono avere il codice uguale. Non è ridondante perché una persona non può avere due codici. Quando un codice non è né ambiguo e neppure ridondante, si parla di codice efficiente. Un codice è efficiente quando non è né ambiguo e neppure ridondante.

CODICI BINARI Sono codici che si basano su un alfabeto di solo due simboli. Tutti i codici di: A = {0,1} 0 e 1 sono i bit. Bit significa Binary Digit cioè è la cifra binaria. ESEMPI DI PAROLE BINARIE 010 01111 1111 111111111

CODICI A LUNGHEZZA FISSA Sono i codici le cui parole hanno tutte la stessa lunghezza. Essi godono di una particolare proprietà. Se “i” è la lunghezza delle parole di un codice “C” a lunghezza fissa: #C (numero di elementi dell’insieme C) � (#A)^c (elementi dell’alfabeto elevati alla lunghezza) Nei codici binari a lunghezza fissa: (#A = 2) #C � 2^L Se un codice binario a lunghezza fissa è anche efficiente abbiamo che il numero degli oggetti rappresentati da tale codice dev’essere uguale al numero di parole del codice. (#I) = (#C) � 2^L Tutte le informazioni all’interno dei calcolatori digitali sono rappresentati dai codici.

CATEGORIE DI CODICI BINARI 1° NUMERICI: Usati per rappresentare informazioni numeriche (numeri interi, numeri decimali). 2° NON NUMERICI: Sono usati per rappresentare tutti gli altri tipi di informazione.

IL CODICE BCD (Binary Coded Digital) E’ un codice binario a lunghezza fissa (a 4 bit) usato per rappresentare le cifre decimali da 0 a 9. E’ un codice efficiente. (#C) = (#I) = 10 (#C) � 2^L 10 � 2^4 10 � 2^16

Page 11: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

parola codice 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 RAPPRESENTAZIONE IN CODICE BCD DEL NUMERO 1234 1 2 3 4 0001 0010 0011 0100

I SISTEMI DI NUMERAZIONE POSIZIONALE Il sistema binario, come quello decimale, appartiene alla categoria dei sistemi di numerazione posizionale. Essi sono codici usati per rappresentare i numeri naturali (interi senza virgola) che si basano su di un alfabeto “A” di “B” (#A) simboli grafici che vengono chiamati cifre: A = {C0, C1, C2, …, CB-1) Ciascuna cifra rappresenta un valore intero compreso tra “0” e “B-1”: cifra valore C0 (C0)B = 0 C1 (C1)B = 1 C2 (C2)B = 2 . . . . . . . . CB-1 (CB-1)B = B-1 Il numero di cifre del sistema di numerazione è detto base e indica il valore massimo rappresentabile da una cifra. Per rappresentare valori maggiori di “B-1”, possono essere rappresentati da sequenze composte da duo o più cifre. Sono codici numerici e sono efficienti, cioè non ambigui e non ridondanti. Ogni numero naturale, escluso lo zero, è rappresentabile da un’unica sequenza di cifre tale che il valore della prima cifra (cifra più significativa) sia diversa da zero e viceversa. Ogni sequenza di cifre tale che il valore della prima cifra sia diverso da zero, rappresenta un unico numero naturale diverso da zero. Se indichiamo con “x” un numero naturale diverso da 0 allora: COD(X) = W dove W =(n-1, n-2, …, C2,C1) tale che (Cn-1)B � 0 W è una sequenza di cifre. Codifica di x è una funzione che da come risultato una sequenza di cifre e DEC(W) = (W)B = X. X = 60 W = COD(60) = 60 (sequenza di simboli “6” e “0” ) DECOD (60) = (60)10 = C0 = X A = {a, b, c, d, e, f, g, h, i, l} (a)10 = 0 X = 60 (b)10 = 1 W = COD(60) = ga (b)10 = 9 DECOD (ga)10 = 60 Se B = 2 A ={0,1} Il codice binario ha solo due simboli. Data W = Cn-1, Cn-2, …, C2, C1, C0 n-1

(W) B = � (Ci)B � B¹ i=0 Si legge: il valore di un numero, rappresentato nel sistema di numerazione posizionale in una certa base, è uguale alla somma dei valori di ciascuna cifra di tale numero moltiplicata per il peso di tale cifra nel numero.

Page 12: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

ESEMPIO B = 10 W = 60 1

(60)10 = � (Ci)10 � 10¹ = (C0)10 � 10º + (C1)10 � 10¹ = 0 � 10º + 6 � 10¹ = 60 ESEMPIO A = {0, 1, 2, 3, 4, 5, 6, 7, 8} 1

(60)8 = � (Ci)8 � 8¹ = (C0)8 � 8º + (C1)8 · 8¹ = 0 + 6 · 8 = 48 (60)10 = 60 (60)8 = 48 LA PROCEDURA DI CODIFICA. Sia x � N – {0} 1° : i = 0; q0 = x. 2°: (Ci)B = qi – MOD B (modulo di B). 3°: q(i+1) = qi DIV B. 4°: i = i + 1. 5°: se q1 � 0 � torno al 2° passo. 6°: fine procedura. MOD = RESTO DIV = QUOZIENTE qi/B

i qi (Ci)b 0 q0=x (C0)B=q0 MOD B 1 q1=q0 DIV B (C1)B=q1 MOD B 2 q2 =q1 DIV B (C2)B=q2 MOD B 3 q3=q2 DIV B (C3)B=q3 MOD B . . . . . . . . . n qn= 0 (Cn-1)B=qm MOD B

PRINCIPALI SISTEMI DI NUMERAZIONE POSIZIONALE 1°: DECIMALE : Sistema usato dagli esseri umani. 2°: BINARIO : Sistema usato dai sistemi digitali. 3°: OTTALE : Sistema usato dagli informatici. 4°: ESADECIMALE: Sistema usato dagli informatici. OPERAZIONE DI ADDIZIONE Esiste una procedura che permette di ottenere direttamente la rappresentazione posizionale della somma di due numeri in qualsiasi base. PROCEDURA DI ADDIZIONE A = (an-1 an-2 … a2 a1 a0)B B = (bn-1 bn-2 … b2 b1 b0)B A+B

Page 13: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

n

MAX{A} = B – 1 n

MAX{B} = B – 1 n n n n n (n+1) ( n+1)

A < B B < B A+B<B+B=2B � B A+B<B A =(sn-1 sn-2 … s2 s1 s0)B �n+1 cifre PROCEDURA DI ADDIZIONE 1°Passo: r0 = 0 (riporto di ordine zero) 2°Passo: Per i = 0;1;2;…;n – 1 ripeti: 2.1Passo: si = (ai + bi + ri) MOD B 2.2Passo: ri+1 = (ai + bi + ri) DIV B 3°Passo: sn = rn PROCEDURA DI SOTTRAZIONE A = (an-1 an-2 … a2 a1 a0)B B = (bn-1 bn-2 … b2 b1 b0)B D = A – B = (dn-1 dn-2 … d2 d1 d0)B 1°Passo: p0 = 0 (prestito uguale a zero) 2°Passo: Per i = 0;1;2;…;n-1 ripeti 2.1Passo: se ai < (bi + pi) pi+1 = 1 altrimenti pi+1 = 0 2.2Passo: di = ai + pi+1 � B – bi - pi 3°Passo: Se Pn = 0 D = A – B OPERAZIONE DI COMPLEMENTO A DUE L’operazione di complemento a due è definita in questo modo. W = cn-1 … c2 c1 c0 ___ __ __ __ __ W� = cn-1 … c2 c1 c0 + 1 = simbolo di complemento. W� = complemento a due di una parola W che si ottiene sommando alla parola il numero 1. __ Ci Ci 0 1 1 0 ESEMPIO: W = 1001 W� = 0110+

1= 0111

Page 14: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

GODE DI ALCUNE INTERESSANTI PROPRIETA’ 1ª PROPRIETA’ n

Se (W)2 = 2 - (W)2 n

Allora (W�)2 � 2 - (W)2 Questo vale per tutti i numeri binari diversi da zero. Se (W)2 = 0 allora (W�)2 = 0

2ª PROPRIETA’ Il complemento a due del complemento a due di una parola binaria è uguale a se stesso. La proprietà, in poche parole, è: W�� = W. La rappresentazione in complemento a due è un codice binario numerico a lunghezza fissa usato per rappresentare i numeri interi con segno. Non si tratta di un’operazione, ma di un codice binario a lunghezza fissa. #C = Cardinalità = Numero di elementi. n

#C � (#A) n = lunghezza delle parole. Questo è un codice efficiente. #C = #I n

#I � (#A) n n-1 n-1

Se #A = 2 #I � 2 I = [ -2 , 2 ) [ = compreso ) = escluso A = {0,1} C3 | C2 | C1| C0 | VAL (C3,C2,C1,C0) = rappresentazione binaria dei numeri. 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 ---------------------------------------------- 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 ---------------------------------------------- 1 0 0 0 -8 1 0 0 1 -7 1 0 1 0 -6 1 0 1 1 -5 1 1 0 0 -4 1 1 0 1 -3 1 1 1 0 -2 1 1 1 1 -1

Page 15: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

4

#C = 2 = 16 W = cn-1 cn-2 … c2 c1 c0 n-2 i n

VAL(W) = � Ci � 2 - Cn-1 � 2 i=0

W = COD (-7) = 1001 W�= 0110 + 1 = (0111)2 = 7 (Per tutti i numeri negativi eccetto il -8). COD (-7): COD (7) = 0111+ 1= . COD (-7)= 1001 Procedura di codifica di numeri interi con segno in codice binario con complemento a due.

CLASSIFICAZIONE DEI SISTEMI DIGITALI

Esistono due grandi famiglie dei sistemi digitali: - i SISTEMI DIGITALI A LOGICA CABLATA; - i SISTEMI DIGITALI A PROGRAMMA MEMORIZZATO O PROGRAMMABILE. La differenza tra queste due categorie di sistemi digitali è che, nella seconda categoria, il comportamento del sistema digitale è specificato da un programma contenuto all’interno di un sistema ma che può anche cambiare (sostituito da un altro programma). Quindi anche il comportamento di un sistema digitale a programma memorizzato, può cambiare in base al programma memorizzato al suo interno. Il comportamento dei sistemi a logica cablata è invece è sempre lo stesso. I sistemi digitali a programma memorizzato sono molto più flessibili perché possono essere utilizzati per scopi molto diversi tra loro cambiando il programma in essi contenuto. Mentre quelli cablati sono per un uso più ristretto. Di fatto, quelli a programma memorizzato sono più utilizzati. Quelli a logica cablata sono utilizzati, spesso, come componenti di quelli a programma memorizzato. Es. Il mouse è un sistema digitale a logica cablata.

ARCHITETTURA INTERNA DEI SISTEMI A POGRAMMA MEMORIZZATO

Al più alto livello, quello visibile all’occhio umano, questi sistemi sono composti da due categorie di componenti o di unità.

UNITA’ CENTRALE Essa è una sola. All’interno dell’unità centrale si trova il programma che specifica il comportamento del sistema digitale.

Page 16: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

UNITA’ PERIFERICHE Esse, di solito, sono più di una. Permettono, al sistema digitale, di interagire con il mondo esterno. Esse si suddividono in: - PERIFERICHE DI INGRESSO (input): esse comunicano con l’unità centrale ricevendo da questa le

informazioni provenienti dall’esterno; - PERIFERICHE DI USCITA (output): esse comunicano sempre con l’unità centrale ricevendo da questa

le informazioni da inviare all’esterno; - PERIFERICHE DI INGRESSO/USCITA(input/output). Le unità periferiche non possono mai interagire tra loro.

Le frecce rappresentano realmente dei cavi che uniscono l’unità centrale con la periferica esterna. Le unità periferiche non sono in grado di eseguire programmi. Per questo il comportamento dell’intero sistema è determinato esclusivamente dal programma che viene eseguito all’interno dell’unità centrale. Il loro comportamento è perciò controllato direttamente dall’unità centrale. Le unità periferiche non possono fare quello che vogliono, anzi, esse sono condizionate dall’unità centrale. Il componente principale di un sistema digitale sarà di certo l’unità centrale.

LA STRUTTURA INTERNA DELL’UNITA’ CENTRALE

A questo livello non si parla più di unità, ma di moduli. I moduli sono i componenti dell’unità centrale. - Il PROCESSORE. Di solito si ha un processore ma, a volte, anche più di uno. - La MEMORIA CENTRALE. - Le INTERFACCE D’INGRASSO / USCITA. - IL BUS DI SISTEMA. Esiste un unico fascio di linee che collegano tra loro tutti i moduli dell’unità

centrale. Esso non è un modulo ma è un componente dell’unità centrale.

Page 17: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Le porte sono gruppi di linee di interconnessione tra l’unità centrale e le unità periferiche. Ad un’interfaccia di ingresso / uscita possono essere collegate più di due periferiche. Le interfacce di ingresso / uscita servono a collegare l’unità centrale con le unità periferiche per mezzo delle porte di ingresso / uscita. La memoria centrale, invece, contiene il programma da eseguire. Il processore esegue le istruzioni specificate nel programma che è contenuto nella memoria centrale.

STRUTTURA DELLA MEMORIA CENTRALE DI UN SISTEMA DIGITALE A PROGRAMMA

MEMORIZZATO La struttura della memoria centrale dei sistemi digitali a programma memorizzato è composta da un insieme ordinato di locazioni di memoria, ciascuna delle quali può contenere una parola di un codice binario. Tutte queste locazioni hanno la stessa capacità (la lunghezza delle parole contenuta in ciascuna locazione è la stessa). Esempio di contenuto di ciascuna locazione di memoria (organizzazione della memoria centrale).

Page 18: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Il processore o le interfacce di ingresso/uscita possono accedere a ciascuna locazione di memoria sia per leggere il contenuto sia per modificarlo. Per accedere ad una locazione è necessario prima individuarla. Per individuare una locazione di memoria è necessario specificarne la posizione relativa alle altre locazioni all’interno della memoria centrale. La posizione relativa della locazione è data dal numero di locazioni che la precedono. Le posizioni relative di ciascuna locazione sono detti indirizzi. L’indirizzo di una locazione che non è altro che il numero di locazioni che la precedono. Il modulo di memoria centrale di un sistema digitale a programma memorizzato deve possedere almeno due linee che lo interconnettono al bus di sistema. Il primo gruppo di linee è quella delle linee degli indirizzi. Per mezzo di queste linee il processore o le interfacce di ingresso / uscita specificano l’indirizzo della locazione a cui desideriamo (vogliamo) accedere. L’indirizzo è un numero reale intero compreso tra “0” e tra “n - 1”. Per essere compreso dai sistemi digitali questo numero deve essere espresso sotto forma di un numero binario. L’insieme è un insieme di linee di interconessione elettrica. In queste linee i segnali potranno avere infiniti valori. In realtà ne hanno solo due: “0” o “1”. Ogni segnale digitale all’interno di un sistema digitale a programma memorizzato può assumere come valore un bit (una cifra binaria). un insieme di “n” linee può rappresentare una parola binaria di “n” cifre. Si parla di più di segnali binari. Per rappresentare un numero binario avrò bisogno di tanti segnali quante sono le cifre del numero. Ogni segnale viaggia su una diversa linea di interconnesione. Una parola binaria di “n” cifre è rappresentato da “n” linee di interconnesione. Il numero massimo di locazioni della linea centrale non può superare 2^k. n massimo di locazioni � 2^k Sulle linee dei dati viaggiano le parole binarie che vengono lette, che vengono scritte sulle locazioni di memoria. Il numero di queste linee dev’essere uguale alla lunghezza delle parole binarie che sono contenute nelle locazioni di memoria. n del primo esempi = 8 (lunghezza della parola binaria).

ESEMPIO: n = (10100)2 L4 � V(L4) = HIGH L3 � V(L3) = LOW L2 � V(L2) = HIGH L1 � V(L1) = LOW L0 � V(L0) = LOW 0 � INDIRIZZO � (2^k) – 1

Page 19: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

PROCESSORE E’ quel modulo dell’unità centrale che serve ad eseguire i programmi nel sistema digitale. L’insieme delle istruzioni che il processore è in grado di eseguire costituisce un linguaggio del tutto diverso dai normali linguaggi di programmazione ad alto livello. Questo linguaggio viene detto linguaggio macchina perché è l’unico linguaggio comprensibile dal processore. Ogni parola del numero binario dato dalla trasformazione delle istruzioni, corrisponde ad una istruzione per il processore. Il codice è detto codice macchina. Il codice macchina è un particolare codice binario usato per rappresentare le istruzioni del linguaggio macchina.

Il codice macchina è un codice binario a lunghezza variabile, ed è un codice non ambiguo. Una volta tradotto il codice macchina, qualsiasi programma può essere memorizzato all’interno della unità centrale. Il processore, per eseguire il programma, esegue una sequenza di operazioni eseguita continuamente per ogni istruzione. Questa ripetizione viene detta ciclo d’interpretazione delle istruzioni. Questa procedura (ciclo d’interpretazione) è composta da tre fasi e serve al processore per eseguire altri programmi. 1ª FASE: PRELIEVO del codice macchina della istruzione: Prelevare dalla locazione di memoria in cui si trova, il codice della successiva istruzione del programma da eseguire. 2ª FASE: DECODIFICA del codice dell’istruzione: La decodifica viene svolta per determinare qual è l’istruzione del linguaggio macchina che dev’essere eseguita. 3ª FASE: ESECUZIONE dell’istruzione. TORNA ALLA PRIMA FASE.

Page 20: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Questa procedura si ripete in continuazione. 1ª FASE: PRELIEVO: Legge il contenuto della locazione di memoria di indirizzo uguale ad IP (instruction pointer o registro delle istruzioni). 2ª FASE: DECODIFICA: Incrementa il contenuto di IP incrementato della lunghezza del codice dell’istruzione che è stato prelevato nella fase precedente. 3ª FASE: ESECUZIONE: (Può anche modificare l’IP cioè: se “istruzione = jmp” allora “IP = nuovo indirizzo”.)

LA STRUTTURA INTERNA DEL PROCESSORE Sono stati presi in considerazione solo tutti i componenti generali contenuti nei processori. Analogamente tutti i componenti del processore sono collegati al bus dei dati interno. Questo è a sua volta collegato alle linee dei dati del bus di sistema (esso è formato da vari gruppi di linee di interconnesione in cui, oltre alle linee degli indirizzi, vi sono quelle dei dati letti dal processore). Il bus dati interno dipende dal processore. In “IR” verrà registrato il codice macchina che deve essere eseguito. Il registro “IP” (che dice l’indirizzo della locazione di memoria) e il registro “IR” sono utilizzati nella prima fase: il prelievo del codice macchina della istruzione che viene poi registrato su “IR”. La logica della decodifica delle istruzioni è un circuito elettrico. Esso è un importante componente del processore che riceve in ingresso un codice binario (macchina) e lo decodifica. Il risultato della decodifica viene inviato alla logica di controllo e temporizzazione. La funzione di questa logica di controllo e temporizzazione è quella di controllare il funzionamento di tutti gli altri componenti, non solo del processore, ma dell’intera unità centrale. Per questo motivo è anche collegata al bus di sistema attraverso un terzo gruppo di linee di interconnesione chiamate linee di controllo e temporizzazione. Questa logica di controllo e temporizzazione determina anche la durata temporale. I registri sono capaci di memorizzare un numero binario. Ogni registro generale è in grado di contenere una parola binaria della stessa lunghezza degli altri registri generali. Il numero di registri generali dipende dal processore. In poche parole è una memoria interna al processore nella quale riesce ad accedere facilmente. Maggiore è la capacità dei registri generali e maggiore sarà la potenza (velocità) del processore. L’unità aritmetico – logica ha il compito di eseguire le operazioni di tipo aritmetico tra numeri binari (+, =, +, :) o logiche. Essa possiede due gruppi di linee in ingresso per i due operandi ed un numero di linee di uscita. ADD AX,BX Somma del contenuto dei registri “A” e “B”. AX = AX + BX Per eseguire questa operazione ci vogliono tre operazioni. 1°: OP1 = AX 2°:OP2 = BX 3°:AX = OP1 + OP2

Page 21: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Nella pratica ogni sistema digitale, unità centrale e processore hanno caratteristiche diverse. Parlando del processore la scelta obbligata è i, processore intel 8086.

MICROPROCESSORE INTEL 8086 L’intel 8086 ha la caratteristica di avere un codice macchina compatibile con quello dei processori della serie pentium. E’ compatibile nel senso che ogni istruzione dell’intel 8086 appartiene anche a quello del pentium solo che, mentre le istruzioni del pentium sono quasi un migliaio, quelle dell’intel 8086 sono 117. Nonostante ciò, esso è compatibile con il pentium. Il pentium eseguirà il programma come se fosse un intel 8086. Il linguaggio dell’intel 8086 è contenuto in quello dei pentium. Gli intel sono, però, più semplici. Essi si differiscono nel numero e nella complessità dei suoi componenti. Il bus dati interno dell’intel 8086 è a 16 bit (16 linee di interconnessione), mentre i pentium hanno un bus dati interno a 32 bit. Il registro IP dell’intel 8086 è a 16 bit, mentre quello dei pentium è a 32 bit. I registri generali dell’intel sono a 16 bit, mentre quelli dei pentium sono a 32 bit. L’intel 8086 è un processore a 16 bit, mentre i pentium sono processori a 32 bit. Gli intel 8086 hanno otto registri generali che sono: AX, BX, CX, DX, SP, BP, SI, DI. I primi quattro (AX, BX, CX, DX) hanno una particolarità, cioè possono essere divisi in due parti.

IL REGISTRO GENERALE AX(oBX,oCX,oDX)

Questi due nuovi registri a 8 bit, ottenuti dividendo AX (o BX, o CX, o DX) in due parti, prendendo il nome di AH (parte alta) e AL (parte bassa). Esse non sono due registri diversi da AX (o BX, o CX, o DX), ma ne rappresentano la parte alta e la parte bassa. Nel caso di BX, diventeranno BH e BL, nel caso di CX, diventeranno CH e CL, nel caso di DX, diventeranno DH e DL. Se si modifica AH o AL si modificheranno anche la parte bassa e la parte alta di AX. Anche l’unità aritmetico – logica è a 16 bit. L’ALU del pentium è a 32 bit. Il codice macchina delle istruzione appartiene alla categoria dei codici binari a lunghezza variabile e come tutti i codici non è altro che un insieme di sequenze di simboli dell’alfabeto binario che sono utilizzati per rappresentare le istruzioni eseguibili dal processore. Ogni istruzione è costituito di una parola binaria che coincide al codice macchina (parola macchina). Esistono due operazioni: codifica e decodifica. La codifica permette di ricavare quella parola binaria (macchina) che rappresenta una istruzione eseguibile dal processore. La decodifica permette di riconoscere quale istruzione è rappresentata da una parola del codice macchina. Perciò per programmare un intel 8086 bisognerebbe costruire un programma costituito di istruzioni. Per permettere al programma scritto di essere scritto ed eseguito dal processore, bisognerebbe codificarlo in codice binario. Questa operazione può essere effettuata manualmente o anche automaticamente

Page 22: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

da programmi che sono chiamati traduttori. Le istruzioni non possono essere scritte in linguaggio umano, perché l’intel 8086 comprende il programma solo se è scritto solo in linguaggio macchina. Per essere tradotte in codice macchina sotto forma di codice di codice binario, devono essere descritte simbolicamente. Il linguaggio macchina è il linguaggio in cui devono essere scritti i programmi per essere codificati in codice binario. Poi può essere convertito automaticamente in codice macchina. Il programma che esegue l’assemblaggio è detto assemblatore. L’operazione inversa è detta disassemblaggio ed è eseguita dal disassemblatore. Il contrario della scrittura è la lettura (interpretazione del significato della descrizione simbolica).

Page 23: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

IL LINGUAGGIO MACCHINA DELL’INTEL 8086

Non esiste un unico linguaggio macchina, perché ogni processore ha un diverso linguaggio macchina. Il linguaggio macchina descritto è relativo esclusivamente all’intel 8086. Le due forme fondamentali del linguaggio macchina sono: il linguaggio macchina mnemonico e il linguaggio macchina simbolico.

“INC” è il nome mnemonico della istruzione. “WORD [01FA]” è l’operando. “WORD” è una locazione di memoria a 16 bit. “[01FA]” è l’indirizzo della locazione di memoria che contiene l’operando. “CONTATORE” è un nome simbolico. “INC CONTATORE” significa incrementare il contenuto del contatore. “CONTATORE” è il nome simbolico che il programmatore ha deciso per nominare la locazione di memoria di indirizzo (01FA)16. Il linguaggio simbolico permette al programma di essere più leggibile. Il linguaggio simbolico permette al linguaggio mnemonico di definire nomi simbolici che rappresentano locazioni di memoria che contengono gli operandi delle istruzioni o i codici delle istruzioni del programma da eseguire. Il linguaggio macchina mnemonico è più semplice. Tutte le lingue naturali, anche quelle di programmazione, hanno una loro grammatica che è necessario conoscere.

LA GRAMMATICA O SINTASSI DL LINGUAGGIO MNEMONICO

Da un punto di vista sintattico, ogni programma di questo linguaggio è formato da una sequenza di istruzioni tra le quali è definito un ordinamento sequenziale.

Page 24: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

LA SINTASSI DELLE ISTRUZIONI DEL LINGUAGGIO MACCHINA

La sintassi è l’insieme delle istruzioni sintattiche per scrivere un programma. Ci sono tre tipi di istruzioni: 1- ISTRUZIONE SENZA OPERANDI = nome (è il nome mnemonico della istruzione; ad esempio “HTL”

che rappresenta mnemonicamente la sua funzione e cioè ferma il computer). 2- ISTRUZIONE AD UN OPERANDO = nome dest (il “nome” è il nome mnemonico mentre “dest” è

l’operando di destinazione). 3- ISTRUZIONI A DUE OPERANDI = nome dest, sorg (il “nome” è il nome mnemonico, “dest” è

l’operando di destinazione e “sorg” è l’operando sorgente. (esempio: MOV AX, [01FA] = “MOV” è il nome mnemonico, “AX” è l’operando di destinazione e “[01FA]” è l’operando sorgente).

LA SINTASSI DEGLI OPERANDI DI DESTINAZIONE E GLI OPERANDI

SORGENTI 4 - dest = R | BYTE M | WORD M | M “R” rappresenta un registro generale (AX,BX,CX,DX,SP,BP,SI,BI). |“BYTE” è una parola chiave del linguaggio. “M” rappresenta la lunghezza di una locazione di memoria che deve essere di un BYTE (8 bit). |“WORD” è una parola chiave del linguaggio. “M” è una locazione di memoria lunga 16 bit. |“M” è una qualsiasi locazione di memoria. 5 - sorg = R | BYTE M | WORD M | M | COST La regola dell’ordinamento sorgente prevede le stesse alternative di quello precedente più una che è “COST” che rappresenta una costante cioè un numero esadecimale di massimo quattro cifre ihfl(esempio:01FA).

LA SINTASSI DEGLI OPERANDI DI MEMORIA

Nelle operazioni con un operando, se l’operando descrive una locazione di memoria, bisogna mettere per forza prima BYTE o WORD (a seconda della lunghezza che si desidera). Per quella a due operandi, i due operandi devono avere sempre la stessa lunghezza. Sempre per quelle a due operandi, si dice che i due operandi non possono rappresentare entrambi una locazione di memoria. dest = locazione di memoria sorg � locazione di memoria MOV AL, WORD[01FA] � errata, perché bisogna togliere WORD e, di conseguenza si ottiene � � MOV AL, [01FA] � perché non serve specificare la lunghezza della locazione di memoria dato che è già specificata dal registro AL. MOV BYTE [01FA], [01FA] � errata perché sono due locazioni di memoria

Page 25: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

REGOLE DI R (REGISTRO GENERALE) 6 - “R” è un registro generale. R = R8 | R16 R8 = 8 bit R16 = 16 bit 7 - R8 = AL | AH | BL | BH | CL | CH | DL | DH ( “ | ” = alternativa) 8 - R16 = AX | BX | CX | DX | SP | BP | SI | DI 9 - RI = SI | DI “RI” sono i registri indice. A “RI” appartengono i registri generali SI, DI e cioè “SI” e “DI” sono registri . indici. 10- RB = BX | BP

“RB” sono i registri base 11- M = [cost] | [RB] | [RI] | [RB ± cost] | [RI ± cost] | [RB + RI ± cost] “[cost]” è un numero esadecimale tra parentesi quadre ed è l’indirizzo della locazione di memoria. “[RB]” è un registro base (BX, BP) ed il suo contenuto corrisponde all’indirizzo della locazione di ……memoria. “[RI] è un registro indice (SI, DI) ed il suo contenuto corrisponde all’indirizzo della locazione di ……memoria. “[RB ± cost]” è l’indirizzo dato dalla somma algebrica o dalla differenza numerica. “[RB ± cost]” è l’indirizzo dato dalla somma algebrica o dalla differenza numerica. “[RB + RI ± cost]” è l’indirizzo della locazione di memoria dato dalla somma tra due registri e una costante. L’indirizzo sarà uguale al contenuto dei due registri sommati tra loro e alla costante (somma binaria.

I METODI DI INDIRIZZAMENTO DELLE LOCAZIONI DI MEMORIA

Tutto quello detto per le locazioni di memoria ci fa capire che ci sono diversi modi per specificare una locazione di memoria.

N° METODO DI INDIRIZZAMENTO

n INDIRIZZO

1° DIRETTO [cost] (cost)16 2° INDIRETTO [RB] | [RI] CONTENUTO DI

“RB” O “RI” 3° RELATIVO [RB ± cost] CONTENUTO DI

“RB” ± (cost)16 4° DIRETTO

INDICIZZATO [RI ± cost] CONTENUTO DI

“RI” ± (cost)16 5° RELATIVO

INDICIZZATO [RB + RI ± cost CONTENUTO DI

“RB” + CONTENUTO DI “RI” ± (cost)16

Page 26: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

ISTRUZIONI DEL LINGUAGGIO ASSEMBLY

ISTRUZIONE MOVE Tipo: A due operandi. Nome mnemonico: MOV. Descrizione: Copia il codice binario contenuto nell’operando sorgente (sorg) come nuovo operando di destinazione (dest) . In poche parole fa (dest = sorg). L’Intel 8086 è un processore a finale piccolo cioè inizia a memorizzare dalle locazioni meno significative alle più significative. Altri processori iniziano a memorizzare dalla più significative e, per questo, sono detti a finale grande.

ISTRUZIONE ADD Tipo: A due operandi. Nome mnemonico: ADD. Descrizione: Copiare nell’operando di destinazione (dest) la somma binaria tra i codici contenuti nei due operandi (dest = dest + sorg). Il riporto viene memorizzato all’interno del processore (all’interno di un particolare componente del processore). Questo processore si chiama flag carry. I flag sono delle locazioni interne al processore in grado di memorizzare una sola cifra binaria. L’Intel 8086 ha alcuni effetti collaterali. L’istruzione ADD ha l’effetto collaterale di modificare alcuni flag. EFFETTI COLLATERALI Il flag carry è il riporto finale dell’addizione binaria. Il flag zero viene settato (uguagliato a uno) se il risultato dell’addizione binaria è uguale a zero, zero nel caso contrario. Il flag sign è il bit più significativo del risultato. Il flag overflow è uguale a uno se gli ultimi due riporti (il più significativo e quello che lo precede) sono diversi tra loro; zero nel caso siano uguali.

ISTRUZIONE ADD WITH CARRY Tipo: A due operandi. Nome mnemonico: ADC. Descrizione: Copia nell’operando di destinazione la somma binaria tra i contenuti degli operandi dest, sorg e del flag carry (dest = dest + sorg + carry). EFFETTI COLLATERALI Gli effetti collaterali sono gli stessi dell’istruzione ADD.

ISTRUZIONE SUBSTRACT Tipo: A due operandi. Nome mnemonico: SUB. Descrizione: Copia nell’operando di destinazione (dest) la differenza binaria tra i contenuti degli operandi di destinazione e sporgente (dest = dest – sorg). EFFETTI COLLATERALI Il flag carry è il prestito finale della differenza. Il flag zero viene posto a uno se il risultato della differenza è nullo, altrimenti viene posto a zero. Il flag sign è il bit più significativo del risultato.

Page 27: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Il flag overflow viene posto a zero se i due prestiti più significativi sono uguali, se sono diversi viene posto a uno.

ISTRUZIONE SUBTRACT WITH BORROW Tipo: A due operandi. Nome mnemonico: SBB. Descrizione: Copia nell’operando di destinazione (dest) la differenza binaria tra i contenuti degli operandi di destinazione e sorgente e del flag carry (dest = dest – sorg – carry) EFFETTI COLLATERALI Gli effetti collaterali sono gli stessi dell’istruzione SUB.

ISTRUZIONE COMPARE Tipo: Aritmetica a due operandi. Nome mnemonico: CMP. Descrizione: Esegue la differenza binaria tra i contenuti degli operandi di destinazione e sorgente solo che il risultato provoca la variazione dei flag e non dell’operando di destinazione. Il flag carry viene posto ad uno se l’operando di destinazione, visto come numero intero senza segno, è minore dell’operando sorgente. Il flag zero viene posto ad uno se la differenza è uguale a zero, nel caso contrario viene posto a uno. Il flag sign viene posto ad uno se la differenza è un numero intero con segno rappresentato in codice binario in complemento a due negativo. Il flag overflow viene posto ad uno se la differenza non è rappresentabile in codice binario in complemento a due dall’operando di destinazione.

CATEGORIA DELLE ISTRUZIONI DI SALTO

I flag sono utilizzati anche da questa categoria di istruzioni del linguaggio macchina. Sintassi: nome cost Descrizione: Se la “condizione di salto” è vera, copia il valore della costante esadecimale ((cost)16) nel registro IP. La “condizione di salto” è rappresentata dal nome mnemonico dell’istruzione di salto. NOME CONDIZIONE DI SALTO Salti condizionati: jo overflow = 1 (iump if overflow) jno overflow = 0 (jump if not overflow) js sign = 1 (jump if sign) jns sign = 0 (jump if not sign) jz zero = 1 (jump if zero)

Page 28: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

jnz zero = 0 (jump if not zero) jc carry = 1 (jump if carry) jnc carry = 0 (jump if not carry) Salti non condizionati: jmp la condizione di salto è sempre vera

ISTRUZIONI PER MANIPOLAZIONI DI

TIPO LOGICO A DUE OPERANDI

ISTRUZIONE AND Nome mnemonico: AND Descrizione: Copia nell’operando di destinazione il prodotto logico bit a bit tra i due operandi. Questa istruzione viene utilizzata per azzerare alcuni bit senza modificare gli altri. EFFETTI COLLATERALI: Modifica i flag sign e zero. Operazione: Per i = 0,1,2,…,n-1: dest i = dest i AND sorg i

ISTRUZIONE OR Nome mnemonico: OR Descrizione: Copia nell’operando di destinazione (dest) la somma logica bit a bit tra i due operandi. Questa istruzione è usata per porre a uno alcuni bit di una parola binaria senza modificare gli altri. EFFETTI COLLATERALI: Modifica i flag sign e zero. Operazione: Per i = 0,1,2,…,n-1: dest i = dest i OR sorg i

ISTRUZIONE XOR Nome mnemonico: XOR Descrizione: Copia nell’operando di destinazione (dest) la somma esclusiva bit a bit tra i due operandi. Questa istruzione complementa alcuni bit lasciando invariati gli altri cioè, complementa un numero di bit di un codice binario. EFFETTI COLLATERALI: Modifica i flag sign e zero.

Page 29: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

Operazione: Per i = 0,1,2,…,n-1: dest i = dest i XOR sorg i

ISTRUZIONE TEST Nome mnemonico: TEST Descrizione: Esegue il prodotto logico bit a bit tra i due operandi modificando, però, solo i valori dei flag sign e zero. Questa istruzione è usata per controllare il valore di un particolare bit di un codice binario. EFFETTI COLLATERALI: Modifica i flag sign e zero. Operazione: Per i = 0,1,2,…,n-1: Esegui: dest i AND sorg i (senza modificare l’operando di destinazione (dest))

ISTRUZIONI ARITMETICO LOGICHE AD UN OPERANDO

NOME OPERAZIONE FUNZIONE

INC dest = dest + 1 Incrementa di uno il valore rappresentato dal codice rappresentato dal codice binario contenuto nell’operando di destinazione.

DEC dest = dest – 1 Decrementa di uno il valore rappresentato dal codice binario contenuto nell’operando di destinazione.

NEG dest = - dest Ottenere l’opposto del valore rappresentato in complemento a due dal codice binario contenuto nell’operando di destinazione

NOT Per i = 0,1,… Esegue la negazione logica bit a bit del codice binario contenuto nell’operando di destinazione.

“NEG” viene eseguita complementando la parola del codice e, alla fine, aggiungendo “1”. Vengono anche modificati i flag: INC = OVERFLOW, SIGN, ZERO. DEC = OVERFLOW, SIGN, ZERO. NEG = OVERFLOW, SIGN, ZERO, CARRY. NOT = NESSUN FLAG. “INC” modifica i flag come l’istruzione ADD. “DEC” modifica i flag come l’istruzione SUB. “NEG” modifica i flag come l’istruzione SUB. Le prime due istruzione (INC e DEC) non modificano il carry perché esso potrebbe essere utile per fare qualcos’altro.

ISTRUZIONI DI SCORRIMENTO E ROTAZIONE

Questo è un insieme di istruzioni che non è uniforme con le leggi di sintassi generali. La sintassi si queste istruzioni può essere definita dalle seguenti regole:

Page 30: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

nome dest, cnt dove: “nome” è il nome mnemonico dell’istruzione; “dest” è l’operando di destinazione e la sua sintassi è uguale a quella delle istruzioni ad un operando. Se l’istruzione ha una locazione di memoria come operando di destinazione bisogna specificare se è BYTE o WORD. “cnt” è il campo e può essere solo “1” o “CL”. cnt = 1 | CL nome = SHL (SHIFT LEFT) | SHR (SHIFT RIGHT) | SAL (SHIFT ARITMETIC LEFT) | SAR (SHIFT ARITMENTIC RIGHT) | ROL (ROTATE LEFT) | ROR (ROTATE RIGHT) | RCL (ROTATE WITH CARRY LEFT) | RCR (ROTATE WITH CARRI RIGHT) . SHL | SHR | SAL | SAR = Permettono di spostare di una o più posizioni verso sinistra o destra ciascun bit del codice binario contenuto nell’operando di destinazione. ROL | ROR | RCL | RCR = Permettono di ruotare di una o più posizioni ciascun bit del codice binario contenuto nell’operando di destinazione verso destra o verso sinistra.

SPIEGAZIONI ISTRUZIONI SHL : Sposta ciascun bit dell’operando di destinazione di una posizione verso sinistra e la cifra meno significativa viene posta a zero. Questa operazione viene ripetuta per tante volte quanto è il contenuto del conteggio. E’ il prodotto binario del valore del codice contenuto dall’operando di destinazione per due. dest = dest · 2 · 2 · 2 · 2 · 2 · 2 cnt volte Questa istruzione modifica i flag: carry, sign, zero. SHR : Sposta ciascun bit dell’operando di destinazione, di una posizione verso sinistra e la cifra più significativa viene posta a zero. dest = dest / 2^cnt Esegue, in poche parole, la divisione binaria. Questa istruzione modifica i flag: carry, sign, zero. SAL : Come SHL perché fanno la stessa cosa. SAR : Assomiglia alla SHR solo che la cifra significativa non cambia più il suo valore. Quando il codice binario contenuto nell’operando di destinazione è un intero senza segno si usano SHL e SHR che eseguono rispettivamente: “dest · 2^cnt” e “dest/2^cnt. Quando il codice contenuto dall’operando di destinazione è la rappresentazione binaria in complemento a due di un numero intero con segno si usano SAL e SAR. Queste istruzioni hanno tutte la stessa funzione ma valgono per tipi diversi di operandi di destinazione. ESEMPI: dest = (0101)2 = 5 SHL dest,1 dest = (1010)2 = 10 = 5 · 2 dest = (0101)2 = 5 SHR dest,1 dest = (0100)2 = 2 = 5 DIV 2 dest = (1110)2 = -2 SAL dest,1 dest = (0010)2

Page 31: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

LAVORARE COL SISTEMA OPERATIVO MS-DOS

COME UN PROGRAMMA VIENE CARICATO Il sistema operativo MS-DOS riserva al programma da eseguire un’area di memoria (un segmento di memoria centrale) della dimensione di 64 k byte (65536 byte cioè 1024 · 64). In questo segmento il codice delle istruzioni e dei dati non viene caricato dalla locazione d’indirizzo “0”, ma da quella d’indirizzo “100” e cioè (0100)16. Il programma non carica il programma dalla prima locazione perché, in quest’area il sistema operativo inserisce delle informazioni o dei dati relativi al programma da eseguire che, nel loro complesso, occupano un’area di 256 byte, cioè i primi 256 byte devono contenere una certa quantità di informazioni di controllo utilizzate durante l’esecuzione del programma. Quest’area viene detta “Program Segment Perefix”. Alla fine dell’area libera vi è un’altra locazione di memoria che è data dall’indirizzo SP (Stack Pointer). (65535)16 o (FFFF)16 che è l’indirizzo dell’ultima locazione di memoria. La locazione di memoria contenuta tra l’indirizzo “SP” e l’indirizzo “(FFFF)16” è chiamata “Stack del programma”. La diminuzione di questa struttura dati varia dinamicamente durante l’esecuzione del programma in quanto esistono istruzioni del linguaggio macchina che permettono di inserirvi nuovi elementi ed esistono anche delle istruzioni che permettono di estrarre dalla stack degli elementi inseriti precedentemente. L’ordine di estrazione degli elementi dallo stack del programma è l’inverso di quello di inserimento. Per questo motivo lo stack del programma è una struttura dati del tipo lifo (last in first out) significa che l’ultimo elemento inserito è l’inverso di quello di inserimento. Man mano che si inseriscono dati, l’area di memoria libera diminuisce, mentre, man mano che di estraggono dati, l’area di memoria libera aumenta. Se inserisco dati, SP diminuisce, se estraggo dati, SP aumenta.

LE ISTRUZIONI DI MANIPOLAZIONE

DELLO STACK ISTRUZIONE PUSH Viene usata per inserire elementi nello stack. Istruzione ad un operando. Sintassi: push sorg sorg = R16 | WORD M | M L’operando sorgente è sempre e solo a 16 bit. ESEMPIO: push AX

Page 32: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

oppure push WORD[BX] Per inserire il contenuto dell’operando sorg nello stack del programma esegue queste istruzioni: 1°: SP = SP - 2 2°: WORD [SP] = sorg

ISTRUZIONE POP Viene usata per estrarre dallo stack l’ultimo elemento precedentemente inserito e lo copia nell’operando di destinazione. Istruzione ad un operando. Sintassi: pop dest dest = R16 | WORD M | M Per estrarre l’ultimo elemento inserito e copiarlo nell’operando di destinazione esegue queste istruzioni: 1°: dest = WORD [SP] 2°: SP = SP + 2 L’ultima parola inserita ritorna a far parte dell’area libera incrementando SP. Problema di esempio: Scambiare il contenuto di due registri: AX, BX. 1° push AX 2° push BX 3° pop AX 4° pop BX

PROCEDURE Le procedure sono sequenze di istruzioni di un programma la cui esecuzione può essere può essere richiesta mediante una particolare istruzione di chiamata. Sono uno dei più importanti strumenti per scrivere programmi perché permettono di organizzare tutte le istruzioni di un programma in ordine logico più semplice da leggere e da scrivere, in particolare, un programma può essere organizzato in una procedura principale e un insieme di procedure richiamate dalla procedura principale. ESEMPIO: PP: …… call PA …… call PB …… call PA …… htl PA: …… …… …… ret PB: …… ……

Page 33: A B E C D G - sistemidigitali.altervista.orgsistemidigitali.altervista.org/3isc/01-02/Pavlovich.pdf · Esistono due tipi di grandezze fisiche: le grandezze fisiche costanti e le grandezze

…… ret “rit” è l’istruzione di rientro. “call” è l’istruzione di chiamata Bastano queste due istruzioni per creare procedure e funzioni.

ISTRUZIONE CALL Nome mnemonico: call Sintassi: call cost (“cost” è l’indirizzo della prima istruzione della procedura da eseguire) Operazione: Sospende la procedura chiamante per eseguire quella chiamata. Durante l’esecuzione di questa istruzione il microprocessore svolge le seguenti operazioni: 1°: SP = SP-2 2°: WORD [SP] = IP 3°: IP = cost Il processore svolgendo queste operazioni: (3° operazione) salta alla prima istruzione del programma da eseguire, questo però distruggerebbe il valore di IP. Il processore non saprebbe più dove andare alla fine della procedura chiamata. Perciò il valore di IP viene salvato nella locazione di indirizzo Stack Pointer (SP) (1° e 2°operazione).

ISTRUZIONE RETURN Nome mnemonico: ret Sintassi: ret Operazione: il return va messo su tutte le procedure, tranne su quella principale e serve per ritornare alla procedura chiamante. Questa istruzione provoca l’estrazione dallo stack dell’ultimo elemento inserito e lo copia nel registro IP cioè svolge le seguenti operazioni: 1°: IP = WORD [SP] 2° SP = SP + 2 Questo vale solo se l’ultimo elemento inserito nello stack corrisponde all’indirizzo di rientro.