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

我正在尝试使用从命令行参数获取输入的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

另外,最后一次推送ebx应该是pop ebx.

上一篇:fw: openstack


下一篇:获取css style值