Anda di halaman 1dari 36

Livello ISA

Tipi di dati Tipi di istruzioni

Instruction Set Architecture

Organizzazione dei registri Organizzazione della memoria

Tipi di dati Set di di Set istruzioni istruzioni

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

un insieme di istruzioni che operano su dati di quel tipo


a.a. 2003-04 G. Castellano 4

Tipi di dati e Linguaggi


Ogni livello dellarchitettura di un elaboratore (linguaggio) supporta un diverso insieme di tipi di dati
Es. indirizzo di memoria
Essenziale a livello di linguaggio macchina Assente in linguaggi ad alto livello

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

Tipi di dati a livello ISA


Le istruzioni macchina operano su quattro tipi di dati:
Numeri Indirizzi (numeri interi positivi) Caratteri Dati booleani

a.a. 2003-04

G. Castellano

Tipi di dati numerici


Numeri interi
Rappresentazione:
sistema binario

Lunghezza:

Numeri relativi (con segno)


Rappresentazione:
Grandezza e segno Complemento a 1 Complemento a 2

1 word (8, 16, 32 o 64 bit)

Lunghezza:
1 word (8, 16, 32 o 64 bit)
a.a. 2003-04 G. Castellano 7

Tipi di dati numerici


Numeri floating point
Rappresentazione:
notazione esponenziale normalizzata (standard IEEE 754)

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

Set di istruzioni dell8086


L8086 ha unarchitettura CISC microprogrammata con un repertorio di istruzioni piuttosto ampio Il repertorio pu essere riguardato in due modi diversi: Il repertorio di istruzioni a livello di linguaggio assembly comprende un centinaio di istruzioni ma ad ogni istruzione assembly possono corrispondere pi istruzioni macchina!
a livello di linguaggio assembly a livello di linguaggio macchina

a.a. 2003-04

G. Castellano

10

Set di istruzioni dell8086


Ad esempio, allistruzione assembly MOV, usata per per trasferire dati a 8 o 16 bit corrispondono in linguaggio macchina molti formati di istruzione di tipo MOVE
move word-register to memory move byte-register to memory move byte-immediate to register

compito dellassemblatore tradurre ogni istruzione assembly nella corrispondente istruzione macchina a.a. 2003-04 G. Castellano 11

Istruzioni di trasferimento dati


Istruzioni che trasferiscono un dato da una sorgente ad una destinazione Il trasferimento pu avvenire in diversi modi:
memoriaregistro registromemoria registroregistro memoriamemoria Effettuano in realt una copia del dato

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

Principali istruzioni di trasferimento dati dell8086


Forma mnemonica MOV dst, src XCHG dst, src Significato Copia src (source) in dst (destination) Scambia src con dst Copia una word da src a top dello stack Copia una word da top dello stack a dst Copia in dst loffset della locazione src Copia in AH la parte bassa del registro
13

(eXCHanGe)
PUSH src POP dst LEA dst, src
(Load Effective Address)

LAHF
a.a. 2003-04

(Load AH from Flags) FLAGS


G. Castellano

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

Il dato nelloperando sorgente non viene modificato

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

Istruzioni di I/O dell8086


Forma mnemonica IN reg, port OUT port, reg Significato

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

Principali istruzioni aritmetiche dell8086


Forma mnemonica
ADD dst,src ADC dst,src SUB dst,src SBB dst,src INC dst DEC dst NEG dst

Significato dstdst + src dstdst + src+CF dstdst src dstdst src - CF dstdst +1 dstdst -1 Inverte il segno di dst (complemento a 2)
19

a.a. 2003-04

G. Castellano

Istruzioni ADD e SUB


Esistono tre tipi di ADD e tre tipi di SUB a seconda degli operandi:
registro/registro, registro/memoria, memoria/registro
ADD BX, BP ADD A, BX ADD BX, A

accumulatore/valore
ADD AL, 3

memoria/valore o registro/valore
ADD DX, 176 ADD A, 15
a.a. 2003-04 G. Castellano 20

10

Istruzioni ADD e SUB


Non possibile avere operandi che siano due locazioni di memoria Esempio: ADD VAL1,VAL2

Si pu sostituire con: MOV AH,VAL2 ADD VAL1,AH

a.a. 2003-04

G. Castellano

21

Principali istruzioni aritmetiche dell8086


Forma mnemonica
MUL src
(operandi senza segno)

Significato AXAL*src DX:AXAX*src AXAL*src DX:AXAX*src ALAX/src AHresto AX(DX:AX)/src DXresto ALAX/src AHresto AX(DX:AX)/src DXresto
22

IMUL src
(operandi con segno)

DIV src
(operandi senza segno)

IDIV src
(operandi con segno)

a.a. 2003-04

G. Castellano

11

Istruzioni MUL e IMUL


I fattori della moltiplicazione sono della stessa lunghezza (o entrambi byte o entrambi word) I due casi possibili sono:
il processore salva il risultato della moltiplicazione in un operando di lunghezza doppia rispetto ai fattori se si specifica un operando lungo un BYTE, il processore esegue la moltiplicazione tra loperando ed il contenuto del registro AL e scrive il risultato nel registro AX se si specifica un operando lungo una WORD, il processore esegue la moltiplicazione tra loperando ed il contenuto del registro AX e scrive il risultato nei registri DX (word pi significativa) ed AX (word meno significativa)
a.a. 2003-04 G. Castellano 23

Istruzioni DIV e IDIV


Le istruzioni di divisione restituiscono due risultati: il quoziente ed il resto della divisione Due casi possibili
La lunghezza del quoziente e del resto met della lunghezza del dividendo

Divisore lungo un byte Divisore lungo una word


a.a. 2003-04 G. Castellano 24

12

Istruzioni DIV e IDIV


Divisore lungo un BYTE:
il processore esegue la divisione tra il contenuto del registro AX (dividendo) ed loperando (divisore) il processore salva il quoziente nel registro AL ed il resto nel registro AH. il processore esegue la divisione tra il contenuto dei registri DX:AX (dividendo) e loperando (divisore) il processore salva il quoziente nel registro AX ed il resto nel registro DX
a.a. 2003-04 G. Castellano 25

Divisore lungo una WORD:

Istruzioni di conversione dell8086


Forma mnemonica
CBW
Convert Byte to Word

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

Istruzione di conversione CBW


0 0 1 0 1 1 0 0 CBW 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0

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

Numero negativo (compl. a 2)

AH
a.a. 2003-04 G. Castellano

AL
27

Istruzione di conversione CBW


Listruzione CBW risulta utile quando si vuole eseguire unoperazione di addizione o sottrazione tra un numero memorizzato in un byte ed un numero memorizzato in una word
Esempio: ADD BX,CH
MOV AL, CH CBW ADD BX, AX
a.a. 2003-04 G. Castellano

; copia in AL il byte ; converte in una word ; somma due word


28

14

Istruzione di conversione CWD


Listruzione CWD risulta utile quando si vuole eseguire unoperazione di divisione tra due numeri su 16 bit
Esempio:
MOV AX,CX CWD IDIV BX
a.a. 2003-04

; copia in AX il dividendo di ; 16 bit (CX)


; converte la word in doubleword

; divide la doubleword (DX:AX) ; per una word (BX)


G. Castellano 29

Istruzione di confronto CMP


Listruzione di confronto CMP sottrae i due operandi senza memorizzare il risultato
altera solo i bit del registro FLAGS, dai quali si deduce la relazione tra i due operandi Forma mnemonica: CMP op1,op2 op1 e op2 possono essere registri, indirizzi e
costanti, ma non entrambi indirizzi n costanti

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

Istruzioni logiche o booleane


Istruzioni che realizzano le operazioni booleane AND, OR, NOT, XOR Operano su vettori booleani, aggregati (word o byte) di variabili logiche generalmente non omogenee
Operano in parallelo su tutti gli elementi del vettore booleano
Operazioni bit a bit
a.a. 2003-04 G. Castellano 32

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

Istruzioni logiche dell8086


Forma mnemonica AND dst,src OR dst,src XOR dst,src NOT dst TEST dst,src Significato

dstAND(src,dst) dstOR(src,dst) dstXOR(src,dst)


Effettua linversione logica di ciascun bit di dst Confronta src con dst tramite AND logico modificando solo il registro FLAGS

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

Uso particolare delle istruzioni AND e OR


ISOLAMENTO di bit
Gruppo di bit da isolare

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

Istruzioni di shift e rotazione


Traslazione (SHIFT): trasferimento di ogni bit di una word nella posizione successiva (a destra o a sinistra) Rotazione (ROTATE): shift a destra o a sinistra con reinserimento del bit espulso
0 Shift a sinistra 0 Shift a destra
a.a. 2003-04 G. Castellano

I bit espulsi dalla fine della parola vengono persi

Rotazione a sinistra

Rotazione a destra

37

Istruzioni di shift dell8086


Forma mnemonica SHL/SAL dst,count
Shift to Left

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

Istruzioni di shift (8086)


0 CF

SHL/SAL

0 CF CF

SAR

SHR

a.a. 2003-04

G. Castellano

39

Istruzioni di shift (8086)


A L/S SH Ld i it 2b

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

Istruzioni di shift logico (8086)


Listruzione SHL permette di eseguire la moltiplicazione di un numero intero senza segno per una potenza di 2 Listruzione SHR permette di eseguire la divisione di un numero intero senza segno per una potenza di 2
a.a. 2003-04 G. Castellano

con cont=n equivale ad una moltiplicazione per 2n

con cont=n equivale ad una divisione per 2n


41

Istruzioni di shift aritmetico (8086)


Listruzione SAL permette di eseguire la moltiplicazione di un numero intero con segno per una potenza di 2 Listruzione SAR permette di eseguire la divisione di un numero intero con segno per una potenza di 2
Per eseguire correttamente loperazione di divisione occorre eseguire lestensione del segno verso il bit pi significativo
G. Castellano

Listruzione SAL del tutto equivalente allistruzione SHL

a.a. 2003-04

42

21

Istruzioni di rotazione dell8086


Forma mnemonica Significato ROL dst,count Effettua una rotazione di dst verso sinistra
ROtate Left di una o pi posizioni dipendentemente dal valore di count Effettua una rotazione di dst verso destra di una o pi posizioni dipendentemente dal valore di count Effettua una rotazione di dst verso sinistra di una o pi posizioni dipendentemente dal valore di count, tramite il flag CF Effettua una rotazione di dst verso destra di una o pi posizioni dipendentemente dal valore di count, tramite il flag CF
43

ROR dst,count
ROtate Right

RCL dst, count


Rotate through Carry Left

RCR dst, count


Rotate through Carry Right
a.a. 2003-04

G. Castellano

Istruzioni di rotazione (8086)

CF

CF

ROL

ROR

CF

CF

RCL
a.a. 2003-04 G. Castellano

RCR
44

22

Istruzioni di trasferimento del controllo


Istruzioni che permettono di modificare la sequenza di esecuzione delle istruzioni di un programma, normalmente controllata dal meccanismo automatico di avanzamento del Program Counter Interrompono il flusso sequenziale del programma e trasferiscono il controllo ad unaltra parte di codice interna allo stesso segmento o ad un altro
a.a. 2003-04 G. Castellano 45

Istruzioni di trasferimento del controllo


Si dividono in:
Istruzioni di salto
Incondizionato Condizionato

Istruzioni per realizzare cicli Istruzioni per gestire procedure


Chiamate a procedure Ritorni da procedure

Istruzioni per gestite interrupt


a.a. 2003-04 G. Castellano 46

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

Istruzioni di salto (8086)


I salti possono essere di tipo NEAR o di tipo FAR a seconda che listruzione a cui si salta appartenga o no allo stesso segmento di codice
Per salti di tipo NEAR, il processore modifica il contenuto dellInstruction Pointer con loffset dellistruzione a cui saltare Per salti di tipo FAR, il processore modifica sia il contenuto dellInstruction Pointer, sia il contenuto del registro di segmento CS, scrivendo in essi i valori corrispondenti allindirizzo (offset e segmento) dellistruzione a cui saltare
a.a. 2003-04 G. Castellano 48

24

Salto incondizionato nell8086


Un salto incondizionato un salto che viene sempre eseguito, senza il controllo di alcuna condizione Listruzione di salto incondizionato JMP target trasferisce il controllo allistruzione specificata dalloperando target, in modo incondizionato
Significato:
a.a. 2003-04

target contiene lindirizzo dellistruzione a cui il processore salta, in formato SEGMENTO:OFFSET


49

CS SEGMENTO; IP OFFSET G. Castellano

Salto incondizionato nell8086


possibile effettuare salti incondizionati allinterno del segmento codice corrente o ad un altro segmento codice
Un salto ad un segmento diverso modifica il contenuto del registro CS

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

Salto condizionato (8086)


J<codice_cond> target

target : displacement di 8 bit (in


complemento a 2)
Max 127 byte in avanti o 128 byte indietro

Significato
Se la condizione stabilita dallistruzione di salto verificata, allora
IP IP + target
a.a. 2003-04 G. Castellano 52

26

Istruzioni di salto condizionato da un singolo flag (8086)


Forma mnemonica JZ/JE disp
(Jump if Zero/ Equal)

Significato
Se ZF=1, IPIP+disp Se ZF=0, IPIP+disp Se SF=1, IPIP+disp Se SF=0, IPIP+disp Se OF=1, IPIP+disp Se OF=0, IPIP+disp Se PF=1, IPIP+disp Se PF=0, IPIP+disp

Cond.per salto

ZF=1 ZF=0 SF=1 SF=0 OF=1 OF=0 PF=1 PF=0


53

JNZ/JNE disp
(Jump if Not Zero/ Not Equal)

JS disp JNS disp JO disp JNO disp

(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

Istruzioni di salto condizionato dal risultato di CMP (8086)


Si applicano dopo una CMP su operandi con segno
Nome mnemonico JL/JNGE disp
(Jump if Less/Not Greater or Equal)

Significato
Se dst < srg, IPIP+disp Se dst srg, IPIP+disp Se dst > srg, IPIP+disp Se dst srg, IPIP+disp Se dst = srg, IPIP+disp Se dst srg, IPIP+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)

JE disp JNE disp


a.a. 2003-04

(Jump if Equal) (Jump if Not Equal)


G. Castellano

27

Istruzioni di salto condizionato dal risultato di CMP (8086)


Si applicano dopo una CMP su operandi senza segno
Nome mnemonico JB/JNAE disp
(Jump if Below/Not Above or Equal)

Significato
Se dst < srg, IPIP+disp Se dst srg, IPIP+disp Se dst > srg, IPIP+disp Se dst srg, IPIP+disp Se dst = srg, IPIP+disp Se dst srg, IPIP+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)

JE disp JNE disp a.a. 2003-04

(Jump if Equal) (Jump if Not Equal)


G. Castellano

Istruzioni di salto condizionato


Istruzioni di elaborazione dati Istruzioni di confronto Istruzioni di salto condizionato

Modifica Status Word register

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

Istruzioni di iterazione (8086)


Nome mnemonico LOOP disp Significato
Decrementa CX e se questo non nullo IPIP+disp (Loop until count complete) Decrementa CX e se questo non nullo LOOPZ/LOOPE disp e ZF=1, IPIP+disp (Loop if Zero/Equal) LOOPNZ/LOOPNE disp Decrementa CX e se questo non nullo e ZF=0, IPIP+disp (Loop if Not Zero/Not Equal)

a.a. 2003-04

G. Castellano

58

29

Istruzioni di iterazione (8086)


Allatto dellesecuzione dellistruzione LOOP, il processore esegue le seguenti operazioni:

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

Istruzioni di gestione di procedure


Istruzione di chiamata a procedura
CALL target Salva nello stack il valore del registro IP (return address) ed eventualmente il valore di CS Pone in IP lindirizzo specificato da target, che rappresenta lindirizzo della prima istruzione della procedura (entry-point address) Salta allindirizzo specificato da IP Recupera dallo stack il valore del return address e lo pone in IP Salta allindirizzo specificato da IP
a.a. 2003-04 G. Castellano 61

Istruzione di ritorno da procedura (RET)

Istruzioni CALL e RET

a.a. 2003-04

G. Castellano

62

31

Passaggio di parametri nelle procedure


La procedura chiamante pu passare alla procedura chiamata dei valori detti parametri La procedura chiamata fornisce dei parametri (risultati) alla procedura chiamante Il passaggio dei parametri nelle procedure avviene attraverso lo stack
a.a. 2003-04 G. Castellano 63

Passaggio di parametri nelle procedure


I possibili metodi con cui i parametri vengono trasferiti sono:
by value: la procedura chiamante passa a quella chiamata una copia del valore del parametro
Ogni possibile modifica del parametro effettuata dalla procedura chiamata modifica esclusivamente tale copia La procedura chiamante non vede le modifiche effettuate sul parametro dalla procedura chiamata

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

2114h:8987h 8774h:2147h 5874h:2141h 1487h:8745h 0110h:4632h


MOV AX,0
67

Istruzioni di gestione degli interrupt (8086)


Istruzione per lattivazione della routine di servizio (ISR) relativa ad un certo interrupt INT int_number dove int_number un numero tra 0 e 255
Significato
Salva nello stack il contenuto dei registri IP, CS e FLAGS Inibisce la possibilit di ulteriori interruzioni
azzera i flag TF (Trap Flag) e IF (Interrupt Enable/Disable)

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

Istruzioni di gestione degli interrupt


Listruzione IRET (senza operandi) listruzione conclusiva di una ISR Causa il ritorno del sistema nello stato precedente allultima INT consentendo di riprendere lesecuzione dalla istruzione successiva alla INT Significato
termina la ISR relativa allinterrupt riabilita la possibilit di ulteriori interruzioni ripristina i valori di IP, CS e FLAGS, prelevandoli dallo stack a.a. 2003-04 G. Castellano 69

Differenze tra CALL e INT


Listruzione di chiamata di una ISR (INT) simile a quella di chiamata a procedura (CALL), con delle differenze:
mentre lesecuzione di una procedura pu essere avviata solo via software, quella di una ISR pu essere avviata anche via hardware mentre una procedura pu essere NEAR o FAR, una ISR sempre FAR, quindi la sua attivazione comporta sempre il caricamento di un valore in CS Listruzione INT causa il salvataggio nello stack, oltre che dei registri CS e IP, anche del registro FLAGS
a.a. 2003-04 G. Castellano 70

35

Gli interrupt utili (8086)


Sono interrupt collegati a gestori che forniscono servizi di base del sistema operativo
Ogni interrupt serve a richiedere un insieme di servizi Il servizio specifico viene individuato dal valore del registro AH Interfacciamento con il sistema operativo Gestione dei dispositivi esterni Gestione dei file
a.a. 2003-04 G. Castellano 71

I servizi forniti riguardano:

INT 21h: Interfacciamento con il sistema operativo (8086)


AH 01 02 09 0A 4C
a.a. 2003-04

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

Anda mungkin juga menyukai