;            File: e16-multiplo7.ed.txt
;
;          Autore: Roberto FULIGNI
;
; Ultima modifica: 19/10/2024
;
;     Descrizione: Scrivere un programma per il simulatore che verifichi se un
;                  numero n inizialmente contenuto nella locazione di memoria 100
;                  è un multiplo di 7; in caso affermativo dovrà inserire il 
;                  valore 1 nella locazione di memoria di indirizzo 101, in caso
;                  negativo dovrà inserirvi il valore 0.
;
;    MEMORIA RAM (DATA)
;    Variabile    Indirizzo    Valore  
;    --------------------------------
;      n             100:        14
;      ris           101:         ?    (soluzione: 1)
;

; Per verificare se n contenga un multiplo di 7, occorre innanzitutto
; determinare il resto della divisione tra n e 7.

LOD R0 100        ; Carica il valore d n
SET R1 #7
DIV               ; Elabora il quoziente q
MOV R0            ; Sposta il quoziente in R0
MUL               ; Calcola q * 7
LOD R0 100        ; Carica nuovamente n in R0
MOV R1            ; Sposta il risultato precedente (q*7) in R1  
SUB               ; Determina il resto come differenza tra n e (q*7) e lo memorizza in A

JMZ multiplo7     ; Salta in avanti se A è uguale zero (cioè se n è multiplo di 7)

SET A #0          ; A questo punto n non è multiplo di 7, il risultato finale deve essere 0 
JMP memorizza     ; Salta alla parte finale del programma

multiplo7:
SET A #1          ; n è multiplo di 7, il risultato finale deve essere 1

memorizza:
STO 101           ; Memorizza il risultato finale dell'elaborazione (contenuto in A) nella
                  ; cella di indirizzo 101 (ris)
HLT
