Konvertieren von Dezimal zu Binär und Drucken in MIPS

Ich Schreibe ein einfaches code-snippet für einen Auftrag und ich brauche, um zu konvertieren eine Dezimalzahl in binäre, oktale und hexadezimale. Ich habe es zu arbeiten, aber ich merkte danach, dass da der Algorithmus, den ich verwende, Drucke ich die binäre Zahl zurück. Die Strategie war ich mit war drucken ein Zeichen zu einem Zeitpunkt. Ich bin noch ein Anfänger, so dass ich dachte, dies wäre eine einfache Möglichkeit, um zu vermeiden, weitere fortgeschrittene Themen. Leider habe ich nicht denke, dass es den ganzen Weg durch.

binary:   la        $a0, bType                            #binary function selected, notify user
          li        $v0, 4                                #print notification
          syscall
          la        $a0, in_val                           #ask user for input decimal number
          li        $v0, 4                                #print
          syscall
          li        $v0, 5                                #syscall read int
          syscall
          move      $t0, $v0                              #save input value to $t0
          li        $t1, 2                                #load 2 into $t1 to divide by 2
          li        $v0, 4
          la        $a0, bRes                            
          syscall                                         #print result tag
binLoop:  divu      $t0, $t1                              #LO = $t0/2, HI = $t0 % 2
          mfhi      $t2                                   #$t2 = HI (remainder)
          mflo      $t0                                   #$t0 = $t0/2 (quotient)
          move      $a0, $t2                              #store digit to print
          li        $v0, 1                                #Print digit
          syscall
          bgtz      $t0, binLoop                          #if input != 0, keep dividing
          j         main

Gibt es eine Möglichkeit, kann mir vielleicht store jede Ziffer in einer Zeichenkette mit einem label zusammen und verketten die einzelnen Ziffern auf danach, dann Lesen Sie die Zeichenfolge nach hinten oder so? Vielleicht gibt es einen besseren Vorschlag, Sie könnten in der Lage sein zu zeigen Sie mir.

Nur beachten, dass der code funktioniert an dieser Stelle durch den Druck eine einzelne binäre Ziffer, aber in umgekehrter Reihenfolge, die wir es wollen. Das Programm soll in der Lage sein zu handhaben, große zahlen(wie 20 binäre Ziffern lang), so dass ich nicht speichern kann jede Ziffer in ein eigenes register. Vielen Dank an alle!

  • Gibt es nicht irgendeine Art von stack?
Schreibe einen Kommentar