在MIPS中打印换行符

gzg*_*gzg 7 mips system-calls

我正在使用MARS MIPS模拟器,我想在我的程序中打印换行符.

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

    addi $v0, $zero, 4  # print_string syscall
    la $a0, space       # load address of the string
    syscall
Run Code Online (Sandbox Code Playgroud)

它打印而不是打印换行符UUUU.我做错了什么?

Joh*_*ohn 14

如果您只是尝试打印换行符,则使用系统调用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
Run Code Online (Sandbox Code Playgroud)


小智 10

我来到这里试图找到你问的同一个问题的答案.你问这个问题已经有一段时间了.无论如何,让我回答任何可能在将来看这个饲料的人.

除了"空格"是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
Run Code Online (Sandbox Code Playgroud)


Nic*_*ick 1

在打印值的代码块之后初始化新行。

所以它写道:

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

.data
space: .asciiz "\n"
.text
Run Code Online (Sandbox Code Playgroud)