passaggio di parametri nello stack V1.0
Upcoming SlideShare
Loading in...5
×
 

passaggio di parametri nello stack V1.0

on

  • 1,231 views

 

Statistics

Views

Total Views
1,231
Views on SlideShare
1,228
Embed Views
3

Actions

Likes
0
Downloads
2
Comments
0

1 Embed 3

http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

passaggio di parametri nello stack V1.0 passaggio di parametri nello stack V1.0 Presentation Transcript

  • PASSAGGIO DI PARAMETRI -Animazione del passaggio di parametri nello stack- *V1. 0*
  • Cenni teorici
    • Lo stack, chiamato anche pila, è una struttura di dati dinamica gestita attraverso la modalità LIFO (Last-In First-Out).
    • Gli elementi, che andranno a comporre questa pila, vengono aggiunti dall’alto e vengono posizionati uno sopra l’altro; il prelevamento di un oggetto avviene prendendo per primo quello che si trova in cima, cioè quello che è stato inserito per ultimo.
  • Programma Ora, per realizzare l’animazione del passaggio di parametri nello stack, consideriamo una porzione di programma:
    • PROGRAMMA PRINCIPALE
    • .
    • .
    • NUM1 DW ?
    • NUM2 DW ?
    • .
    • .
    • PUSH NUM1
    • PUSH NUM2
    • CALL SOMMA
    • .
    • .
    • .
    • SOTTOPROGRAMMA “SOMMA”
    • .
    • .
    • SOMMA PROC NEAR
    • PUSH BP
    • MOV BP, SP
    • MOV AX, [BP+4]
    • ADD AX, [BP+6]
    • .
    • .
    • POP BP
    • RET 4
    • SOMMA ENDP
    • .
    • .
    • .
  • 1° All’ inizio lo stack, da noi preso in considerazione, è vuoto, poiché non sono state effettuate operazioni in esso.
  • SP
  • 2° Dopo aver dichiarato due variabili di nome NUM1 e NUM 2, ad un certo punto del nostro programma, attraverso l’ operazione PUSH, inseriamo gli elementi in cima alla pila . . . . PUSH NUM1 PUSH NUM2 . .
  • SP NUM1 NUM2
  • 3° Ora, attraverso l’ istruzione CALL, si chiama il sottoprogramma SOMMA. La CALL ha due compiti fondamentali: - mettere l’ IP sullo stack - saltare all’ indirizzo della prima istruzione del sottoprogramma . . . CALL SOMMA . .
  • SP NUM1 NUM2 IP/SOMMA
  • 4° Dopo la chiamata al sottoprogramma, vengono eseguite le istruzioni in esso. Le prime, sono: . . PUSH BP MOV BP, SP . . Attraverso queste, viene inserito nello stack il registro base BP e, successivamente, viene spostato il contenuto del registro SP in esso.
  • SP NUM1 NUM2 IP/SOMMA BP SP
  • 5° Ora, si utilizzano due istruzioni per prendere i parametri che si vogliono utilizzare (in questo caso NUM1 e NUM2) in ordine inverso da come ce li abbiamo messi. . . MOV AX, [BP+4] ADD AX, [BP+6] . . . La prima istruzione mette NUM2 nel registro AX; la seconda, invece, somma NUM1 ad AX. A questo punto, nel registro, si troverà la somma dei due numeri.
  • NUM1 NUM2 IP/SOMMA BP SP BP+2 BP BP+4 BP+6
  • 6° Dopo aver sommato i due numeri, ci resta soltanto da “ripulire” lo stack attraverso le operazioni POP e RET. Con la POP, si preleva un elemento della nostra pila eliminandolo dalla cima. Con la RET, invece, si ripulisce lo stack di ‘n’ byte (in questo caso 4 byte); inoltre, prende l’ indirizzo che ha messo la CALL in precedenza, e ritorna al programma principale. . . POP BP RET 4 . .
  • SP NUM1 NUM2 IP/SOMMA BP SP