I'm struggling with a problem with some AT&T assembly syntax.
Im using the "as" compiler on linux x86.
Im making a password program but it needs to be case insensitive. To clarify, it should evaluate true regardless of the case of any given character.
I have the normal evaluation process working correctly and i have it set up to iterate through a string.
#Comparison Routine
    movl $Password, %ebx     #Move the entire hardcoded password into ebx
    movl $buffer_data, %edx  #Move the entire input password into edx
    movl $Password_len, %ecx #Move the length of the input password into ecx
0:  
    movb (%ebx), %al         #Move one byte of the hardcoded password into al
    xorb (%edx), %al         #Compare one byte of the input password to one byte of the hardedcoded
    jz SkipCase              #If they match, jump to SkipCase
##### 
    andb $32, %al   # 
    xorb (%edx), %al
    jz SkipCase
    jnz IncorrectOutput #   
SkipCase:
    inc %ebx                #Iterate through the
    inc %edx                #strings and decrease
    dec %ecx                #the length variable
    jnz 0b                  #if we're not finished, continue
    jmp CorrectOutput       #If all is good, goto CorrectOutput
This is the section im struggling with, i can't figure out how to actually convert the character between cases. I'm aware i need to add or subtract 32 from it but something is amiss. Any comments or suggestions would be very helpful. Thanks.
andb $32, %al   # 
xorb (%edx), %al
This is the section for coverting the case, i have tried add, sub, and and or and i just cant get it to work. i realise the jz SkipCase after this is not nessessary.
The comparison routine is largely based off another question on here that i'll link if nessessary.
Apologies for layout and excessive hashes, bad commenting style i know.