PDA

View Full Version : [assembly] Chiamate a sottoprogrammi e annidamento


MATTEOPASADENA
08-05-2012, 10:47
ciao a tutti! sono nuovo qui nel forum e vorrei chiedervi una cosa. Sto preparando un esame universitario, per la precisione quello di fondamenti di programmazione B. Ebbene sono giunto ad un piccolo problema studiando.
mi sento esattamente così -> :mc:
il nostro docente gentilmente ci ha fornito tutte le prove vecchie e la cosa che mi manda in panico è questa domanda che ho messo nel campo spoiler.

I sottoprogrammi. Descrivere in dettaglio il meccanismo che rende possibili le chiamate a sottoprogrammi e l’annidamento dei sottoprogrammi stessi facendo riferimento a un frammento di codice assembler


Qualcuno di voi gentilmente potrebbe darmi qualche spiegazione? :(

a presto!!

FedNat
08-05-2012, 11:30
ciao a tutti! sono nuovo qui nel forum e vorrei chiedervi una cosa. Sto preparando un esame universitario, per la precisione quello di fondamenti di programmazione B. Ebbene sono giunto ad un piccolo problema studiando.
mi sento esattamente così -> :mc:
il nostro docente gentilmente ci ha fornito tutte le prove vecchie e la cosa che mi manda in panico è questa domanda che ho messo nel campo spoiler.

I sottoprogrammi. Descrivere in dettaglio il meccanismo che rende possibili le chiamate a sottoprogrammi e l’annidamento dei sottoprogrammi stessi facendo riferimento a un frammento di codice assembler

Qualcuno di voi gentilmente potrebbe darmi qualche spiegazione? :(

a presto!!

Il meccanismo che rende possibili le chiamate ai sottoprogrammi è il salvataggio/ripristino dello stato nello stack.

Ogni sottoprogramma, prima di fare qualunque altra cosa, dovrebbe salvare lo stato della macchina nello stack insieme all'indirizzo di ritorno. Al termine del sottoprogramma quest'ultimo dovrebbe ripristinare le informazioni salvate e saltare indietro.

Il codice assembler dipende dall'architettura, ma dovrebbe essere qualcosa del tipo:


PUSH
...
PUSH

Sottoprogramma

POP
...
POP
JUMP

MATTEOPASADENA
08-05-2012, 18:07
grazie della tua eccellente spiegazione a riguardo. Ora molte cose mi sono più chiare e spero che domani l'esame vada bene ora che ho colmato questa mia lacuna. Una piccola curiosità.. se io ti scrivessi un MOV A, =\= 22 (il =\= sta ad indicare un segno uguale sbarrato) tu cosa sapresti dirmi?
ho intravisto questo codice in un listato di esempio ma ahime non ho trovato nemmeno una didascalia. :)
ciao ciao!

lorenzo001
08-05-2012, 19:36
Intendi

MOV A,#22

?

Dove l'hai visto? Forse era MOV AL,#$22 o qualcosa di simile ...