So greifen Sie auf ein Zeichen-Array zu und setzen Kleinbuchstaben in Großbuchstaben um und umgekehrt
Ich arbeite derzeit an einem Klassenprojekt für Structured Computer Organization mit einem x86-Prozessor. Der Wert, auf den ich zugreife, ist ein 1-Byte-Zeichen, aber ich weiß nicht, wie ich es mit einem Großbuchstaben vergleichen soll. Sie sagten, sie sollten eine ASCII-Tabelle im Hex-Format verwenden, aber ich weiß nicht, wie ich die beiden überhaupt vergleichen soll.
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
}
}
Alles hilft an dieser Stelle. Vielen Dank im Voraus für die Hilfe!
edit 1:Danke für all die Vorschläge und Punkte der Klarheit, bearbeitet meinen Code, um Veränderungen widerzuspiegeln. Ein Problem mit der Zugriffsverletzung.
edit 2 (+):ielen Dank für die hilfreichen Augen Leute. Ich werde immer noch alle Briefe übersetzen.