max / min einer unbekannten Anzahl von Eingängen in LMC?

Nov 23 2020

Wie kann ich das Maximum / Minimum einer unbekannten Anzahl von Eingaben in LMC drucken?

Ich weiß, dass ich INPUT 1 VON INPUT 2 SUBEN und sehen kann, ob es negativ oder positiv ist, aber ich weiß nicht, wie ich die Eingänge benennen soll, damit ich sie laden kann.

PS: Ich habe diesen nützlichen Link gefunden, um mir beim Teil "Unbekannte Anzahl von Eingaben" zu helfen. Wie kann ich eine unbekannte Anzahl von Eingaben an verschiedenen Adressen in LMC (Little-Man-Computer) speichern?

Antworten

2 trincot Nov 23 2020 at 22:23

Sie verknüpfen einen Code, der eine unbestimmte Anzahl von Eingabewerten speichert. In Ihrem Fall ist dies jedoch nicht erforderlich: Sie können das Minimum und Maximum verfolgen, während Sie die Eingabewerte lesen. Es ist nicht erforderlich, jeden Eingabewert tatsächlich zu speichern :

#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>