我在这里有一些 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