Я использую C и ASM {} в одном из наших классов, чтобы завершить проект ассемблера, где мы должны зашифровать входную строку, передать и расшифровать ее.Доступ к элементам массива в ассемблере
Ключ загружается в пустой массив символов C (длиной 20 символов), а затем используется позже с инструкцией XOR для шифрования.
Код для загрузки адрес массива:
Леа еси, ключ
который помещает адрес «ключ» в ЭСИ. Адрес здесь совпадает с адресом массива ключей, когда мы проверяем регистр в режиме отладки, поэтому мы знаем, что это работает.
мы EDX, [еси]
мы думали, что это сдвинет значение первого индекса ЭРИ в в EDX, так как мы используем «мы [еси], EAX» поставить значение а зарегистрируйтесь в массиве esi. Обратное казалось логичным.
Однако значение, которое фактически получает edx, это «875575655» (последний запуск) или аналогичный. Слишком велико для значения char.
У меня возникает ощущение, что мы можем получить доступ к массиву неправильно, Любые советы будут оценены.
Примечание: Обычно, чтобы увеличить индекс массива, мы просто используем inc esi, а затем читаем, как мы это делали выше, так мы планировали считывать из массива.