Как получить доступ к массиву символов и изменить строчные буквы на прописные, и наоборот
В настоящее время я работаю над проектом класса для Структурированной организации компьютеров с использованием процессора 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 (+):Спасибо за полезные глаза людям. Я все еще перевожу все письма.