Assembly X86程序集将小写转换为大写

Assembly X86程序集将小写转换为大写,assembly,x86,Assembly,X86,实现转换字符串中小写字母的toUpper函数 大写。该函数接受一个参数:char*string。字符串是一个 char类型指针,指向字符串的开头。因为C- 样式字符串以零结尾,我们不需要取 字符串作为另一个参数 我需要帮助开始,我不知道我在做什么 void toUpperchar*字符串{ __asm{ 推送EAX 推EBX 推ECX 推式EDX 推动ESI 推式电子数据交换 MOV EBX,字符串 /*您的代码从这一行开始*/ /*您的代码结束于此行上方*/ 流行电子数据交换 波普ESI 波普

实现转换字符串中小写字母的toUpper函数 大写。该函数接受一个参数:char*string。字符串是一个 char类型指针,指向字符串的开头。因为C- 样式字符串以零结尾,我们不需要取 字符串作为另一个参数

我需要帮助开始,我不知道我在做什么

void toUpperchar*字符串{ __asm{ 推送EAX 推EBX 推ECX 推式EDX 推动ESI 推式电子数据交换 MOV EBX,字符串 /*您的代码从这一行开始*/ /*您的代码结束于此行上方*/ 流行电子数据交换 波普ESI 波普EDX 波普ECX 流行电子束 波普EAX } }
您需要将每个字符加载到8位寄存器MOV AL[EBX]中,检查是否达到字符串的结尾,决定是否需要转换,将AL与边界“a”…“z”进行比较,如果是,则将相应的大写字母移回[EBX]。然后增加EBX并循环返回

ASCII code of uppercase letter 'A'..'Z'  is 0x41..0x5A
ASCII code of lowercase letter 'a'..'z'  is 0x61..0x7A
所以大小写可以通过从小写字母中减去0x20来改变, 或者通过屏蔽第5位和AL,0xDF