2012-03-26 3 views
4

Ich benutze MARS MIPS Simulator und ich möchte einen Zeilenumbruch in meinem Programm drucken.Drucken von Zeilenumbruch in MIPS

.data 
space: .asciiz "\n" 
.text 

    addi $v0, $zero, 4 # print_string syscall 
    la $a0, space  # load address of the string 
    syscall 

Statt Druck Newline, druckt er UUUU. Was mache ich falsch?

+0

Es funktioniert gut für mich (mit MARS 4.1) – gusbro

+0

Ich benutze 4.2 und es funktioniert nicht. – gzg

+4

Funktioniert für mich auch in 4.2 ... – gusbro

Antwort

2

Initialisieren Sie die neue Zeile nach dem Codeblock, der den Wert ausgibt.

so heißt es:

addi $v0, $zero, 4 # print_string syscall 
    la $a0, space  # load address of the string 
    syscall 

.data 
space: .asciiz "\n" 
.text 
6

Wenn Sie nur eine neue Zeile zu drucken versuchen, ist es einfacher (und etwas mehr Speicher effizient), es zu tun 11 mit syscall ein einzelnes Zeichen zu drucken.

.text 
main: addi $a0, $0, 0xA #ascii code for LF, if you have any trouble try 0xD for CR. 
     addi $v0, $0, 0xB #syscall 11 prints the lower 8 bits of $a0 as an ascii character. 
     syscall 
+0

Danke. Es ist einfach und nützlich. –

0

versuchen, dies .. es funktioniert für mich

 .data 
newLine .asciiz "\n" 

    .text 
    (your code) 

    la  $a0, newLine 
    addi $v0, $0, 4 
    syscall 
+0

Ich verwende MIPS 4.5. – Chon

4

Ich bin hergekommen, Sie gefragt, versuchen, die Antwort auf die gleiche Frage zu finden. Es ist eine Weile her, seit du diese Frage gestellt hast. Lassen Sie mich auf jeden Fall für jeden antworten, der dieses Futter in Zukunft sehen könnte.

Alles andere ist gut in Ihrem Code, außer dass "Leerzeichen" ein reserviertes Wort in Mips ist. Ich denke, es wird verwendet, um Arrays zu erstellen. Also, wenn Sie den Platz durch ein anderes Wort ersetzen, habe ich "newline" verwendet. Es funktioniert so, wie es soll.

.data 
newline: .asciiz "\n" 
.text 

li $v0, 4  # you can call it your way as well with addi 
la $a0, newline  # load address of the string 
syscall