2014-04-02 41 views
0

編寫一個程序,要求用戶輸入2個數字。程序然後向屏幕(OUT)顯示將第二數字除以第一數字的餘數(模數)的結果。例如,如果第一輸入的號碼14和第二輸入的號碼5,則程序將顯示4.關於小人電腦除數(模數)分數

14模5 = 14 - (2 * 5)= 14 - 10 = 4

14國防部7 = 14 - (2 * 7)= 14 - 14 = 0

你可以假設輸入的號碼總是正數且大於0

你好,這是我不知道如何的問題開始這個問題/做它?

回答

0

這只是簡單的算術題 - 讓x = m MOD n你可以這樣做:

x = m/n ; integer division (truncates) 
x = x * n ; multiply back up to get exact multiple 
x = m - x ; subtract to get remainder (modulus) 

由於小文不僅具有ADD和SUB運算指令,你需要從基本原理實現乘除運算。

+0

嗨,這意味着要小男人計算機上完成與被小個子計算機上使用的操作碼。你知道嗎? – Karan

+0

當然 - 你有算術的ADD和SUB指令,所以應該是你需要實現上面的僞代碼。 –

+0

這實際上是我需要幫助,因爲我不知道什麼操作碼以什麼方式使用,但沒關係生病嘗試它謝謝。 – Karan

0

在這裏,我們去你必須解決這個使用減法方法的分裂問題..它的作品恰好你的問題尋找兩個數字劃分提醒...

// PRODEUCED由James卡納爾

INP //詢問用戶

BRZ QUIT //停止執行,如果輸入零

STA股息//存儲在股息可變

INP //輸入分隔符

BRZ QUIT //在輸入零時停止執行

01在除法器可變

LDA股息//負載

STA DIVIDOR //存儲到ACC

LOOP STA RESULT //存儲臨時結果

LDA RESULT //加載結果

SUB DIVIDOR //將分隔符減去acc

BRP LOOP //循環如果acc爲正數或零

LDA RESULT //結果加載到ACC

OUT //顯示結果

QUIT HLT //停止如果BRZ

HLT // HLT執行

股息DAT //聲明可變

除數DAT //聲明變量

+0

如果輸入的紅利是0,那麼不應該輸出除數作爲結果,而不是程序剛剛停止?我同意第二個'BRZ QUIT'。 – Kaiylar

+0

此外,如果問題沒有說假設輸入是正值/大於0(BRZ部分在這種情況下是不必要的),那麼這個解決方案將是用於。 – Kaiylar

1

您可以通過減去第一個第二個數字,直到你解決這個摹等負數。這裏有一個工作版本:

INP 
    STA R0 
    INP 
    STA R1 
    LDA R0 
L0 STA R0 
    SUB R1 
    BRP L0 
    LDA R0 
    OUT 
    HLT 
R0 DAT 
R1 DAT 

你可以看到這方面的工作在這裏:Modulo operation on LMC emulator.