2014-04-02 39 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.