MARS MIPSシミュレーターを使用していて、プログラムに改行を印刷したいと思います。
.data
space: .asciiz "\n"
.text
addi $v0, $zero, 4 # print_string syscall
la $a0, space # load address of the string
syscall
改行を出力する代わりに、UUUU
を出力します。私が間違っているのは何ですか?
改行を印刷しようとしているだけの場合は、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
私はあなたが尋ねたのと同じ質問に対する答えを見つけようとしてここに来ました。この質問をしてからしばらく経ちました。とにかく、将来このフィードを見る可能性のある人のために答えさせてください。
「スペース」が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
値を出力するコードブロックの後に改行を初期化します。
だからそれは読む:
addi $v0, $zero, 4 # print_string syscall
la $a0, space # load address of the string
syscall
.data
space: .asciiz "\n"
.text
これを試してください..それは私のために働きます
.data
newLine .asciiz "\n"
.text
(your code)
la $a0, newLine
addi $v0, $0, 4
syscall