如何在 LMC(小人机)的不同地址中存储未知数量的输入?

How can I store an unknown number of inputs in different addresses in LMC (little-man-computer)?

我想创建一个代码,要求用户输入一个数字 n,然后要求 n 个输入并将它们全部存储在不同的地址中,以便将它们读取为要执行的指令。

但是,我卡住了,因为我不知道如何将 n 个输入存储在 n 个不同的地址中。到目前为止,我能够请求一个输入 n,然后请求 n 个输入,但它们都存储在同一个地址中。

这是我的代码:

    IN
    STO     N

loopTop
    IN
    STO NBS
    LDA N
    SUB ONE
    STO N
    BRZ done
    BR  loopTop

done    

    OUT
    HLT

ONE
    DAT 001
N   
    DAT 000
NBS 
    DAT 000

使用 LMC,您需要使用自修改代码来更新 STO 指令,以便它每次都指向不同的内存地址。我们将向内存位置添加一个,以便每次通过存储的值都位于比上一个循环高一个的位置。

        IN         ; Accumulator = number of values to read (N)
LOOP    BRZ PRG    ; If Accumulator (N) is 0 we are finished - execute program at PRG
        SUB ONE
        STO N      ; N=N-1
        IN         ; Get value
ST      STO PRG    ; Store it in the program starting at PRG (this changes every loop)
        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
        BRA LOOP   ; Continue loop
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