Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Mov es,ax

Mov ds,ax

Code

Data

Lodsd

Lodsw

Lodsb

Загрузка элемента строки в аккумулятор

Repne scas string

Mov cx, 6

Mov es, ax

Lea di, string

Cld

Code

Data

Scasd

Scasw

Scasb

Сканирование строки

Mov cx, 9

Lea di, string2

Lea si, string1

Cld

Mov es, ax

Mov ds, ax

Code

Data

Пример.

Cmpsd

Cmpsw

Cmpsb

Команды сравнения строк

End main

 

 

 

 

cmps <адрес приемника>, <адрес источника>

 

Алгоритм работы команды заключается в последовательном выполнении команды вычитания (элемент источника – элемент приемника) элементов цепочек. По результатам вычитания устанавливаются флаги zf. Адрес источника записывается в ds:si, адрес приемника в es:di. В cx указывается количество сравниваемых элементов.

 

Перед командой сравнения можно использовать префиксы повторения.

REP MOVS – пересылка происходит до тех пор, пока cx<>0

 

REPE MOVS – пересылка происходит при условии: cx<>0 и zf =1.

Применяется для поиска несовпадающих элементов.

 

REPNE MOVS – пересылка продолжается пока выполняется условие: cx<>0 и zf=0. Применяется для поиска совпадающих элементов в строках.

 

Сравнить две строки и определить их совпадение

string1 db “1 2 3 4 5 6 7 8 9”

string2 db “1 2 3 4 5 6 7 8 9”

assume ds:data, es:data

main:

mov ax, @data

repe cmps string1, string2;сравнение пока CX<>0 и ZF=1

jcxz m1; вывести сообщение о совпадении если CX=0

jne m2; вывести сообщение о несовпадении если ZF=0

:

.

m1:

; вывод сообщения о совпадении строк

.

m2:

;вывод сообщения о несовпадении строк

 

 

Команда производит поиск некоторого значения в области памяти. Искомое значение предварительно должно быть загружено в регистр AL, AX либо в EAX. Выбор регистра должен быть согласован с размером элемента строки, в которой осуществляется поиск.

 

scas <адрес>

Строка должна располагаться в дополнительном сегменте по адресу ES:DI. В процессе поиска выполняется вычитание из аккумулятора очередного элемента строки и устанавливаются флаги (по результату вычитания). Можно использовать префиксы REPE и REPNE.

 

Пример:

 

string db “строка”

……….

……..

mov ax, @data

mov al, ‘a’

je mes; zf=1 вывести сообщение о том, что символ найден

 

mes:

; вывод на экран сообщения

Команда загружает элемент строки в аккумулятор AL. Эту команду удобно использовать с помощью команд сканирования, сравнения, которые локализуют место искомого компонента строки. Строка должна быть помещена по адресу ES:SI

 

lods <адрес>

 

Пример программы, которая сравнивает две строки и первый не совпавший элемент строки помещает в аккумулятор:

 

string1 db ‘1 2 3 4 5 6,$’

string2 db ‘1 2 3 8 5 6,$’

mes db ‘элементы совпали, $’

assume ds:data, es:data

main:

mov ax,@data

<== предыдущая лекция | следующая лекция ==>
Lea dx, dest | Mas db 1,2,3,4,5,6,7,8,9,10
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 338; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.