buf db 20 dup (1) .code invoke strlen addr buf mov edx , eax ; А дальше проблемка... Если делаю так, работает... mov al , '5' mov addr buf+[edx] , al ; В конец строки пишем пятёрочку... ; Но если так, то не работает... lea esi , buf mov al , '5' mov esi+[edx] , al ; Комбинация [esi+edx} тоже... :-( : Где ошибка?
mov byte ptr[esi+edx],'5' только тебе надо будет уменьшить значение возвращаемое после вызова lstrlen,так как твоя 'пятерочка' запишется как 21 байт,а длина строки 20... так что после вызова lstrlen поставь dec eax
mupsy > поставь dec eax Не факт, зависит от задачи. Если заменять последний символ, то декремент нужен, но нужна и проверка, что строка не пустая. Если добавлять в конец строки, то декремент не нужен, но нужна проверка, что не вышли за правую границу буфера.
Чего такого не предусмотрено? Код (Text): mov [edx+esi],al Отлично компилируется и работает. TOLSTOPUZ ты в начале исходника .386 или выше поставил? Может у тебя код 16-битный генерируется...