如何用 C 编写此 ASM 代码?
loc_536FB0:
mov cl, [eax]
cmp cl, ' '
jb short loc_536FBC
cmp cl, ','
jnz short loc_536FBF
loc_536FBC:
mov byte ptr [eax], ' '
loc_536FBF
mov cl, [eax+1]
inc eax
test cl, cl
jnz short loc_536FB0
我发现这是一个 for 循环计数到 23 然后退出。
如何用 C 编写此 ASM 代码?
loc_536FB0:
mov cl, [eax]
cmp cl, ' '
jb short loc_536FBC
cmp cl, ','
jnz short loc_536FBF
loc_536FBC:
mov byte ptr [eax], ' '
loc_536FBF
mov cl, [eax+1]
inc eax
test cl, cl
jnz short loc_536FB0
我发现这是一个 for 循环计数到 23 然后退出。
char *str; // = value of eax
int i = 0;
while (str[i]) {
if (str[i] < ' ' || str[i] == ',')
str[i] = ' ';
i++;
}
它遍历一个 c-string 并将下面的所有字符' '
和逗号','
替换为空格' '
。查看ASCII 表:空格“下方”的字符都是控制字符。该函数可能想要擦除它们以获得“干净”的字符串。字符串通过 eax 中的指针传递。
我不知道这与 23 有什么关系,但也许这就是你在调试时得到的一些特定输入。