Для ecx
повторений сохраняет содержимое eax
в том месте, куда edi
указывает, увеличивая или уменьшая edi
(в зависимости от флага направления) на 4 байта каждый раз. Обычно это используется для операции типа memset
.
Обычно эта инструкция просто пишется rep stosd
. Опытные сборщики кодов знают все детали, упомянутые выше, просто увидев это. : -)
ETA за полноту (спасибо PhiS): каждая итерация, ecx
уменьшается на 1, и цикл останавливается, когда достигает нуля. Для stos
единственное, что вы заметите, это то, что ecx
очищается в конце. Но для scas
и т.п., где используются префиксы repz
/ repnz
, ecx
может быть больше нуля, если операция остановлена до исчерпания ecx
байтов / слов / whatevers.
Прежде чем вы спросите, scas
используется для реализации операций strchr
-типа. : -Р