13. Команды работы со строками. - mRrvz/bmstu-asm GitHub Wiki

Строковые операции: копирование, сравнение, сканирование, чтение, запись

Строка-источник - DS:SI, строка-приёмник - ES:DI.

За один раз обрабатывается один байт (слово).

  • MOVS / MOVSB / MOVSW <приёмник>, <источник> - копирование

  • CMPS / CMPSB / CMPSW <приёмник>, <источник> - сравнение

  • SCAS / SCASB / SCASW <приёмник> - сканирование (сравнение с AL/AX (в зависимости от размеров приемника)

  • LODS / LODSB / LODSW <источник> - чтение (в AL/AX)

  • STOS / STOSB / STOSW <приёмник> - запись (из AL/AX)

  • Префиксы: REP / REPE / REPZ / REPNE / REPNZ

  • REP - повторить следующую строковую операцию

  • REPE - повторить следующую строковую операцию, если равно

  • REPZ - Повторить следующую строковую операцию, если нуль

  • REPNE - повторить следующую строковую операцию, если не равно

  • REPNZ - повторить следующую строковую операцию, если не нуль

Префиксы REP (F3h), REPE (F3h) и REPNE (F2h) применяются со строковыми операциями. Каждый префикс заставляет строковую команду, которая следует за ним, повторяться указанное в регистре счетчике (E)CX (в случае нашей модели процессора 8086 - CX) количество раз или, кроме этого, (для префиксов REPE и REPNE) пока не встретится указанное условие во флаге ZF.

Пример использования: REP LODS AX

Мнемоники REPZ и REPNZ являются синонимами префиксов REPE и REPNE соответственно и имеют одинаковые с ними коды. Префиксы REP и REPE / REPZ также имеют одинаковый код F3h, конкретный тип префикса задается неявно той командой, перед которой он применен.

Все описываемые префиксы могут применяются только к одной строковой команде за один раз. Чтобы повторить блок команд, используется команда LOOP или другие циклические конструкции.

Затрагиваемые флаги: OF, DF, IF, TF, SF, ZF, AF, PF, CF

⚠️ **GitHub.com Fallback** ⚠️