0

如何用 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 然后退出。

4

1 回答 1

4
char *str; // = value of eax
int i = 0;
while (str[i]) {
    if (str[i] < ' ' || str[i] == ',')
        str[i] = ' ';
    i++;
}

它遍历一个 c-string 并将下面的所有字符' '和逗号','替换为空格' '。查看ASCII 表:空格“下方”的字符都是控制字符。该函数可能想要擦除它们以获得“干净”的字符串。字符串通过 eax 中的指针传递。

我不知道这与 23 有什么关系,但也许这就是你在调试时得到的一些特定输入。

于 2013-05-25T19:44:44.287 回答