2010-10-19 7 views
0

J'ai un peu de code OAM ici, et j'ai recherché toutes les instructions, ce qu'ils font comment ils agissent, et je l'ai écrit tout pseudo, mais j'ai un problème de localisation (donc Je peux compter combien de boucles sont dans le programme. J'ai l'impression que ça devrait me regarder dans les yeux, et j'ai fait des milliers de programmes factoriels en C/Java etc. mais je ne peux pas le voir ici.Factoriel dans OAM

alt text

Il faut donc dans l'entrée utilisateur si == 0, il se brise à fait [BRZ] si> 0 pause pour sauter [brp] neg utilisé pour nier la valeur pour la valeur abs

Skip routine fait la multiplication et décrémine, suivi de plus de conditions pour voir si elle doit être appelée à nouveau ou si le programme est terminé.

J'ai besoin essentiellement de trouver les boucles dans ce programme. Comme je l'ai dit, il me regarde probablement en face, mais c'est une question vaguement posée de la part de l'assignant.

EDIT pour clarifier: Le programme ne prend pas la factorielle d'un nombre, mais multiplie plutôt la factorielle de chaque nombre entré.

Je pourrais mettre en 3, -4, 2, 0 et le résultat sera 288. (3 * 2 * 1) (4 * 3 * 2 * 1) (2 * 1)

EDIT pour BRI:

read: noop 
     lda stdin 
     brp return 
     neg 

return: bri read 
+0

Dans ce cas, 'BRI' ne semble pas être un opcode jump, car' read' est utilisé comme stockage. Postez le code après 'return:'. – ruslik

Répondre

1

Eh bien, ce n'est pas seulement un factoriel .. Ce serait la version 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); 

il est le produit des factorielles, et il y a exactement deux boucles.

+0

Est-ce que quelqu'un connaît l'instruction 'BRI'? J'ai trouvé BR, BRP, et BRZ mais pas je .. –

+0

@John avez-vous dans le contexte? postez-le. Peut signifier 'BRanch Inequal' s'il n'y a pas d'opcode BRNZ. – ruslik

+0

J'essaie d'analyser cet extrait .. Édité dans ci-dessus .. –

Questions connexes