Хелпикс

Главная

Контакты

Случайная статья





если выход по ZF=1 (нашли символ), уходим на exit



; если выход по ZF=1 (нашли символ), уходим на exit

; если выход по CX=0 (символ не найден), идем на следующую команду

       dec di                    ; найден – вернуться на DI

       Вы обратили внимание, что сразу после выполнения команды SCASх еще невозможно определить, что именно стало причиной ее завершения: то, что CX=0, или то, уже найден соответствующий символ, причем и то и другое может произойти одновременно. При использовании префикса repnz (repne) обычно используют команду jnz для перехода, когда символ найден. В этом случае руководствуются следующим принципом – если флаг нуля сброшен, символ не найден, а установленный флаг нуля говорит о том, что символ найден.

       Команды сохранения STOS (Store in String) сохраняют содержимое регистров AL/AX/EAX в памяти по адресу ES:DI.  Также можно использовать STOS для инициализации памяти единственным значением.

Например: инициализировать каждый байт строки str1 значением 0Ah.

.data

str1 db 100 dup (?)

.code

       mov di, seg str1

       move es, di           ; определим адрес сегмента

       mov al, 0ah           ; заносим значение для заполнения байтов строки

       mov di, offset str1 ; определим адрес получателя ES:DI

       mov cx, 100          ; счетчик символов

       cld                         ; направление вверх

       rep stosb              ; заполнить содержимым

 

       Команды загрузки LODS (Load String) загружают из памяти по адресу, указанному в DS:SI, байт или слово в регистры AL/AX/EAX. Префиксы повторения редко используются с командами LODS, потому что каждое новое значение, загружаемое в регистры AL/AX, разрушает их прежние значения. Вместо отдельной команды LODSB можно использовать следующие две команды:

mov al, [si]



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.