【问题标题】:max/min of an unknown number of inputs in LMC?LMC中未知数量的输入的最大值/最小值?
【发布时间】:2020-11-23 04:41:29
【问题描述】:

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

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

PS:我发现这个有用的链接可以帮助我处理“未知数量的输入”部分 How can I store an unknown number of inputs in different addresses in LMC (little-man-computer)?

【问题讨论】:

  • LMC 没有间接内存寻址。要遍历数组,您必须编写自修改代码。但是,如果您一次读取来自用户的输入,则不必将它们存储在数组中,只需检查它们是新的最小值还是新的最大值。跨度>

标签: assembly little-man-computer


【解决方案1】:

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

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

【讨论】:

  • 我是否也可以打印 DATA 的数量以及用户输入的所有输入而不存储它们?
  • 是的,但这是一个不同的问题。您只需在第二个INP 之后执行OUT。因此,您会立即回显输入的内容。然后在最后你还输出最小值和最大值。
猜你喜欢
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多