gpt4 book ai didi

linux - 我如何使用 NASM 找到字符串的长度?

转载 作者:可可西里 更新时间:2023-11-01 11:50:38 25 4
gpt4 key购买 nike

我正在尝试使用 NASM 制作一个程序,该程序从命令行参数中获取输入。由于未提供字符串长度,我正在尝试创建一个函数来计算我自己的长度。这是我的尝试,它接受一个指向 ebx 寄存器中的字符串的指针,并在 ecx 中返回字符串的长度:

len:
push ebx
mov ecx,0
dec ebx
count:
inc ecx
inc ebx
cmp ebx,0
jnz count
dec ecx
pop ebx
ret

我的方法是逐个字符地遍历字符串,并检查它是否为空。如果不是,我递增 ecx 并转到下一个字符。我认为问题在于 cmp ebx,0 对于我正在尝试做的事情是不正确的。我将如何正确地检查字符是否为空?另外,还有其他我可以做得更好的事情吗?

最佳答案

您正在将 ebx 中的值与 0 进行比较,这不是您想要的。 ebx 中的值是内存中字符的地址,因此应该像这样取消引用:

cmp byte[ebx], 0

另外,最后的push ebx应该是pop ebx

关于linux - 我如何使用 NASM 找到字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6468480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com