我有了这个代码,应该改变大写字母为小写字母:x86汇编:更改一个大写字母为小写字母
void tolower(char *text)
{
_asm
{
mov esi, text;
mov ecx, 0;
mov bl, 32;
opakuj:
cmp [esi + ecx], 0;
je konec;
cmp [esi + ecx], 97;
jbe dolower;
add ecx, 1;
jmp opakuj;
dolower:
mov [esi + ecx], bl;
add ecx, 1;
jmp opakuj;
konec:
}
}
mov [esi + ecx], bl
不起作用。我得到一个
访问冲突写入错误
我在做什么错?
P.S .:我不能使用其他数组或指针或类似的东西。我必须重写那个char。
难道是你试图修改只读内存中的字符串,如文字字符串?像'tolower(“HELLO WORLD”);'?您不应该尝试修改文字字符串,只能复制。 –