max / min d'un nombre inconnu d'entrées dans LMC?

Nov 23 2020

Comment puis-je imprimer le maximum / minimum d'un nombre inconnu d'entrées dans LMC?

Je sais que je peux SUB INPUT 1 FROM INPUT 2 et voir si c'est négatif ou positif mais je ne sais pas comment nommer les entrées pour pouvoir les charger.

PS: J'ai trouvé ce lien utile pour m'aider avec la partie «nombre inconnu d'entrées» Comment puis-je stocker un nombre inconnu d'entrées à différentes adresses dans LMC (petit-homme-ordinateur)?

Réponses

2 trincot Nov 23 2020 at 22:23

Vous créez un lien vers du code qui stocke un nombre indéterminé de valeurs d'entrée. Mais dans votre cas, ce n'est pas nécessaire: vous pouvez garder une trace du minimum et du maximum tout en lisant les valeurs d'entrée. Il n'est pas nécessaire de stocker réellement chaque valeur d'entrée:

#input: 5 3 9 6 2 4
          INP ; data size
          STA count
          BRZ exit ; nothing to do
; initialise
          LDA zero
          STA max
          LDA big
          STA min
loop      LDA count
          SUB one
          BRP nextvalue
output    LDA min
          OUT
          LDA max
          OUT
exit      HLT

nextvalue STA count
          INP ; get data value
          STA value
          SUB min
          BRP checkmax
          LDA value
          STA min
checkmax  LDA max
          SUB value
          BRP loop
          LDA value
          STA max
          BRA loop

zero      DAT 0
one       DAT 1
big       DAT 999
count     DAT
min       DAT
max       DAT
value     DAT

<script src="https://cdn.jsdelivr.net/gh/trincot/[email protected]/lmc.js"></script>