assembly 程序集\0字符不终止字符串

aemubtdh  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(79)

我正在学习汇编,并尝试了一些代码。这是代码:
我希望输出是HelloWo,因为"o"后面有NULL(\0),但所有字符都输出到控制台,输出是:

HelloWo
u

我正在使用这些命令创建并运行可执行文件:

nasm -f elf32 tes.asm -o tes.o
[[ -f tes.o ]] && ld -m elf_i386 tes.o -o tes
[[ -f tes ]] && ./tes

我的误解在哪里?我是不是把C和Assembly混在一起了?

x4shl7ld

x4shl7ld1#

如果int 0x80eax = 4关心你的null终止符,那么它不需要你在edx中提供字符串的长度。它确实需要edx中字符串的长度,这一事实强烈表明它不关心null终止符,它只是打印您告诉它打印的字符数,而不管这些字符是什么。

相关问题