NASM x86_64 删除换行符并在字符串末尾添加 0

严重程度

当您使用系统读取从控制台获取字符串时,如何删除添加在字符串末尾的换行符?我想在它的末尾添加一个 0 以使用该字符串打开文件

我得到这样的输入:

mov     rdx,name_len    ; size_t count
mov     rsi,name        ; char *buf
mov     rdi,0           ; int fd, 0 for stdin
mov     rax,0           ; system read
syscall
彼得·科德斯

read返回字符数,因此您可以索引缓冲区并检查最后一次读取是否为换行符。或者只是无条件地0用这个覆盖它

...
syscall                       ; rax = sys_read(0, buf, max_len)
mov byte [rsi + rax - 1], 0

假设没有错误,并且输入字符串是用换行符而不是 EOF 提交的。

(Linuxsyscall保留除 RAX(返回值)和 RCX/R11 之外的所有 reg,因此 RSI 仍然保持name.)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

x86_64系统调用打印程序将忽略换行符字节0Ah

来自C的NASM X86_64全局变量

Linux x86_64 nasm汇编系统调用

nasm x86_64中的Strcmp,寄存器

NASM x86_64 scanf分段故障

汇编 Nasm x86_64 Coredump on ErrCode:139

在x86_64和i686上编译时,NOP字符0x90的printf不同

Nasm Linux x64-86 | 在文件末尾添加位以进行正确的base 64编码

如何在NASM x86_64 Linux Assembly中将字符串中的一个字符与另一个字符进行比较

x86 Assembly(NASM):浮点异常,不除以0?

Nasm x86_64:为什么我不能读写相同的文件?

使用NASM为x86_64环境编译32位程序集

为什么在linux x86_64(nasm)上写syscalls打印`%`?

NASM x86_64:文件打开 (SYS_OPEN) 错误列表?

比较用户输入的字符 x86_64 程序集

使用x86或x86_64程序集反转字符串的最简洁方法是什么?

如何在 x86_64 中循环创建字符串

反转字符串的代码:“架构 x86_64 的未定义符号”

x86_64程序集字符串操作导致分段错误

将换行符添加到base64url字符串

在脚本中使用OS X的sed查找字符串,并在其下添加一行,包括换行符

如何在不使用syscall的情况下将字符串打印到x86-64程序集(NASM)中的终端?

当使用多个数据库声明时,NASM在Mach-O中编译x86_64 ASM标签地址减少了256个字节吗?

为什么在macOS的x64 NASM中不显示此堆栈字符串?

nasm汇编器x64比较输入字符串

NASM 64位OS X输入的现有值字符串覆盖字节

未知使用不带大小后缀的指令助记符(x86_64)

本机脚本:为Android添加x86_64 libNativeScript.so

将用户输入字符转换为符号:x86_64 程序集