【问题标题】:X86 Assembly Converting lower-case to uppercaseX86 程序集小写转大写
【发布时间】:2014-01-30 19:31:35
【问题描述】:

实现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
    }
}

【问题讨论】:

    标签: assembly x86


    【解决方案1】:

    您需要将每个字符加载到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 位 (AND AL,0xDF)。

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      相关资源
      最近更新 更多