La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Procedure In assembler.

Presentazioni simili


Presentazione sul tema: "Procedure In assembler."— Transcript della presentazione:

1 Procedure In assembler

2 Le fasi In assembler abbiamo due fasi: Dichiarazione e Definizione
Viene definito il nome (indirizzo) della procedura Vengono presentate le istruzioni che fanno parte di questa Esecuzione Viene “chiamata” la procedura Possono esistere più chiamate della stessa procedura

3 Dichiarazione e Definizione
Sintassi <nome_procedura> PROC <istruzioni> RET <nome_procedura> ENDP Esempio VaiACapo PROC MOV AH, 2 MOV DL, 13 INT 21h MOV DL, 10 VaiACapo ENDP

4 Commento alla dichiarazione
Il nome della procedura rappresenta l’indirizzo di partenza del codice L’istruzione RET termina l’esecuzione della procedura e ritorna il controllo al programma chiamante La procedura va inserita dopo la fine del programma o all’inizio, ma in tal caso deve essere “saltata” Il nome della procedura deve essere significativo E’ opportuno inserire un commento sul comportamento della procedura Eventuali LABEL interne alla procedura non devono interferire con label del resto del programma Suggerimento: usare un prefisso per le label che “ricordi” il nome della procedura

5 Chiamata della procedura
Sintassi CALL <nome_procedura> Esempio CALL VaiACapo CALL trasferisci il controllo alla procedura In un programma possono essere presenti più istruzioni di CALL alla stessa procedura e anche CALL a procedure diverse Una procedura può essere chiamata all’interno di un’altra procedura

6 Lo stack Lo stack è una zona di memoria utilizzata per memorizzare valori temporanei. Lo stack segue la logica LIFO (Last In First Out) cioè l’ultimo elemento inserito è il primo a essere tolto dallo stack. Per esempio una pila di monete può dare l’idea del funzionamento dello stack: la prima moneta che viene prelevata è quella posta in “testa” alla pila cioè l’ultima che era stata inserita

7 Procedure e stack L’istruzione CALL inserisce nello stack l’indirizzo della prossima istruzione da eseguire nel programma chiamante (IP) L’istruzione RET “recupera” dallo stack l’indirizzo dell’istruzione da eseguire nel programma chiamante

8 Salvataggio temporaneo dei registri
Una procedura può avere come effetto collaterale quello di modificare i valori di alcuni registri. Per evitare problemi è possibile inserire sullo stack i valori di questi registri all’inizio della procedura per poi recuperarlo alla fine di questa. Per inserire un valore sullo stack si utilizza l’istruzione PUSH Per recuperare e togliere un valore dallo stack si utilizza l’istruzione POP Attenzione alla logica LIFO !

9 Un esempio VaiACapo PROC push ax push dx mov ah,2 mov dl, 13 int 21h
pop dx pop ax ret ENDP


Scaricare ppt "Procedure In assembler."

Presentazioni simili


Annunci Google