我这里有一些OAM代码,我已经查找了所有的指令,它们做了什么,它们是如何运作的,我已经重新编写了所有的伪代码,但我在定位(所以我可以计算出程序中有多少)循环时遇到了问题。我觉得它应该直视我的眼睛,我已经用C/Java等语言编写了上千个factorial程序。但我在这里看不到。

因此,它接受用户输入,如果==为0,则中断为done 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发布于 2010-10-19 10:07:29
嗯,这不仅仅是阶乘..这将是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);所以它是阶乘的乘积,正好有两个循环。
https://stackoverflow.com/questions/3964805
复制相似问题