你能帮我写一个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
答案 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