Architettura semplificata
xxxx
xx
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0100
INPUT
IP
x
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
xx
DB
CPU: registro Instruction Pointer IP, registro generale AL (8 bit),
registro indice SI (16 bit), registri interni IR e T, ALU
Architettura semplificata
xxxx
xx
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0100
INPUT
IP
x
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
xx
DB
RAM: capacità di 3072 celle di memoria da 1 byte ciascuna,
da 0400 a 0FFF
Architettura semplificata
xxxx
xx
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0100
INPUT
IP
x
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
xx
DB
ROM: capacità di 768 celle di memoria da 1 byte,
da 0100 a 03FF
Architettura semplificata
xxxx
xx
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0100
INPUT
IP
x
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
xx
DB
I/O: 128 indirizzi di input, da 00 a 7F, e 128 indirizzi
di output, da 80 a FF
Architettura semplificata
xxxx
xx
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0100
INPUT
IP
x
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
xx
DB
0. Situazione iniziale: il Sistema Operativo in precedenza ha
scritto in IP l’indirizzo di inizio del programma (0100)
residente in ROM
Architettura semplificata
analizziamo il seguente esempio di programma:
0100 BE 00 01
MOV SI,0100
0103 B0 00
MOV AL,00
0105 88 84 00 05 MOV [SI+0500],AL
0109 4E
DEC SI
010A 75 F9
JNZ 0105
010C CD 20
INT 20
Architettura semplificata
0100
AL xx
T
xxxx
SI
xxxx
ALU
CPU
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
xx
I/O
00 - 7F
IR xx
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0100
INPUT
IP
1
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
DB
1. Fetch (1): la CPU emette nell’Address Bus il contenuto del
registro IP e pone la linea R/W a 1, per leggere la prossima
istruzione da eseguire
Architettura semplificata
0100
xx
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0100
INPUT
IP
1
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
BE
DB
2. Read memory: la memoria RAM, attivata dall’indirizzo presente
nell’Address Bus, seleziona la sua cella di indirizzo 0100 e dato il
valore della linea R/W, pone il contenuto della cella nel Data Bus
Architettura semplificata
BE
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
80 - FF
0101
1
INPUT
IP
R/W
AB
OUTPUT
+1
xxxx
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
ALU
CPU
BE
DB
3. Fetch (2): la CPU legge il valore presente nel Data Bus e lo pone
nel registro istruzione IR, e si prepara per la prossima parola di
istruzione incrementando l’Instruction Pointer IP
xx
xx
xx
xx
xx
xx
xx
xx
Architettura semplificata
Decodifica: il codice operativo dell’istruzione
appena caricata (BE) informa la CPU che
deve scrivere nel registro SI il valore
specificato dall’istruzione con indirizzamento
immediato (il dato a 16 bit è posto nelle due
celle di memoria immediatamente successive
al codice operativo). L’istruzione è lunga 3
byte, compreso il codice operativo iniziale.
Architettura semplificata
0101
BE
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0101
INPUT
IP
1
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
xx
DB
4. Execute (1): la CPU emette il contenuto del registro IP
nell’Address Bus e pone la linea R/W a 1, per leggere il primo byte
del dato da scrivere in SI
Architettura semplificata
0101
BE
AL xx
T
xxxx
SI
xxxx
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0101
INPUT
IP
1
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
00
DB
5. Read memory: la memoria RAM, attivata dall’indirizzo presente
nell’Address Bus, seleziona la sua cella di indirizzo 0101 e dato il
valore della linea R/W, pone il contenuto della cella nel Data Bus
Architettura semplificata
BE
AL xx
T
xxxx
SI
xx00
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0102
1
INPUT
IP
R/W
AB
OUTPUT
+1
xxxx
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
00
DB
6. Execute (2): la CPU legge il valore presente nel Data Bus e lo
pone nella parte bassa del registro SI, e si prepara per la lettura
della prossima istruzione incrementando l’Instruction Pointer IP
Architettura semplificata
0102
BE
AL xx
T
xxxx
SI
xx00
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0102
INPUT
IP
1
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
xx
DB
7. Execute (3): la CPU emette il contenuto del registro IP
nell’Address Bus e pone la linea R/W a 1, per leggere il secondo
byte del dato da caricare
Architettura semplificata
0102
BE
AL xx
T
xxxx
SI
xx00
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0102
INPUT
IP
1
OUTPUT
R/W
AB
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
01
DB
8. Read memory: la memoria RAM, attivata dall’indirizzo presente
nell’Address Bus, seleziona la sua cella di indirizzo 0102 e dato il
valore della linea R/W, pone il contenuto della cella nel Data Bus
Architettura semplificata
BE
AL xx
T
xxxx
SI
0100
0400
0401
0402
0403
::::
04FF
RAM
xx
xx
xx
xx
::
xx
0100 - 03FF
0100 BE
0101 00
0102 01
0103 B0
:::: ::
03FF xx
ROM
I/O
00 - 7F
IR
0400 - 0FFF
[00]
[01]
[02]
[03]
tastiera
mouse
floppy
hard disk
xx
xx
xx
xx
80 - FF
0103
1
INPUT
IP
R/W
AB
OUTPUT
+1
xxxx
[80]
[81]
[82]
[83]
video
stampante
floppy
hard disk
xx
xx
xx
xx
ALU
CPU
01
DB
9. Execute (4): la CPU legge il valore presente nel Data Bus e lo
pone nella parte alta del registro SI, e si prepara per la lettura della
prossima istruzione incrementando l’Instruction Pointer IP
Architettura semplificata
L’istruzione MOV SI,0100 è stata completata, effettuando:

Fetch (1): emetti IP in AB
– Read memory

Fetch (2): scrivi in IR il valore del DB, IP++, decodifica

Execute (1): emetti IP in AB
– Read memory

Execute (2): scrivi in SI (low) il valore del DB, IP++

Execute (3): emetti IP in AB
– Read memory

Execute (4): scrivi in SI (high) il valore del DB, IP++
Scarica

Architettura semplificata