比较两个不区分大小写的字符串

时间:2013-08-24 05:11:40

标签: string assembly nasm

我有这段代码:

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”。 但是,它区分大小写。你如何使它不区分大小写? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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