我知道(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
答案 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
。