0

我在这里有一些 OAM 代码,我查看了所有指令,它们的行为方式,我已经全部重写为伪代码,但是我在定位时遇到了问题(所以我可以数出有多少)循环在程序中。我觉得它应该盯着我的眼睛,我已经用 C/Java 等做了一千个阶乘程序。但我在这里看不到它。

替代文字

因此,如果 == 0,它会进入用户输入,如果 > 0 中断以跳过 [brp] neg 用于对 abs 值取反,则它会中断完成 [brz]

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

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

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

所以我可以输入 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
4

1 回答 1

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);

所以它是阶乘的乘积,并且恰好有两个循环。

于 2010-10-19T02:07:28.753 回答