Assembler для начинающих



Команды сканирования и сравнения - часть 2


    непосредственно следующий за сравнением. Вы можете определить
    смещение совпавшего объекта, вычитая единицу из регистра DI после
    метки FOUND. Программа может использовать эту информацию для
    доступа к другой таблице, или таблицам, которые содержат
    информацию, соответствующую этим исходным данным. Нужно обратить
    особое внимание на команду JE после команды сканирования.
    Существуют два случая, в которых управление передается этой
    команде: байт в строке совпал с регистром AL и условие, задаваемое
    префиксом REPNE, больше не выполняется; либо регистр CX достиг
    нулевого значения без нахождения соответствующего числа в таблице.
    В некоторых случаях создаются ситуации, исключающие появление
    второго условия. Но в большинстве программ, необходимо учитывать
    возможность неверных исходных данных. Программа перейдет на метку
    FOUND после команды сканирования, если команда установила флаг нуля
    (или равенства). Тем самым гарантируется, что сравнение найдено.
    Если же регистр CX достиг нуля, последняя итерация сканирования
    сбросила флаг нуля, показывая, что соответствия нет.

           Microsoft (R) Macro Assembler Version 5.00              1/1/80 04:01:36
           Фиг. 4.24 Поиск в таблице                              Page   1-1
 
 
                                         PAGE    ,132
                                         TITLE   Фиг. 4.24 Поиск в таблице
            0000                   CODE    SEGMENT
                                         ASSUME  CS:CODE,DS:CODE,ES:CODE
 
                                   ;--------------------------------------
                                   ; Поиск значения AL в таблице
                                   ;--------------------------------------
 
            0000  8D 3E 000C R                 LEA     DI, SCAN_TABLE        ; Адрес таблицы
            0004  B9 000B 90                   MOV     CX, SCAN_TABLE_LENGTH   ; Длина таблицы
            0008  F2/ AE                 REPNE   SCASB                       ; Поиск



Содержание  Назад  Вперед