[英]How to print a list of values + max/min
我在看這個小人電腦問題:
用戶將首先輸入數據的大小,然后輸入單個數字。
我必須打印 ( OUT
) excatcly 輸入的內容,然后是數據值的最大值和最小值
我必須在最后打印所有內容(當用戶完成輸入所有輸入時)
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
我試圖解決這個問題,但正如你所看到的,我只成功打印了第一個值。 我還將我的輸入保存在內存中,但是如何循環地址以獲取輸出值?
用於存儲輸入的自修改代碼模式也可用於輸出它。 您將擁有一條動態LDA PRG
指令,而不是修改動態STO PRG
LDA PRG
指令。
您的嘗試未顯示用於確定最小值和最大值的代碼。 您可以在輸入循環或輸出循環期間收集此信息。
請考慮以下附加說明:
ST
和PRG
是相當晦澀的名字...所以它可以像下面那樣工作。 此代碼使用Wikipedia 中描述的 LMC 助記符。 所以 STA = STO 和 INP = IN。 您可以在此處運行該程序:
#input: 5 3 9 6 2 4 INP # data size BRZ halt # nothing to do ; initialise (so program still runs correctly when reset) STA size LDA halt # =zero STA max LDA big STA min LDA staArray STA store LDA ldaArray STA load ; input loop LDA size SUB one nextInput STA counter INP # get data value store STA array # self-modified STA value SUB min BRP checkmax LDA value STA min checkmax LDA max SUB value BRP incInput LDA value STA max incInput LDA store ADD one STA store # modify code LDA counter SUB one BRP nextInput LDA size OUT # output input size SUB one outputLoop STA counter load LDA array # self-modified OUT # output data value LDA load ADD one STA load # modify code LDA counter SUB one BRP outputLoop LDA min OUT LDA max OUT halt HLT # constants one DAT 1 big DAT 999 staArray STA array ldaArray LDA array # variables size DAT counter DAT min DAT max DAT value DAT array DAT <script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.812/lmc.js"></script>
如果不會要求所有的輸入完成后的輸出僅產生,你就不需要自修改代碼。 請參閱此答案,其中在處理輸入時生成輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.