簡體   English   中英

如何計算LMC中輸入的數字總數

[英]How to count the total of numbers from input in LMC

我在這個問題上有點掙扎。 本質上,我必須循環輸入帶有輸入的代碼,直到輸入為 0。由 BRZ 執行此操作。 然后,我必須輸入 output 輸入了多少個數字。 如果我輸入了 1、4、6、2,那么輸入應該是 4,因為那里有四個數字。

這是我目前正在使用的代碼

start   INP antall
        BRZ jump
        ADD tall
        STA tall
        BRA start
jump    LDA tall
        OUT
antall  STA
        LDA
        OUT
        HLT
tall    DAT 0
antall  DAT

antall = 總高 = 數字 如果有人想知道標簽的含義

對您的代碼的一些評論:

  • INP不接受操作數:它應該單獨使用,不像INP antall 用戶的輸入被加載到累加器中,所以它不需要任何參數。

  • 第一個 label antall的幾行代碼沒有什么意義:這段代碼不可訪問,而且LDASTA指令都需要一個操作數。 但簡而言之,這段代碼可以被刪除。

  • 標簽應該是唯一的。 您已經使用標簽antall定義了兩行,一次用於上述代碼段(可以刪除),一次作為最終結果的位置。

  • ADD talltall中的值添加到累加器。 但是此時累加器保存最后一個輸入值,這不是您想要包含在加法中的內容。 相反,您想加載tall的當前值,然后將其加 1。 所以你需要一個值為 1 的郵箱。 您可以在代碼塊末尾附近定義它:

     one DAT 1
  • 您有antall tall ,但由於antall的兩種用途都應該被刪除,label 和郵箱不再有任何用途。 你可以保持tall

這是更正后的代碼——你可以在這里運行它:

 #input: 1 4 6 2 0 start INP BRZ jump LDA tall ADD one STA tall BRA start jump LDA tall OUT HLT one DAT 1 tall DAT 0 <script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.816/lmc.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM