我知道(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
发布于 2015-12-29 13:18:02
necessary ('\0'
)是print_string
syscall知道字符串结束位置所必需的。系统调用将继续打印字符,直到到达为止。
打印str1
打印One
。
打印str2
打印Two Three
,因为str2
不是以NUL结尾的。
打印str3
打印Three
。
打印str4
打印Four Five
,因为str4
不是以NUL结尾的。
打印str5
打印Five
。
把所有这些放在一起,你就可以得到One Two Three Three Four Five Five
了。
https://stackoverflow.com/questions/34511791
复制相似问题