【问题标题】:Compare two strings case-insensitive比较两个字符串不区分大小写
【发布时间】:2013-08-24 05:11:39
【问题描述】:

我有这个代码:

section .data
   msg1 db "Equal"
   msg1Len equ $ -msg1

   msg2 db "Not equal"
   msg2Len equ $ -msg2

   str1 db "abcde"
   str1Len equ $-str1

   str2 db "abcde"
   str2Len equ $ -str2

section .text
   global _start

_start:
   mov esi,str1
   mov edi,str2
   mov ecx,str2Len+1
   cld
   repe cmpsb
   jecxz equal  ;jumps if equal
            ;if not equal
   mov eax,4
   mov ebx,1
   mov ecx,msg2
   mov edx,msg2Len
   int 80h

   jmp exit

equal:
   mov eax,4
   mov ebx,1
   mov ecx,msg1
   mov edx,msg1Len
   int 80h

exit:
   mov eax,1
   mov ebx,0
   int 80h

我想做的是让它不区分大小写,比如“abcde”仍然等于“Abcde”。 但是,它区分大小写。你如何使它不区分大小写? 任何帮助将不胜感激。

【问题讨论】:

    标签: string assembly nasm


    【解决方案1】:

    一种常见的方法是将两个字符串转换为常见的大小写,例如大写,然后比较它们。如果您不想事先操作字符串,您可以通过将当前检查的字符转换为常见大小写并进行比较来即时操作。查看 ASCII 图表,了解两种字符大小写之间的区别,以便将一种转换为另一种。

    【讨论】:

    • 谢谢。我一直在考虑,但我不知道该怎么做。
    • 我不知道如何把它变成大写。 :(
    • 查看一个字符在两种不同情况下的 ASCII 值。十进制有什么区别?它们在二进制中有什么区别?
    • 'a' 的十进制转换为 65,而 'A' 为 97。您必须添加 32 才能使其变为大写。你是如何实现的?
    • 使用add指令怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多