Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Confronti 1

Precedente
SUPERIORE
Successiva

Dati due interi a e b decidere se a > b

Analisi con esempi: ...

  1. (5 > 2)? --> vero
  2. (5 > 5)? --> falso
  3. (5 > 10)? --> falso

Algoritmo (da descrivere a parole e con un diagramma di flusso): ...

  1. (A > B)? <--> (A-B > 0)?
  2. vero --> 1 e falso --> 0.

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       '

Confronti 1 - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva