一个LMC(小人计算机)程序,用于乘以两个负数

时间:2016-12-07 15:35:30

标签: assembly little-man-computer

你能帮我写一个lmc程序来乘以2个底片 (-x)*(-y) = xy?例如,如果你输入-5和-6,它应该给你30。

我为x*y=xy

做了
INP
STA FIRST
INP
STA SECOND
LOOP LDA COUNT
ADD ONE
STA COUNT
LDA TOTAL
ADD FIRST
STA TOTAL
LDA SECOND
SUB COUNT
BRZ ENDLOOP
BRA LOOP
ENDLOOP LDA TOTAL
OUT
HLT
ONE DAT 001
COUNT DAT
TOTAL DAT
FIRST DAT
SECOND DAT

1 个答案:

答案 0 :(得分:0)

在将它们相乘之前,总是可以使输入为正。当然,这需要用户仅输入负数或仅输入正数(这对于一个负数和一个正数输入将不起作用)。

在代码中,我添加了一个等于0的变量ZERO。然后,我从零中减去用户的输入,然后我们将得到正数。然后,您可以使用编写的代码来解决计算问题。

        INP
        BRP JUMP
        STA FIRST
        LDA ZERO
        SUB FIRST
        OUT
JUMP    STA FIRST
        INP
        BRP JUMP2
        STA SECOND
        LDA ZERO
        SUB SECOND
        OUT
JUMP2   STA SECOND
LOOP    LDA COUNT
        ADD ONE
        STA COUNT
        LDA TOTAL
        ADD FIRST
        STA TOTAL
        LDA SECOND
        SUB COUNT
        BRZ ENDLOOP
        BRA LOOP
ENDLOOP LDA TOTAL
        OUT
        HLT
ONE     DAT 001
COUNT   DAT
TOTAL   DAT
FIRST   DAT
SECOND  DAT