Как получить доступ к массиву символов и изменить строчные буквы на прописные, и наоборот

В настоящее время я работаю над проектом класса для Структурированной организации компьютеров с использованием процессора x86. Значение, к которому я обращаюсь, представляет собой 1-байтовый символ, но я не знаю, как сравнить его с заглавными буквами. Они сказали использовать таблицу ASCII в шестнадцатеричном формате, но я не уверен, как их сравнит

void changeCase (char char_array[], int array_size ) {
    __asm {
            // BEGIN YOUR CODE HERE

        mov eax, char_array;        //eax is base image
        mov edi, 0;

    readArray:
        cmp edi, array_size;
        jge  exit;
        mov ebx, edi;           //using ebx as offset
        shl ebx, 2;
        mov cl, [eax + ebx];    //using ecx to be the storage register

    check:
        //working on it
        cmp cl, 0x41;       //check if cl is <= than ASCII value 65 (A)
        jl next_indx;
        cmp cl, 0x7A;       //check if cl is >= than ASCII value 122 (z)
        jg next_indx;
        cmp cl, 'a';
        jl convert_down;
        jge convert_up;


    convert_down:
        or cl, 0x20;        //make it lowercase
        jmp write;

    convert_up:
        and cl, 0x20;       //make it uppercase
        jmp write;

    write:
        mov byte ptr [eax + ebx], cl    //slight funky town issue here,

    next_indx:
        inc edi;

    exit:
        cmp edi, array_size;
        jl readArray;

    mov char_array, eax;
            // END YOUR CODE HERE
    }
}

На этом этапе все помогает. Заранее спасибо за помощь!

edit 1:

Спасибо за все предложения и ясность, отредактировал мой код, чтобы отразить изменения. Некоторая проблема с нарушением доступа.

edit 2 (+):

Спасибо за полезные глаза людям. Я все еще перевожу все письма.

Ответы на вопрос(5)

Ваш ответ на вопрос