1

如何在 LMC 中打印未知数量的输入的最大值/最小值?

我知道我可以从 INPUT 2 SUB INPUT 1 看看它是负数还是正数,但我不知道如何命名输入以便加载它们。

PS:我发现这个有用的链接可以帮助我处理“未知数量的输入”部分 如何在 LMC(小型计算机)的不同地址中存储未知数量的输入?

4

1 回答 1

2

您链接到存储未确定数量的输入值的代码。但在您的情况下,这不是必需的:您可以在读取输入值时跟踪最小值和最大值。不需要实际存储每个输入值:

#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/lmc@v0.812/lmc.js"></script>

于 2020-11-23T15:23:40.333 回答