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++