【发布时间】:2020-11-26 02:05:10
【问题描述】:
我正在研究这个小人电脑问题:
-
用户将首先输入数据的大小,然后输入单个数字。
-
我必须精确地打印 (
OUT) 输入的内容,然后是数据值的最大值和最小值
示例:
- 第一个输入:2 //数据的数量
- 第二个输入:5 // 第一个数据
- 第三个输入:7 // 第二个数据
- 输出:2、5、7、5(最小)、7(最大)
我必须在最后打印所有内容(当用户完成输入所有输入时)
我的尝试:
IN # Acc = number of values to read (N)
STO M
LOOP BRZ PRG
SUB ONE
STO N # N=N-1
IN # values
ST STO PRG # Store it in the program starting at PRG
LDA ST # Get current store command (ST)
ADD ONE # add one to store command to increment memory location
STO ST # Update store command (ST)
LDA N # Put current value of N in accumulator
BRZ PRINT
BRP LOOP # Continue loop - 12
#My problem is here
PRINT LDA M
OUT
LDA PRG
OUT
FIN HLT
M DAT 0
N DAT 0 # Number of values to read
ONE DAT 1 # Value 1
PRG DAT 0 # We will store all of the values from this point onward
问题
我试图解决这个问题,但如您所见,我只成功打印了第一个值。我还将输入保存在内存中,但是如何循环地址以获取输出值?
【问题讨论】:
-
如果您不知道用户将输入多少个输入,您怎么知道何时结束并且您必须打印“所有内容”?基本上有两种方法可以做到这一点:或者用户应该首先输入将跟随多少输入(所以你确实知道),或者用户必须输入一个特殊的、商定的值来标记结束输入(如零)。你还没有澄清这一点。其次,你写下你的尝试。请编辑您的问题并添加您尝试使用的代码。
-
是的,对不起,用户必须首先输入输入的数量,这个数字是第一个被打印的。
-
哦,输入也应该在输出中?最小值/最大值应该在哪里输出?完全回显输入大小和输入数据之后?你能举一个输入和输出的具体例子吗?
-
没错,示例:第一个输入:2 // 数据数量第二个输入:5 // 第一个数据第三个输入:7 // 第二个数据------- 输出:2,5, 7,5(最小),7(最大)
标签: assembly little-man-computer