实现转换字符串中小写字母的toUpper函数 大写。该函数接受一个参数:char * string。字符串是一个 char类型指针,指向字符串的开头。因为C- 样式字符串以零结尾,我们不需要取长度 字符串作为另一个参数。
我需要帮助入门,我不知道我在做什么!!
void toUpper(char *string) {
__asm{
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX
PUSH ESI
PUSH EDI
MOV EBX, string
/* Your code begins below this line. */
/* Your code ends above this line. */
POP EDI
POP ESI
POP EDX
POP ECX
POP EBX
POP EAX
}
}
答案 0 :(得分:1)
您需要将每个字符加载到8位寄存器(MOV AL,[EBX]),检查是否到达字符串结尾,确定是否需要转换(将AL与边界'a'...'进行比较')并将相应的大写字母移回[EBX],如果是的话。然后递增EBX并循环回来。
ASCII code of uppercase letter 'A'..'Z' is 0x41..0x5A
ASCII code of lowercase letter 'a'..'z' is 0x61..0x7A
所以可以通过从小写字母减去0x20来改变大小写, 或者屏蔽掉第5位(AND AL,0xDF)。