max / min nieznanej liczby wejść w LMC?
Nov 23 2020
Jak mogę wydrukować maksimum / minimum z nieznanej liczby wejść w LMC?
Wiem, że mogę SUB INPUT 1 FROM INPUT 2 i sprawdzić, czy jest ujemny czy dodatni, ale nie wiem, jak nazwać wejścia, aby móc je załadować.
PS: Znalazłem ten przydatny link, który pomaga mi w części „nieznana liczba wejść”. Jak mogę przechowywać nieznaną liczbę wejść pod różnymi adresami w LMC (little-man-computer)?
Odpowiedzi
2 trincot Nov 23 2020 at 22:23
Łączysz się z kodem, który przechowuje nieokreśloną liczbę wartości wejściowych. Ale w twoim przypadku nie jest to potrzebne: możesz śledzić minimum i maksimum podczas odczytywania wartości wejściowych. Nie ma potrzeby faktycznego przechowywania każdej wartości wejściowej:
#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>