max / min einer unbekannten Anzahl von Eingängen in LMC?
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
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>