什么是.asciiz与.ascii之间的区别

时间:2011-10-16 07:58:01

标签: mips

我读过.asciiz null终止字符串(追加\n?)...但是在查看QtSPIM的用户数据段时,

User data segment [10000000]..[10040000]
[10000000]..[1000ffff]  00000000
[10010000]    6c6c6548  6f57206f  00646c72  6c6c6548    H e l l o   W o r l d . H e l l 
[10010010]    6f57206f  00646c72  00000000  00000000    o   W o r l d . . . . . . . . . 
[10010020]..[1003ffff]  00000000

我没有看到差异?

.data
  str1: .asciiz "Hello World" # string str1 = "Hello World"
  str2: .ascii "Hello World" # string str2 = "Hello World"

.text
  .globl main
    main: 
      li $v0, 4 # print_string

      # print(str1)
      la $a0, str1 # load address of str1 into $a0
      syscall

      # print(str2)
      la $a0, str2 # load address of str2 into $a0
      syscall

      j $ra

输出“ Hello WorldHello World

更新

有什么影响或何时使用? asciiz听起来像是“正确的”方法吗?

1 个答案:

答案 0 :(得分:13)

由@osgx编写,ASCIIZ表示该字符串由\0(ASCII码0)NUL字符终止。他们甚至被称为C strings。引用那里:

  

在计算中,C字符串是以a结尾的字符序列   null字符('\ 0',在ASCII中称为NUL)。它通常存储为   一维字符数组。[可疑 - 讨论]这个名字指的是   使用此字符串表示的C编程语言。   替代名称是ASCIIZ(注意C字符串并不意味着使用   of ASCII)和以null结尾的字符串。