Ein Programm zu schreiben, berechnen Sie die Fakultät einer ganzen Zahl, in ARM-Assembler

Gegeben eine ganze Zahl muss ich eine Funktion schreiben, gibt die Fakultät Wert.

Hier ist mein code für die Fakultät-Funktion:

bl getnum

move r3, r0

mov r1, #1   -- counter

mov r4, r0


loop:
   sub r0, r0, #1

   mul r3, r0, r3

   add r1, r1, #1  

   subs r1, r4  -- check if counter = the initial r0
beg loop

mov r0, r3

bl printnum

Dieser code jedoch ergibt Falsches Ergebnis. Wenn ich zum Beispiel den Eingang 5 gibt es 20 statt 120. Kann mir jemand helfen herauszufinden, wo die Dinge schief gehen? Meine logische Argumentation scheint zu funktionieren, aber ich weiß nicht, ob ich einen syntax-Fehler, der bewirkt, dass das Programm in einer anderen Weise

  • Beim posten von code, den Sie kopieren und einfügen anstatt die Eingabe, um Tippfehler zu vermeiden. Ich bezweifle, dass Ihr code hat eine beg in es.
InformationsquelleAutor | 2016-10-11
Schreibe einen Kommentar