这是在程序集中声明 byte 类型变量的常规方法:
msg0 BYTE "string_1 in upper case: ",0
什么情况需要手动指定,0
?它可能标志着字符串的结尾。
但是一旦我们关闭双引号,字符串的结尾不是很明显吗?
最佳答案
没有隐式终止零附加右引号,因为您并不总是希望这样。例如为了传递给需要长度的 write
系统调用,您只需要 ASCII 字节和长度(显式长度字符串),而不是隐式长度的以 0 结尾的 C 字符串。
例如
msg db "hello"
msglen = $ - msg
或者作为结构或其他内容的一部分,有效地定义一个固定宽度的 char buf[4]
或所有使用都占用全部 4 个字节的内容,而不是搜索终止 0。
关于assembly - 为什么汇编中字符串变量末尾包含 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67267907/