Vin*_*lli 3 linux string x86 assembly 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
Run Code Online (Sandbox Code Playgroud)
我的方法是逐个字符地检查字符串,然后检查它是否为空。如果不是,我增加ecx并转到下一个字符。我认为问题是cmp ebx,0我尝试做的是不正确的。如何正确检查字符是否为空?另外,还有其他我可以做得更好的事情吗?
您正在将值ebx与0 进行比较,这不是您想要的。in ebx中的值是内存中字符的地址,因此应像这样取消引用:
cmp byte[ebx], 0
Run Code Online (Sandbox Code Playgroud)
另外,最后一个push ebx应该是pop ebx。
| 归档时间: |
|
| 查看次数: |
7870 次 |
| 最近记录: |