Speichern von Ganzzahlen als Zeichenfolgen in MIPS
Ich Frage mich nur, gibt es eine Möglichkeit in MIPS zu speichern Summierung von zahlen als string und später Lesen byte für byte, zum Beispiel:
die Summe 657 -> in sw ein .ascii-Richtlinie -> spätere lb auf den ersten index um 6 (im ascii-code) gleich mit 5 und so weiter. Ist das möglich?
- related: der generische Algorithmus in C (wiederholte division durch 10, die Letzte Ziffer = Rest). Die Antwort, die hier arbeiten rückwärts von dem Ende des einen Puffer, da der Algorithmus produziert Ziffern in umgekehrter Reihenfolge.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Natürlich. Die ".ascii-Richtlinie" ist keiner, sondern ein .byte-Richtlinie konzentrierte sich auf die Speicherung von ASCII-text
ist wie
Können Sie
.space
um Platz zu machen für den ASCII-string, und verwenden Sie dann die Puffer in der Konvertierung von integer in ASCII, wenn du meinst, dies durch "in sw .ascii-Richtlinie" der Ganzzahl. Der folgende code wandelt die binäre Zahl" in einen ASCII-string mit itoa und druckt ihn (nur zum testen) mit print_string. Verwendet die Funktion den buffer und gibt den Zeiger auf das erste ASCII-Ziffer verwendbar für den Druck. Dies könnte verwendet werden, als eine erste Hilfsfunktion für eine sprintf-Funktion wie die Umsetzung.Nach $v0 in der Hauptsache
lb R, ($v0)
picks "1",lb R, 1($v0)
picks zweite Ziffer (2) und so weiter; denken Sie daran, den string null-terminiert ist, so dass, wenn Sie wählen 0 (numerisch), haben Sie zu stoppen,'0
in ein register, kann manaddui $t4, $t4, '0'
. ('0'
ist eine kleine Konstante, die funktioniert, als unmittelbares). Auchla $t0, buffer+30
funktionieren sollte. Es gibt keine Notwendigkeit, laden Sie die falsche Adresse als unmittelbare und dann hinzufügen zur Laufzeit.