web-dev-qa-db-ja.com

MIPSで改行を印刷する

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

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

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

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

7
gzg

改行を印刷しようとしているだけの場合は、syscall 11を使用して1文字を印刷する方が簡単です(メモリ効率がわずかに高くなります)。

.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
14
John

私はあなたが尋ねたのと同じ質問に対する答えを見つけようとしてここに来ました。この質問をしてからしばらく経ちました。とにかく、将来このフィードを見る可能性のある人のために答えさせてください。

「スペース」が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
10
nabin

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

だからそれは読む:

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

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

これを試してください..それは私のために働きます

     .data
newLine  .asciiz "\n"

     .text
     (your code)

     la     $a0, newLine
     addi   $v0, $0, 4
     syscall
1
Chon