nasm程序打印的参数比它应该多

时间:2018-01-26 20:55:41

标签: linux command-line nasm

我正在编写一个简单的程序,我应该获取第一个命令行参数并将其打印到标准输出。 我的代码如下所示:

./program hello

所以当我从Linux终端调用我的程序时,如:helloLC_PAPER=bs_BA.UTF-8XDG_VTNR=7LC_ADDRESS=bs_BA.UTF-8SSH_AGENT_PID=1483XDG_SESSION_ID=c2LC,我希望它打印出“hello”。但输出如下:halfRadius。 我知道这些是环境变量,但我无法弄清楚它们打印出来的原因。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

实际上,如果仔细检查,你会发现从内存中“hello”的地址开始会打印出100个字符。

替换

mov rdx, 100

mov rdx, 5 ; len of "hello", instead of 100