SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
PASSAGGIO DI PARAMETRI -Animazione del passaggio di parametri nello stack- *V1. 0*
Cenni teorici ,[object Object],[object Object]
Programma  Ora, per realizzare l’animazione del passaggio di parametri nello stack, consideriamo una porzione di programma: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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

Más contenido relacionado

Destacado

Otepää
OtepääOtepää
Otepää4wplus
 
Eastgate Asset Promotion
Eastgate Asset PromotionEastgate Asset Promotion
Eastgate Asset Promotionbshucart
 
Final Powerpoint
Final PowerpointFinal Powerpoint
Final Powerpointlgcollins
 
Presentazione The Stones
Presentazione The StonesPresentazione The Stones
Presentazione The StonesMassimiliano
 
Discovery Home S B Chapter 7
Discovery  Home  S B  Chapter  7Discovery  Home  S B  Chapter  7
Discovery Home S B Chapter 7tinwerf
 

Destacado (6)

Otepää
OtepääOtepää
Otepää
 
Chiropractors
ChiropractorsChiropractors
Chiropractors
 
Eastgate Asset Promotion
Eastgate Asset PromotionEastgate Asset Promotion
Eastgate Asset Promotion
 
Final Powerpoint
Final PowerpointFinal Powerpoint
Final Powerpoint
 
Presentazione The Stones
Presentazione The StonesPresentazione The Stones
Presentazione The Stones
 
Discovery Home S B Chapter 7
Discovery  Home  S B  Chapter  7Discovery  Home  S B  Chapter  7
Discovery Home S B Chapter 7
 

passaggio di parametri nello stack V1.0

  • 1. PASSAGGIO DI PARAMETRI -Animazione del passaggio di parametri nello stack- *V1. 0*
  • 2.
  • 3.
  • 4. 1° All’ inizio lo stack, da noi preso in considerazione, è vuoto, poiché non sono state effettuate operazioni in esso.
  • 5. SP
  • 6. 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 . .
  • 8. 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 . .
  • 9. SP NUM1 NUM2 IP/SOMMA
  • 10. 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.
  • 11. SP NUM1 NUM2 IP/SOMMA BP SP
  • 12. 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.
  • 13. NUM1 NUM2 IP/SOMMA BP SP BP+2 BP BP+4 BP+6
  • 14. 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 . .
  • 15. SP NUM1 NUM2 IP/SOMMA BP SP