【问题标题】:How to write multiplication with the Little Man Computer?如何用小人电脑写乘法?
【发布时间】:2016-03-14 15:10:10
【问题描述】:

我知道我需要重复加法,但是我遇到了循环问题;我只是完全不了解它们。

这是一个将数字乘以 2 的程序,没有循环。

INP
STA num1
LDA num1
ADD num1
STA num1
OUT
HLT
num1 DAT

我知道我需要添加一个循环,但我只是迷路了。我在哪里放置循环?如何使用 LMC 的分支命令构建循环?

我的项目的最终结果是一个将两个数字相乘的程序,具体取决于用户输入的内容。比如输入4和5,程序会执行4 + 4 + 4 + 4 + 4 = 20等式。我不知道如何构造一个循环来执行这个,我一直在发呆按照设置为几天的说明。

【问题讨论】:

    标签: multiplication addition little-man-computer


    【解决方案1】:

    言辞:

     Read input into R0 and R1.
     Set RESULT to 0
     While R1 > 0 {
         Subtract 1 from R1
         Add R0 to RESULT
     }
     Output RESULT
    

    在 LMC 汇编器中:

         INP
         STA R0
         INP
         STA R1
    
    LOOP LDA R1
         BRZ END
         SUB ONE
         STA R1
         LDA RES
         ADD R0
         STA RES
         BRA LOOP
    
    END  LDA RES
         OUT
    
         // Temporary storage
    R1   DAT
    R0   DAT
    RES  DAT
    
         // Constants
    ONE  DAT 1
    

    你可以看到它在这里运行:multiplication on LMC emulator

    【讨论】:

      【解决方案2】:

      我以前做过这样的程序,如果内存服务,它应该使用相同的内存地址如下。该流程图也应该有助于解释这一点。 http://creately.com/diagram/example/i5z9v65u1/Multiplication%20LMC

      INP
      STA X
      INP
      STA Y
      LOOP LDA Y
      BRZ END
      LDA ANSWER
      ADD X
      STA ANSWER
      LDA Y
      SUB ONE
      STA Y
      BRA LOOP
      END LDA ANSWER
      OUT
      HLT
      ONE DAT 1
      ANSWER DAT 0
      X DAT 0
      Y DAT 0
      

      【讨论】:

        猜你喜欢
        • 2020-07-22
        • 1970-01-01
        • 2017-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多