我想创建一个代码,要求用户输入数字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
答案 0 :(得分:0)
使用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