私はこのリトルマンコンピュータの問題を見ています:
ユーザーは最初にデータのサイズを入力し、次に個々の数値を入力します。
入力されたものを(
OUT
) 正確に出力し、その後にデータ値の最大値と最小値を出力する必要があります
例:
- 最初の入力: 2 // DATA の数
- 2 番目の入力: 5 // 最初の DATA
- 3 番目の入力: 7 // 2 番目の DATA
- 出力: 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
質問
これを解決しようとしましたが、ご覧のとおり、最初の値しか出力できませんでした。入力もメモリに保存しましたが、アドレスをループして出力用の値を取得するにはどうすればよいですか?