0

编写一个程序,要求用户输入 2 个数字。然后,程序将第二个数除以第一个数的余数(模数)的结果显示在屏幕 (OUT) 上。例如,如果输入的第一个数字是 14,而输入的第二个数字是 5,那么程序将显示 4。

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

14 mod 7 = 14 - (2 * 7) = 14 - 14 = 0

您可以假设输入的数字始终为正且大于 0。

嗨,这是我不知道如何开始这个问题/做的问题?

4

4 回答 4

1

这只是简单的算术 - 让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)

由于 Little Man 只有 ADD 和 SUB 算术指令,您需要从第一原理实现乘法和除法运算。

于 2014-04-02T10:08:47.540 回答
1

您可以通过从第一个数字中减去第二个数字直到得到一个负数来解决这个问题。这是一个工作版本:

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

你可以在这里看到这个工作:LMC 模拟器上的模运算。

于 2016-04-20T08:30:23.470 回答
0

在这里,您必须使用减法方法来解决这个除法问题。它完全可以解决您的问题,找到两个数除法的余数...

// PRODUCED BY JAMES KHANAL

INP //ask the user
BRZ QUIT // halt the execution if input zero
STA DIVIDEND // store in dividend variable
INP // input dividor
BRZ QUIT // halt the execution if input zero
STA DIVIDOR // store in divider variable
LDA DIVIDEND // load into acc
LOOP STA RESULT // store the temp result
LDA RESULT // load the result
SUB DIVIDOR // subtract the dividor to acc
BRP LOOP //loop if acc is positive or zero 
LDA RESULT // load the result into acc
OUT // display the result
QUIT HLT // halt if brz
HLT // hlt the execution
DIVIDEND DAT //declare variable
DIVISOR DAT //declare variable
于 2014-04-09T00:11:49.657 回答
0

INP STA FIRST INP STA SECOND LOOPTOP LDA FIRST SUB SECOND STA FIRST BRP LOOPTOP ADD SECOND BRA ENDLOOP OUT ENDLOOP HLT FIRST DAT SECOND DAT

这是解决这个问题的低效方法!我刚刚创建了一个循环,从第一个变量中减去第二个直到它变为负数,然后我将第二个变量添加到它

一切以学校知识为基础

于 2020-09-30T06:25:41.820 回答