6. 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 . .
8. 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 . .
10. 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.
12. 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.
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 . .