2010-10-19 48 views
0

我在這裏有一些OAM代碼,我查了所有的指示,他們做了怎樣的操作,我把它全部寫成了僞,但是我有一個定位問題(所以我可以統計程序中有多少個)循環。我覺得它應該在眼睛裏凝視我,並且我已經在C/Java等中完成了一千個階乘程序,但我在這裏看不到它。因式分解在OAM中

alt text

因此,需要在用戶條目 如果== 0它打破到完成[BRZ] 如果> 0破跳過用於爲絕對值否定值[BRP] NEG

跳過程序會執行乘法和遞減操作,然後執行更多條件以查看是否需要再次調用它,或者程序是否完成。

我基本上需要找到這個程序中的循環。就像我說的那樣,它可能在我臉上凝視,但是這是一個關於分配者的一個鬆散問的問題。

編輯澄清: 程序不採用一個數的階乘,而是多重乘以每個號碼輸入。

所以我可以把在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

在這種情況下,'BRI'似乎不是跳轉操作碼,因爲'read'只是用作存儲。在'return:'之後發佈代碼。 – ruslik 2010-10-19 02:36:14

回答

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

所以它的階乘的產品,並且恰好有兩個循環。

+0

有誰知道指令'BRI'?我找到了BR,BRP和BRZ但不是我.. – 2010-10-19 02:25:50

+0

@John你有沒有在上下文中?發表它。如果沒有BRNZ操作碼,可能意味着「BRANCH Inequal」。 – ruslik 2010-10-19 02:28:45

+0

我想分析這段代碼.. 上面編輯.. – 2010-10-19 02:29:49