OAM中的因子

时间:2010-10-19 01:46:49

标签: assembly factorial oam

我在这里有一些OAM代码,我查阅了所有的指令,他们做了什么,他们的行为是什么,我写的都是伪的,但我找到了一个问题(所以我可以数程序中有多少个循环。我觉得它应该盯着我看,我已经用C / Java等完成了一千个因子程序.​​.但我在这里看不到它。

alt text

因此它需要用户输入 if == 0它打破了[brz] 如果> 0休息跳过[brp] neg用于否定abs值的值

跳过例程执行乘法和递减, 然后是更多条件,看看是否需要再次调用或者程序是否完成。

我基本上需要在这个程序中找到循环。就像我说的那样,它可能正在盯着我,但这是一个关于分配者的问题。

编辑澄清: 该程序不采用一个数字的阶乘,而是将所输入的每个数字的阶乘数叠加起来。

所以我可以输入3,-4,2,0,结果将是288。 (3 * 2 * 1)(4 * 3 * 2 * 1)(2 * 1)

BRI的编辑:

read: noop
      lda stdin
      brp return
      neg

return: bri read

1 个答案:

答案 0 :(得分:1)

嗯,这不仅仅是一个因素.. 这将是C版本:

    int result = 1, value;
    while(value = get_int()) {
next_loop:
        value = abs(c);
        do {
skip_loop:
            result *= value;
            value--;
        } while (value > 0);
    };
    printf("%d\n", result);

因此它是阶乘的产物,而且恰好有两个循环。