CALCOLATORI ELETTRONICI II ARCHITETTURA DEL PROCESSORE 886 PARTE (II) Argomenti della lezione Architettura del processore 886 parte (II) Stack Stack I/O Lo stack Lo stack L'886 prevede alcune strutture e meccanismi hardware per la gestione di una struttura LIFO denominata stack Lo stack corrisponde al segmento di memoria puntato da SS Il top dello stack (locazione riempita per ultima) è puntato da SP Lo stack cresce dalle locazioni di memoria con indirizzo maggiore verso quelle ad indirizzo minore 1
Fondo dello stack Cima dello stack Fine dello stack 168 FF FF 166 A 16 1 B 162 9 16 1E 1C 1A 18 1 12 1 SS SP 1 1 Esempio Uso dello stack Oltre che dalle istruzioni PUSH e POP, lo stack viene automaticamente utilizzato dal processore per la gestione delle procedure I/O I/O L'accesso alle periferiche avviene spesso attraverso speciali locazioni (denominate porte) associate ad un certo indirizzo I/O I/O L'accesso a tali locazioni può avvenire sia in modo memory mapped sia in isolated I/O Nel primo caso l'accesso alla periferica avviene attraverso una normale istruzione, nel secondo attraverso speciali istruzioni di I/O 2
I/O Lo spazio di indirizzamento dell'i/o è al più pari a 6K INTRODUZIONE AL LINGUAGGIO ASSEMBLER 886 Bibliografia Bibliografia P. Prinetto, M. Rebaudengo, M. Sonza Reorda Il linguaggio di programmazione Assembler 886 Ed. Levrotto&Bella, Torino, II Edizione, 1996 K.R. Irvine Assembly language for Intel-based computers Prentice Hall, IV edition, 2 Argomenti della lezione Flusso di programmazione Esempi di programmi assembler Flusso di programmazione
Flusso di programmazione Scrittura codice sorgente Assemblaggio Link Caricamento Esecuzione Scrittura programma sorgente Editor sorgente Assemblaggio Link sorgente oggetto oggetto Assemblatore Linker oggetto eseguibile Caricamento Esecuzione eseguibile Loader Mem µp Mem µp
Esempio 1 Esempi di programmi assembler.model small VAR DW? MOV VAR, Esempio 1 Esempio 1.MODEL small VAR DW? MOV VAR, Comandi per l assemblatore.model small VAR DW? MOV VAR, Definizione del segmento stack Esempio 1 Esempio 1.MODEL small VAR DW? MOV VAR, Definizione del segmento dati.model small VAR DW? MOV VAR, Definizione del segmento codice
.MODEL small VAR DW? MOV VAR, Esempio 1 Istruzione Situazione iniziale SS VAR CS MOV VAR, SS VAR CS Esempio 2.MODEL SMALL OPD1 DW 1 OPD2 DW 2 DW? Esempio 2 MOV, OPD1, OPD2 MOV, OPD1 OPD2 Situazione iniziale 1 2 6
MOV, OPD1, OPD2 1 OPD1 OPD2 1 2 OPD1 OPD2 1 2 MOV, Esempio OPD1 OPD2 1 2.MODEL SMALL Segmento dati Segmento codice Segmento dati Segmento codice DW,,,, DW? MOV,,, +2
Segmento codice Situazione iniziale, +, +6, +8 MOV, MOV,,, +2, + 12 1 8
, +6, +8 19 22 MOV, Esempio 22 22.MODEL SMALL Segmento dati Segmento codice Segmento dati Segmento codice DW,,,, DW? MOV, MOV, MOV, 9
Segmento codice Situazione iniziale lab:, [], 2 DEC CMP, JNZ lab MOV, MOV, MOV, MOV,, [] 1
, 2 DEC 2 2 CMP, JNZ lab 2 2, [], 2 12 2 11
DEC CMP, JNZ lab CMP, 22 1 1 iterazioni dopo JNZ lab MOV, 1 22 1 22 1 22 1 12
CALCOLATORI ELETTRONICI II 1