PDA

View Full Version : Assembler


mrborel
09-03-2009, 09:03
Devo fare un'esercizio di assembler per un'esame...Mi servirebbe una mano!!Questo è quello che devo fare:

Uno dei problemi classici dell'informatica è la risoluzione di semplici espressioni come, ad esempio:
((10-5)+((8-2)-(3+4))).
Infatti, la presenza di parentesi complica la risoluzione costringendo al calcolo e alla relativa memorizzazione di risultati parziali.
La risoluzione di espressioni di questo tipo risulta più semplice se le si scrive in notazione polacca inversa che non richiede l'utilizzo di parentesi. Nel caso visto in precedenza:
10 5 - 8 2 - 3 4 + - + .

Esercizio:
scrivere un programma assembly che prende in ingresso espressioni e le traduca in notazione polacca inversa.
Si ipotizzi che le espressioni non contengano numeri negativi e che le sole operazioni siano la somma (+) e la sottrazione (-).
Successivamente implementare anche il calcolo del risultato ipotizzando che i numeri e i risultato (anche parziali) abbiano al più 2 cifre.

Suggerimento:
La trasformazione di un espressione in notazione polacca inversa si può facilmente implementare mediante l'utilizzo dello stack. Occorre scandire l'espressione da sinistra a destra e stampare (o memorizzare) i numeri che si incontrano. Quando si incontra una operazione questa va posta sullo stack. Viceversa, nel caso si arrivi ad una parentesi chiusa occorre prelevare l'operazione che si trova nello stack e stamparla.
Analogamente, anche il calcolo del risultato a partire dalla notazione polacca inversa si può implementare sfruttando lo stack. Anche in questo caso occorre scandire l'espressione da sinistra a destra e porre eventuali numeri che si incontrano sullo stack. Quando si arriva ad una operazione occorre prelevare i due numeri in cima allo stack, effetture il calcolo e riporre il risultato sullo stack.
Al termine il risultato si troverà in cima allo stack.

Esempio:

introdurre un espressione: ((10-5)+((8-2)-(3+4)))
notazione inversa: 10 5 - 8 2 - 3 4 + - +
risultato: 4
Spero riusciate ad aiutarmi!!!
Grazie

cionci
09-03-2009, 15:37
Come possiamo aiutarti se non hai specificato la CPU e il tipo di assemblatore ?
http://www.hwupgrade.it/forum/showthread.php?t=1649196