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