Corso di Laurea in
Ingegneria Elettronica e Informatica
• Registri di 16 bit
• General-purpose registers:
– ax (accumulator), bx (base), cx (count), dx (data)
– si (source index), di (destination index), bp (base
pointer), sp (stack pointer)
• Segment registers
– cs (code segment), ds (data segment), es (extra
segment), ss (stack segment)
• Special-purpose registers
– ip (instruction pointer)
– flags
Registri general-purpose dell’Intel 8086
AX SI
AH AL
15 7 0 15 0
BX DI
BH BL
CX BP
CH CL
DX SP
DH DL
P.es. (BP)+(SI)
BASE INDICE
8089h
AL 8088h AX 8088h
(BX)
EA = (DI) Es. add ax, [bx]
(SI)
Modi di indirizzamento ai dati nell’8086 [2]
5. Register relative: l’indirizzo (EA) del dato è dato dalla somma di uno
scostamento (a 8 o 16 bit) con il contenuto di un registro base (BX o BP) o
di un registro indice (DI o SI)
(BX)
(BP) Es. add ax, 1000[bx]
EA = + scostamento
(DI)
(SI)
6. Based indexed: l’indirizzo (EA) del dato è dato dalla somma del contenuto
di un registro base (BX o BP) con il contenuto di un registro indice (DI o
SI)
(BX) (SI)
EA = +
(BP) (DI)
7. Relative Based Indexed: l’indirizzo (EA) del dato è dato dalla somma di
uno scostamento (a 8 o 16 bit) con il contenuto di un registro base (BX o
BP) e di un registro indice (DI o SI)
1. Intrasegment CS
Varia solo IP
2. Intersegment CS
Variano CS e IP
Registri IP e CS
• Come specifico IP [e CS]?
Registro
IP
[Register, solo nell’intrasegment]
Memoria
IP
( CS )
[Diretto, Reg. Ind., Reg. Rel., Based Index. Rel. Based Index.]
Modi di indirizzamento in caso di salto
NB: i salti condizionati possono usare solo Intrasegment con scostamento a 8 bit
Classi di istruzioni
Reg - registro
Op code operando implicito MOD - modo
S:W
0 0 operazione a 8 bit
0 1 operazione a 16 bit con op. immediato a 16 bit
1 1 operazione a 16 bit con operando a 8 bit – segno esteso
Campi MOD e R/M
MOD Significato
00 Indirizzamento alla memoria senza displacement,
tranne nel caso in cui R/M vale 110 con il quale si
intende un indirizzamento diretto
01 Indirizzamento alla memoria con displacement da 8
bit (1 byte che segue il mod/reg/rm byte)
10 Indirizzamento alla memoria con displacement da 16
bit (2 byte che seguono il mod/reg/rm byte)
11 Il campo R/M denota un registro con la stessa codifica
vista per il campo Reg
NB: per default DS è reg. segm., a meno che non si usi BP come base [SS è reg. segm.]
Segment override prefix
Operandi di 16 bit
Indicano il modo di
indirizzamento
[BX]+[DI]+D16
Istruzioni aritmetiche, logiche e
trasferimento dati
• Operano su 1 o al massimo 2 operandi
• Le combinazioni di operandi nelle istruzioni aritmetiche, logiche e
trasferimento dati nell’80x86 sono le seguenti
• Paragrafi
o I paragrafi sono zone di memoria costituite da 16 byte contigui.
o Il sistema può gestire fino a 64k paragrafi.
o I paragrafi sono numerati a partire dalla locazione 00000h di memoria.
o I paragrafi non possono sovrapporsi.
• Segmenti
o I segmenti sono zone di memoria costituite da 64k byte contigui.
o Il sistema può gestire fino a 64k segmenti.
o Ogni segmento inizia in corrispondenza con un paragrafo, ossia ad un indirizzo multiplo di 16.
o I segmenti possono sovrapporsi (Overlapping Segments).
Indirizzo fisico
L’indirizzo fisico di una cella di memoria è espresso da 20 bit; non è quindi possibile un
indirizzamento mediante un solo registro a 16 bit. Esso è infatti ottenuto mediante la somma di due
contributi:
il Segment Address:
è l’indirizzo di testa del segmento e viene ottenuto moltiplicando per 16 il numero del segmento.
l’Effective Address (EA):
è l’indirizzo effettivo all’interno del segmento, calcolato come offset (spostamento) rispetto
all’inizio del segmento stesso.
Memoria ...
0 16 32 48 64 80 96 1M-32 1M-16 1M
Paragrafi
0 1 2 3 4 5 64k-2 64k-1
0
1
Segmenti
2
Segment registers - osservazioni
Sono 4 registri destinati a contenere l’indirizzo di testa dei segmenti usati dal programma.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
Carry Flag
Parity Flag
Auxiliary Flag
Zero Flag
Sign Flag
Trap Flag
Interrupt Flag
Direction Flag
Overflow Flag
In determinate situazioni sono testati dal processore che, a secon- da del loro valore, si comporta
in modi diversi.