请教:为什么有时候定义字符串不相同啊例如,有时是string1 db "wrong" 13,10,"$"有时又是

请问:为什么有时候定义字符串不相同啊,例如,有时是string1 db "wrong", 13,10,"$",有时又是
string2   db   "data.txt ",   0  
有时又是
string3   db   "hello   world ",   13,   10

这三种分别是什么意思啊,有什么区别与不同啊

------解决方案--------------------
string3 db "hello world ", 13, 10中的13(十六进制0D)和10(十六进制0A)表示的是回车和换行

string1 db "wrong ", 13,10, "$ ",后面加一个$符号是一种规定,比如在INT 21H 功能 9(在标准输出上显示以$结尾的字符串)中就要求字符串必须以美元符号($)结尾

string2 db "data.txt ", 0表示在字符串是以空字符(也称为NULL即数值0)结尾的字符串

初学不对之处请原谅!!
------解决方案--------------------
这个主要是看字符串用在那里吧.
string1 字符串由字符 '$ ' 结束, 这个一般是用在 int21h 的 9 功能调用的显示字符串的格式
string2 以字节 00 结束字符串, 这个是多数的功能调用对字符串类型的要求, 从 dos 的文件名的字符串, 到现在的 Windows 的 APIs 使用的各种字符串, 都是这个格式
string3 没有任何的其它字符, 这个比较特殊了, 除非是没有写完全. 一般比较可能的用处就是 int10h 的 13h 显示字符串功能上, 字符串的长度由专门的寄存器来指定, 所以它不需要专门的结束字符来进行标识