Я написал процедуру копирования строки в masm32копия процедура строки сборки
coppystring proc uses esi edi ecx source:dword,dest:dword
mov esi, OFFSET source
mov edi, OFFSET dest
mov ecx, SIZEOF source
Lx:
mov al,[esi]
mov [edi],al
inc esi
inc edi
loop Lx
coppystring endp
Этот код дает мне ошибку
A2098 недопустимый операнд для OFFSET
Выражение после OFFSET оператора должно быть выражением памяти или непосредственным выражением. Но до сих пор я не знаю, как исправить мой процедурный
Как бы то ни было, глядя на то, что вы пытаетесь сделать - 'source' и' dest', вероятно, указатели, которые хранятся в стеке в качестве параметров. Вы должны иметь возможность получить эти адреса таким образом. 'mov esi, source' и' mov edi, dest'. Я делаю предположение, что 'source' и' dest' являются указателями на передаваемые строки. Кроме того, 'SIZEOF source' не даст вам длину строки, это даст вам размер' source', который является 'dword'. Таким образом, размер всегда будет 4. Вероятно, вы хотите создать цикл, который копирует до тех пор, пока не будет найден символ NUL (0) или не будет передано количество символов для копирования в качестве третьего параметра. –