Разделы:


Best links:

Команды обработки строк данных

Когда в качестве элементов строк используются не байты, а слова, соответствующее увеличение или уменьшение значений индексных регистров осуществляется на два, т. е. при DF=1: SI = SI - 2; DI = DI - 2, а при DF=0: SI = SI + 2, DI = DI + 2.

Кроме команды MOVSдля действия со строками имеется еще четыре команды: CMPS (сравнение элементов строк), SCAS (сканирование элементов строки), LODS(загрузка элемента строки) и STOS (заполнение элемента строки).

Команда CMPSпозволяет осуществить поэлементное сравнение двух строк, одна из которых располагается в памяти с относительного адреса, указанного в SI, а вторая - с относительного адреса, указанного в DI. По команде CMPSпроизводится вычитание элемента строки с адресом в SI из элемента строки с адресом в DI. Как обычно, при выполнении операции сравнения результат вычитания не фиксируется, а устанавливаются соответствующие значения флагов, по которым определяется результат сравнения. По аналогии с командой MOVSпри сравнении изменяются значения индексных регистров по правилу: SI = SI ± А; DI = DI ± A, где « + » - используется при DF=0; «-» - при DF=1; А=1- при w= 0; А = 2 при w=1.

Для циклического повторения команды CMPS используется префикс повторения REPNE/REPNZили REPE/REPZ.

По команде сканирования SCASпроизводится сравнение значения элемента строки, расположенной с относительного адреса, который указан в DI, со значением AL. При этом также осуществляется операция вычитания, результат которой не фиксируется. Одно из возможных применений команды сканирования состоит в отыскании элемента строки, равного заданному образцу.

Образцовый элемент загружается в AL и затем организуется цикл сканирования с использованием префикса повторения REPE/REPZ. Как и при выполнении предыдущих команд, каждый раз по команде SCASпроизводится автоинкремент (или автодекремент) адреса элемента: (DI) = (DI) ± A.

предыдущаяследующая