13.Цепочечные команды. Группы команд, описание цепочек, префиксы повторения. Кодировки и кодовые страницы.
Цепочка данных — это последовательность элементов размером 1, 2 или 4 байта, находящихся в соседних ячейках памяти.
Цепочечные команды — это группа команд микропроцессора, предназначенных для обработки цепочек данных.
Адресация цепочек
Цепочечные команды неявно используют некоторые регистры:
- Для адресации цепочки-источника — ds:esi
- Для адресации цепочки-приемника — es:edi
- Для обработки элемента цепочки — eax/ax/al
- Для указания размера цепочки — ecx
- Для указания направления обработки цепочки — DF
Операции-примитивы
Цепочки обрабатываются в зависимости от значения флага направления DF:
- DF=0: слева-направо ( esi/edi увеличивается )
- DF=1: справа-налево ( esi/edi уменьшается )
Команды для установки значения флага направления:
- cld — установка DF=0 (Clear direction)
- std — установка DF=1 (Set direction)
Размер элемента цепочки
Для каждой операции-примитива существует 3 процессорные
команды для обработки:
- цепочки байт (b — bytes)
- цепочки слов (w — words)
- цепочки двойных слов (d — double words)
Например, для операции-примитива lods существуют следующие процессорные команды:
- lodsb (mov al, BYTE PTR ds:[esi]....add esi, 1)
- lodsw
- lodsd
Префиксы
Префикс — это необязательный однобайтный элемент машинной команды, предназначенный для изменения действий, выполняемых командой
Типы префиксов:
- Префикс повторения
- Префикс замены сегмента
- Префикс размера адреса
Виды префиксов повторения
- rep — выполняет цепочечную команду до тех пор, пока ecx>0 и уменьшает ecx на единицу
- repe/repz — выполняет цепочечную команду до тех пор, пока ecx>0 и ZF=1, а также уменьшает ecx на единицу
- repne/repnz — выполняет цепочечную команду до тех пор, пока ecx>0 и ZF=0, а также уменьшает ecx на единицу