我创建的文件名末尾的额外字符

Extra characters at the end of filenames I create

我正在尝试学习汇编程序,但遇到了本教程的问题http://www.tutorialspoint.com/assembly_programming/assembly_file_management.htm

除了写出文件时,它工作得很好而且很漂亮。而不是 myfile.txt,它被命名为 myfile.txtWelcome to Tutorials PointWritten to file?.

我似乎无法找出原因。我从教程中删除了源代码,它做了同样的事情。

谁能告诉我为什么?


我正在使用 nasm 2.12.02。我也在 yasm 1.2.0 上尝试过,所以我很确定是汇编代码导致的。

我正在建设 运行 OpenSUSE Linux 3.16.7-35-default #1 SMP Sun Feb 7 17:32:21 UTC 2016 (832c776) x86_64 x86_64 x86_64 GNU/Linux

您可能遗漏了 , 0(零字节)以终止 .rodata 部分中的字符串,您在该部分放置了用于文件名和文件数据的字符串常量。

Linux 采用 char* args 的系统调用(如 open(2))接受零终止的 C 风格字符串,而不是接受字符串长度。