a.a. 2003-04
G. Castellano
Tipi di dati
Dato: informazione codificata in modo da poter essere trattata dallelaboratore Un dato definito da un tipo, un valore e un indirizzo Definire un tipo di dati equivale a definire
linsieme dei valori possibili le operazioni possibili
a.a. 2003-04 G. Castellano 3
Tipi di dati
Un tipo di dati supportato da una architettura se questa fornisce:
una modalit di rappresentazione uno o pi meccanismi di accesso
Modalit di indirizzamento
I dati trattati in linguaggio macchina sono diversi dai dati trattati nei linguaggi ad alto livello
Es. record
Assente in linguaggio macchina Presente in linguaggio ad alto livello
a.a. 2003-04 G. Castellano 5
a.a. 2003-04
G. Castellano
Lunghezza:
Lunghezza:
1 word (8, 16, 32 o 64 bit)
a.a. 2003-04 G. Castellano 7
Lunghezza
32 bit (singola precisione) 64 bit (doppia precisione)
a.a. 2003-04 G. Castellano 8
Tipi di istruzioni
Classificazione basata sul tipo di dati:
Istruzioni su dati non tipizzati: determinano operazioni eseguibili su tutti i tipi di dati 1. Istr. Istr. di trasferimento dati 2. Istr. Istr. di Input/Output Istruzioni su dati tipizzati: operano su un particolare tipo di dati 1. Istr. Istr. aritmetiche 2. Istr. Istr. logiche 3. Istr. Istr. di elaborazione stringhe 4. Istr. Istr. di elaborazione indirizzi 5. Istr. Istr. di trasferimento del controllo (modifica della sequenza di elaborazione)
9
a.a. 2003-04
G. Castellano
a.a. 2003-04
G. Castellano
10
compito dellassemblatore tradurre ogni istruzione assembly nella corrispondente istruzione macchina a.a. 2003-04 G. Castellano 11
In alcune architetture si usano istruzioni diverse per i diversi tipi di trasferimento, in altre architetture si usa ununica istruzione
a.a. 2003-04 G. Castellano 12
(eXCHanGe)
PUSH src POP dst LEA dst, src
(Load Effective Address)
LAHF
a.a. 2003-04
Istruzione MOV
Il dato letto dalloperando sorgente e scritto nelloperando destinazione Loperando sorgente pu essere un registro, una locazione di memoria, oppure un valore immediato Loperando destinazione pu essere un registro oppure una locazione di memoria
a.a. 2003-04 G. Castellano 14
Istruzioni di I/O
Istruzioni per i trasferimenti di I/O
Trasferiscono un dato
da una porta di I/O ad un registro (istruzione di INPut) da un registro ad una porta di I/O (istruzione di OUTput)
Sono utilizzate quando si adotta la tecnica dell isolated I/O come modalit di indirizzamento dei dispositivi di I/O
a.a. 2003-04 G. Castellano 15
Copia un dato dalla porta di I/O port al registro reg Copia un dato dal registro reg alla porta di I/O port
a.a. 2003-04
G. Castellano
16
Istruzioni aritmetiche
Sono generalmente istruzioni diadiche (istruzioni con due operandi)
Istruzioni aritmetiche su numeri interi (relativi) Istruzioni aritmetiche su numeri floating point Istruzioni aritmetiche su numeri interi decimali (BCD packed o unpacked)
a.a. 2003-04 G. Castellano 17
Istruzioni aritmetiche
Un istruzione aritmetica modifica generalmente i flag del registro di stato del processore
Program Status Word
N Z D V C
N (Negativo): 1 se il risultato negativo (altrimenti 0) Z (Zero): 1 se il risultato zero D (Decimale): 1 per operazioni in BCD V (oVerflow) : 1 se si verifica un overflow C (Carry) : 1 se il risultato genera un riporto
G. Castellano 18
a.a. 2003-04
Significato dst dst + src dst dst + src+CF dst dst src dst dst src - CF dst dst +1 dst dst -1 Inverte il segno di dst (complemento a 2)
19
a.a. 2003-04
G. Castellano
accumulatore/valore
ADD AL, 3
memoria/valore o registro/valore
ADD DX, 176 ADD A, 15
a.a. 2003-04 G. Castellano 20
10
a.a. 2003-04
G. Castellano
21
Significato AX AL*src DX:AX AX*src AX AL*src DX:AX AX*src AL AX/src AH resto AX (DX:AX)/src DX resto AL AX/src AH resto AX (DX:AX)/src DX resto
22
IMUL src
(operandi con segno)
DIV src
(operandi senza segno)
IDIV src
(operandi con segno)
a.a. 2003-04
G. Castellano
11
12
CWD
Convert Word to Doubleword
Significato converte un byte nella word equivalente, estendendo il segno del contenuto di AL a tutto AH converte una word nella doubleword equivalente, estendendo il segno del contenuto di AX a tutto il registro DX
26
a.a. 2003-04
G. Castellano
13
Numero positivo
AH
AL
1 0 1 0 1 1 0 0 CBW
1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0
AH
a.a. 2003-04 G. Castellano
AL
27
14
a.a. 2003-04
G. Castellano
30
15
Istruzione CMP
Condizione op1 = op2 op1 op2 op1 < op2 op1 op2 op1 > op2 op1 op2
a.a. 2003-04 G. Castellano
Stato dei flag dopo CMP ZF=1 ZF=0 SFOF ZF=1 o SFOF ZF=0 e SF=OF SF=OF
31
16
Istruzioni logiche
Operando 1 0 0 1 0 1 1 0 0 Operando 2 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 AND (prodotto logico) OR (somma logica) XOR (OR esclusivo) 1 1 0 1 0 0 1 1 NOT
a.a. 2003-04
G. Castellano
33
a.a. 2003-04
G. Castellano
34
17
Istruzione TEST
Uso dellistruzione TEST per testare un bit
bit da testare bit da testare
1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 Maschera TEST 0 0 0 0 0 0 0 0
1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 Maschera TEST 0 0 0 0 0 1 0 0
ZF=1
a.a. 2003-04 G. Castellano
ZF=0
35
MODIFICA di bit
Gruppo di bit da modificare
1 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 Maschera AND 0 0 0 0 1 0 1 0
1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 Maschera 1 1 0 1 0 0 0 0 AND
0 0 0 0 0 1 1 0 Nuovi bit OR 1 1 0 1 0 1 1 0
a.a. 2003-04 G. Castellano 36
18
Rotazione a sinistra
Rotazione a destra
37
Significato
Effettua uno shift aritmetico o logico di dst verso sinistra di una o pi posizioni dipendentemente dal valore di count Effettua uno shift logico di dst verso destra di una o pi posizioni dipendentemente dal valore di count Effettua uno shift aritmetico di dst verso destra di una o pi posizioni dipendentemente dal valore di count
SHR dst,count
Shift to Right
SAR dst,count
Shift Arithmetic to Right
a.a. 2003-04
G. Castellano
38
19
SHL/SAL
0 CF CF
SAR
SHR
a.a. 2003-04
G. Castellano
39
1 0
CF
0 1 1 1 0 1 0 0 1 1 0 0 1 0
1 0 1 1 0 1 0 1
SHR di 2 bit
SA R
0 0 1 1 0 0 1 1 1 0 0 1 1 0
0 1
CF
di
2b
it
1 1 1 0 0 1 1 1 0 0 1 1 0
0 1
CF
a.a. 2003-04
G. Castellano
40
20
a.a. 2003-04
42
21
ROR dst,count
ROtate Right
G. Castellano
CF
CF
ROL
ROR
CF
CF
RCL
a.a. 2003-04 G. Castellano
RCR
44
22
23
Istruzioni di salto
Le istruzioni vengono normalmente eseguite sequenzialmente nellordine in cui appaiono nel programma Utilizzando invece le istruzioni di salto possibile forzare il processore a continuare lesecuzione senza eseguire listruzione successiva, ma saltando ad una diversa istruzione
a.a. 2003-04 G. Castellano 47
24
a.a. 2003-04
G. Castellano
50
25
Salto condizionato
Le istruzioni di salto condizionato permettono di saltare allindirizzo specificato solo se verificata una condizione Il controllo della condizione effettuato testando i valori dei flag nel registro di stato
a.a. 2003-04 G. Castellano 51
Significato
Se la condizione stabilita dallistruzione di salto verificata, allora
IP IP + target
a.a. 2003-04 G. Castellano 52
26
Significato
Se ZF=1, IP IP+disp Se ZF=0, IP IP+disp Se SF=1, IP IP+disp Se SF=0, IP IP+disp Se OF=1, IP IP+disp Se OF=0, IP IP+disp Se PF=1, IP IP+disp Se PF=0, IP IP+disp
Cond.per salto
JNZ/JNE disp
(Jump if Not Zero/ Not Equal)
(Jump if Sign) (Jump if Not Sign) (Jump if Overflow) (Jump if Not Overflow)
JP/JPE disp
(Jump if Parity/ Parity Even)
JNP/JPO disp
(Jump if Not Parity/ Parity Odd) a.a. 2003-04 G. Castellano
Significato
Se dst < srg, IP IP+disp Se dst srg, IP IP+disp Se dst > srg, IP IP+disp Se dst srg, IP IP+disp Se dst = srg, IP IP+disp Se dst srg, IP IP+disp
54
JLE/JNG disp
(Jump if Less or Equal /Not Greater)
JG/JNLE disp
(Jump if Greater/Not Less or Equal)
JGE/JNL disp
(Jump if Greater or Equal /Not Less)
27
Significato
Se dst < srg, IP IP+disp Se dst srg, IP IP+disp Se dst > srg, IP IP+disp Se dst srg, IP IP+disp Se dst = srg, IP IP+disp Se dst srg, IP IP+disp
55
JNB/JAE disp
(Jump if Not Below/Above or Equal)
JA/JNBE disp
(Jump if Above/Not Below or Equal)
JAE/JNB disp
(Jump if Above or Equal /Not Below)
Test
N Z D V C
Flag di stato
a.a. 2003-04
G. Castellano
56
28
Istruzioni di iterazione
Le istruzioni di iterazione permettono di ripetere una sequenza di istruzioni per un numero definito di volte Lesecuzione di una istruzione di loop comprende:
aggiornamento di un registro (contatore) controllo di una condizione
a fine ciclo ad inizio ciclo
istruzione di salto
a.a. 2003-04 G. Castellano 57
a.a. 2003-04
G. Castellano
58
29
decrementa di una unit il registro CX (utilizzato implicitamente come contatore) esegue il controllo sul contenuto del registro CX:
se il valore di CX diverso da 0, salta allistruzione il cui indirizzo specificato nellistruzione di loop; altrimenti esegue listruzione successiva
G. Castellano
a.a. 2003-04
59
Le procedure
Una procedura una porzione di programma che svolge un compito specifico e che pu essere richiamate pi volte allinterno del programma
Le procedure servono a fattorizzare pezzi di codice utilizzati frequentemente in diverse parti di un programma
Lesecuzione di una procedura si effettua con una istruzione di chiamata a procedura, simile ad un salto incondizionato
a.a. 2003-04 G. Castellano 60
30
a.a. 2003-04
G. Castellano
62
31
by reference: la procedura chiamante passa alla procedura chiamata lindirizzo del parametro
ogni modifica del parametro effettuata dalla procedura chiamata si ripercuote sul valore del parametro per la procedura chiamante
a.a. 2003-04 G. Castellano 64
32
Interrupt
Uninterruzione un evento che interrompe il normale flusso di esecuzione di un programma per eseguire procedure specifiche Eventi scaturiti dai dispositivi esterni Condizioni eccezionali (es. divisione per zero) Utilizzo di alcune funzionalit del sistema operativo
a.a. 2003-04 G. Castellano 65
Interrupt
Due tipi di interrupt
Interrupt asincroni
Generati indipendentemente dal punto di esecuzione di un programma Normalmente generati da eventi esterni
Interrupt sincroni
Generati in specifici punti del programma per mezzo di apposite istruzioni Servono per utilizzare servizi di base per il sistema operativo
a.a. 2003-04 G. Castellano 66
33
Interrupt nell8086
Nellarchitettura 8086, sono previsti 256 interrupt Ciascun interrupt identificato da un numero che lindice di una tabella Interrupt Vector Table (IVT)
Ogni elemento della IVT contiene lindirizzo (SEGMENTO:OFFSET) della routine di servizion di un interrupt
a.a. 2003-04 G. Castellano
INT 4
a.a. 2003-04
Preleva dalla IVT lindirizzo della ISR individuata da int_number Carica in IP lindirizzo prelevato (salta alla ISR)
G. Castellano
68
34
35
Servizio Leggi un carattere dalla tastiera Scrivi un carattere dalla tastiera Visualizza un testo sul video Legge una stringa dalla tastiera Restituisce il controllo al S.O.
G. Castellano 72
36