2012-03-26 31 views
4

私はMARS MIPSシミュレータを使用していますので、自分のプログラムで改行を印刷したいと思います。MIPSの改行を印刷

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

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

改行を印刷する代わりに、UUUUを印刷します。私は間違っているのは何ですか?

+0

私はうまく動作します(MARS 4.1を使用) – gusbro

+0

私は4.2を使用していますが、動作しません。 – gzg

+4

4.2でも私のために... – gusbro

答えて

2

値を出力するコードブロックの後に新しい行を初期化します。

ので、それは読む:

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

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

あなただけの改行を印刷しようとしている場合、それは簡単です(と少しより多くのメモリ効率的な)単一の文字を印刷するシステムコール11を使用してそれを行うには。

.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

ありがとうございます。そのシンプルで便利な。 –

0

それは私はあなたが尋ねた同じ質問に対する答えを見つけようとしてここに来た私

 .data 
newLine .asciiz "\n" 

    .text 
    (your code) 

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

私はMIPS 4.5を使用しています。 – Chon

4

のために働く。これを試してみてください。あなたがこの質問をしてからしばらくしています。将来この餌に見えるかもしれない人には、どうか答えてください。

「スペース」がMipsの予約語であることを除いて、他のすべてがあなたのコードに適しています。私はそれが配列を作成するために使用されると思います。だから、スペースを他の単語に置き換えると、私は "改行"を使用しました。それは、それが想定されている方法で動作します。

.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 
関連する問題