.data
source BYTE "Defense mechanism",0
target BYTE SIZEOF source DUP(0)
.code
main PROC
mov esi, OFFSET target
mov edi, OFFSET target
mov ecx, SIZEOF source
L1:
mov al,[esi] ; get a character from source
mov [edi],al ; store it in the target
inc esi ; move to next character
inc edi
loop L1
В разделе .data
я вижу, что source
определяется как строка.
В разделе .code
я вижу, что ячейка памяти target
хранится в исходном индексе. Разве я не хочу, чтобы исходный индекс (ESI
) указывал на source
вместо target
? Предполагается, что эта программа скопирует в целевое поле строку, инициализированную по размеру исходной строки, и каждое из полей будет заполнено нулями. У меня нет опыта работы с языком ассемблера. Что я делаю не так? (Примечание: это то, как мой профессор перечислил программу, но он не предлагает никаких реальных материалов по этому вопросу, потому что это веб-курс "Безопасность в вычислениях".