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

String 比较两个字符串,不区分大小写,string,assembly,nasm,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,st

我有以下代码:

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

一种常见的方法是将两个字符串转换为一个普通的大小写,例如大写,并进行比较。如果您不想事先操作字符串,可以通过将当前选中的字符转换为普通大小写并进行比较来动态操作。查看ASCII图表,找出两种字符之间的差异,以便您可以将一种转换为另一种。

谢谢。我一直在想这个问题,但我不知道怎么做。我不知道怎么把它改成大写(请看两种不同情况下字符的ASCII值。十进制的区别是什么?二进制的区别是什么?'a'的十进制转换为65,而'a'为97。必须加32才能使其大写。如何实现?使用
add
指令如何?