Иллюстрированный самоучитель по Assembler


SBB Целочисленное вычитание с займом - часть 3


В примере 1 в строке имеются символы, отличные от искомого (кода пробела), и команда je выполнена не будет. После завершения сканирования управление будет передано на метку gotit. Содержимое регистров в этой точке: СХ=3 (так как не выполнено сканирование 3 символов), DI = <смещение string> + 5 (выполнено сканирование 5 символов). ES:D1 указывают на символ строки, следующий за отличным от пробела (в данном случае символ "Т").

Пример 2


; В полях данных сегмента данных, адресуемого через ES:

string db ' /Т:4'

; В программном сегменте:

cld ;Поиск вперед по строке

lea DI,string ;ES:DI ® string

mov AL, '/' ;Искомый символ

mov CX,8 ;Длина строки

repne scasb ;Поиск символа / в строке

jne blank ;Искомого символа нет

g'otit: ;Искомый символ найден

В примере 2 в строке имеется искомый символ ("/"), и команда jne выполнена не будет. После завершения сканирования управление будет передано на метку gotit. Содержимое регистров в этой точке: СХ=3 (так как не выполнено сканирование 3 символов), DI = <смещение string> + 5 (выполнено сканирование 5 символов). ES:DI указывают на символ строки, следующий за найденным знаком "/" (в данном случае символ "Т").

386+ SCASD


Сканирование строки двойных слов с целью сравнения

Команда аналогична командам МП 86 scab и scasw, но позволяет сравнивать содержимое расширенного регистра ЕАХ с двойным словом в памяти, адресуемым через регистры ES:EDI.

Пример


;В полях данных сегмента данных, адресуемого через ES:

nums dd 156000,432666,100000,0,4567890, ...

;В программном сегменте:

cld ;Поиск вперед

mov DI,offset nums ;ES:DI -> nums

mov EAX,0 ;Искомое число

mov CX,10000 ;Максимальное число элементов

repne scasd ;Поиск 0 среди чисел массива

jne no0 ;Искомого числа нет

isO: ;Искомое число найдено

В примере в массиве чисел имеется искомое число 0 (с таким же успехом можно было искать любое другое число, например, 4567890). Команда jne выполнена не будет. После завершения сканирования управление будет передано на метку is0. Содержимое регистров в этой точке: СХ уменьшится на 4 (просмотрено 4 элемента), DI будет увеличено на 10h (4 числа по 4 байт в числе).

 




Начало  Назад  Вперед



Книжный магазин