Я пытаюсь создать программу шифрования / дешифрования с использованием c ++ и ассемблера.Первоначально я использовал 3 разных массива: исходную строку, зашифрованную строку и расшифрованную строку.Сейчас я пытаюсь преобразовать это в 2D-массив, и у меня возникают проблемы с добавлением зашифрованного символа во вторую строку массива.
__asm
{
push eax
push ebx
push ecx
push edx
xor ebx, ebx
jmp checkend
forloop1: add ebx, 1
checkend: cmp ebx, aLength
jge endfor1
movzx ecx, byte ptr[Chars + ebx]
lea eax, EKey
push ecx
mov edi, eax
movzx eax, byte ptr[eax]
and eax, 0x3f
rol al, 1
mov byte ptr[edi], al
cmp eax, 0x00
jnz zerocheck
mov eax, 0x09
zerocheck:mov edx, eax
pop eax
sub eax, edx
rol al, 1
not al
mov byte ptr [Chars + ebx * 2], al // this line here
jmp forloop1
endfor1:
pop edx
pop ecx
pop ebx
pop eax
}
return;
Я могу прочитать в первой строке нормально, чтогде введенная строка хранится.Я выделил строку, в которой я пытаюсь сохранить зашифрованный символ во второй строке массива, но все, что я пробовал, похоже, не работает.[Chars + ebx * 2] - это то, что не работает.Я знаю, что 2 в конце не является правильным значением, может кто-нибудь сказать мне, какое значение я должен добавить / умножить в конце, чтобы добраться до второй строки массива.Любая помощь будет оценена.