2012-03-26 264 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 2012-03-26 16:05:29

+0

我使用4.2,它不工作。 – gzg 2012-03-26 16:08:14

+4

适用于4.2的我也适用... – gusbro 2012-03-26 16:26:36

回答

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

谢谢。它简单而有用。 – 2014-10-24 17:02:07

0

试试这个..我的作品

 .data 
newLine .asciiz "\n" 

    .text 
    (your code) 

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

我正在使用MIPS 4.5。 – Chon 2015-08-17 16:30:05

4

我来到这里,试图找到你问同样的问题的答案。自从你问这个问题已经有一段时间了。无论如何,无论如何,任何人都可能会看到这种饲料。

除了“space”是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