Mips:asciiz vs ascii,打印许多变量

时间:2015-12-29 13:09:47

标签: mips

我知道(asciiz)字符串以'\ 0'结尾,其中(ascii)不是。 但我仍然很困惑。在此代码中,为什么要打印:

  

'一二三三五五'

而不是简单地以与打印命令相同的顺序打印它们?

提前致谢

.data
str1: .asciiz"One"    
str2: .ascii " Two"
str3: .asciiz" Three"  
str4: .ascii " Four" 
str5: .ascii" Five" 
.text

main:
la $a0,str1
li $v0,4
syscall

#---------------------------
la $a0,str2
li $v0,4
syscall
#---------------------------
la $a0,str3
li $v0,4
syscall
#---------------------------
la $a0,str4
li $v0,4
syscall
#---------------------------
la $a0,str5
li $v0,4
syscall
#---------------------------
#End
li $v0, 10
syscall
.end main

1 个答案:

答案 0 :(得分:1)

'\0'系统调用需要NUL终结符(print_string)才能知道字符串的结束位置。系统调用将继续打印字符,直到它到达NUL终止符。

打印str1打印One

打印str2打印Two Three,因为str2未终止NUL。

打印str3打印Three

打印str4打印Four Five,因为str4未终止NUL。

打印str5打印Five

将所有这些放在一起,你得到One Two Three Three Four Five Five