我是汇编语言的新手。要清楚,这是作业。给出一个char *列表问题,如何找到字符串末尾的哪个字符? 所以我有
xor ecx, ecx; //counter
loop1:
mov esi, list;
mov eax, [esi + ecx];
cmp eax, 0x00; //check if the character is null
je end;
inc ecx;
jmp loop1;
end:
但是,当循环到达字符串的末尾时,循环不会终止。我想知道我做错了什么。我一直在寻找书籍和网上的解决方案,但它们看起来都像我做的那样。任何帮助将不胜感激!
编辑:是的,计数器应该在循环之外。
答案 0 :(得分:1)
把所有这些放在一起我们得到了
mov esi, list
mov ecx, -1
loop1:
inc ecx
cmp byte [esi + ecx], 0x00; //check if the character is null
jne loop1;
答案 1 :(得分:0)
您正在一次读取几个字节,并测试它们是否都为零。
尝试只读取一个字节:
mov al, [esi + ecx];
cmp al, 0x00; //check if the character is null