|
Dati due interi a e b decidere se a > b Analisi con esempi: ...
Algoritmo (da descrivere a parole e con un diagramma di flusso): ...
Programma: PROG RUN ' INP A ' INP B ' LDA A ' ACC <-- (a-b) SUB B ' JGT VERO ' SE(ACC > 0): PC <-- VERO LDA #0 ' RISP <-- 0 STA RISP ' JMP FINE ' PC <-- FINE VERO LDA #1 ' RISP <-- 1 STA RISP ' FINE OUT RISP ' ALT ' A DAT 0 ' B DAT 0 ' RISP DAT 0 ' END ' Per passare più agevolmente dal diagramma di flusso al codice assembly è consigliabile trasformare il diagramma in una versione più vicina al codice nella quale le istruzioni sono allineate in verticale. In questo modo c'è una corrispondenza notevole tra le due rappresentazioni! Utilizzando il valore iniziale di RISP si può ridurre la dimensione del programma Programma: PROG RUN ' INP A ' INP B ' LDA A ' SUB B ' JGT FINE ' SE(ACC > 0): PC <-- FINE LDA #0 ' STA RISP ' FINE OUT RISP ' ALT ' A DAT 0 ' B DAT 0 ' RISP DAT 1 ' vero, per ipotesi END ' oppure PROG RUN ' INP A ' INP B ' LDA A ' SUB B ' JLE FINE ' SE(ACC <= 0): PC <-- FINE LDA #1 ' STA RISP ' FINE OUT RISP ' ALT ' A DAT 0 ' B DAT 0 ' RISP DAT 0 ' falso, per ipotesi END ' |
|