我在这里有一些OAM代码,我查阅了所有的指令,他们做了什么,他们的行为是什么,我写的都是伪的,但我找到了一个问题(所以我可以数程序中有多少个循环。我觉得它应该盯着我看,我已经用C / Java等完成了一千个因子程序..但我在这里看不到它。
因此它需要用户输入 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
答案 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);
因此它是阶乘的产物,而且恰好有两个循环。