0

2 つのマイナスを乗算する lmc プログラムを作成するのを手伝ってもらえますか? (-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
4

1 に答える 1

0

入力を乗算する前に、いつでも入力を正にすることができます。もちろん、これにはユーザーが負の数のみ、または正の数のみを入力する必要があります (1 つの負と 1 つの正の入力では機能しません)。

コードでは、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
于 2020-10-18T11:36:12.220 に答える