Дипломированных специалистов «Информатика и вычислительная техника»



Download 12,06 Mb.
Pdf ko'rish
bet147/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   143   144   145   146   147   148   149   150   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Команда CMPS
Синтаксис команды
cmps


256 Глава
Цепочечные команды
Здесь:
определяет адрес цепочки-источника в сегменте данных, зара-
нее загружаемый в пару регистров
ESI/SI;
определяет адрес цепочки-приемника, которая должна нахо-
диться в дополнительном сегменте, заранее загружаемый в пару регистров
ES:EDI/DI.
Алгоритм работы команды
заключается в последовательном выполнении
вычитания (элемент цепочки-источника минус элемент цепочки-получателя) над
очередными элементами обеих цепочек. Принцип выполнения вычитания коман-
дой
такой же, как у команды сравнения
Она так же, как и
произво-
дит вычитание элементов, не записывая при этом результата, и устанавливает флаги
ZF, SF и OF. После вычитания очередных элементов цепочек командой CMPS индекс-
ные регистры ESI/SI и EDI/DI автоматически изменяются в соответствии со значе-
нием флага DF на значение, равное размеру элемента сравниваемых цепочек. Чтобы
заставить команду CMPS выполняться несколько раз, то есть произвести последо-
вательное сравнение элементов цепочек, необходимо перед командой CMPS опре-
делить префикс повторения. С командой
можно использовать префиксы
вторения REP, REPE/REPZ или REPNE/REPNZ:
REP — сравнивать элементы цепочек, пока ЕСХ/СХ>0;
II REPE или REPZ — сравнивать элементы цепочек до выполнения
из двух
условий:
содержимое ЕСХ/СХ равно нулю;
в цепочках встретились разные элементы (флаг ZF стал равен нулю);
или REPNZ — сравнивать элементы цепочек до выполнения одного из двух
условий:
П содержимое ЕСХ/СХ равно нулю;
п в цепочках встретились одинаковые элементы (флаг ZF стал равен единице).
Таким образом, выбор подходящего префикса позволяет организовать более
гибкий поиск одинаковых или различающихся элементов цепочек командой
Критерий для выбора префикса — условие выхода из цикла. Для определения кон-
кретного условия наиболее подходящим является способ, использующий коман-
ду условного перехода
Ее работа заключается в анализе содержимого регист-
ра ЕСХ/СХ, и если оно равно нулю, то управление передается на метку, указанную
в качестве операнда
Так как в регистре ЕСХ/СХ содержится счетчик повторе-
ний для цепочечной команды, имеющей любой из префиксов повторения, то, ана-
лизируя ЕСХ/СХ, можно определить условия выхода из цикла цепочечной команды.
Если значение в ЕСХ/СХ не равно нулю, то это означает, что выход произошел по
причине совпадения либо несовпадения очередных элементов цепочек. Существует
возможность еще больше конкретизировать информацию об условии завершения
операции сравнения. Сделать это можно с помощью команд условной передачи
управления (табл. 12.1).


Сравнение цепочек 257
Таблица
Соответствие команд условной передачи управления условиям завершения
команды
Условие завершения сравнения
> операнд_приемник
операнд_источник
<
операнд_приемник
операнд источник
операнд приемник
Соответствующая команда
условного перехода
JA или JG (операнд со знаком)
JE (в том числе для операнда со знаком)
JNE или JNZ (в том числе для операнда
со знаком)
JB или JL (операнд со знаком)
JBE или JLE (операнд со знаком)
JAE или JGE (операнд со знаком)
Как определить местоположение очередных совпавших или несовпавших эле-
ментов в цепочках? Вспомните, что после каждой итерации цепочечная команда
автоматически осуществляет инкремент-декремент значения адреса в соответству-
ющих индексных регистрах. Поэтому после выхода из цикла в этих регистрах бу-
дут находиться адреса элементов, находящихся в цепочке после (!) элементов, по-
служивших причиной выхода из цикла. Для получения истинного адреса этих
элементов необходимо скорректировать содержимое индексных регистров, увели-
чив либо уменьшив значение в них на длину элемента цепочки.
В качестве примера рассмотрим программу из листинга 12.2, в которой сравни-
вается две
находящиеся в одном сегменте. Используется команда CMPS.
Префикс повторения — REPE.
Листинг
Сравнение двух строк командой CMPS
не
строки
;привязка DS и ES к сегменту данных
<12> mov
;загрузка сегментных регистров
<13> mov
<14> mov
;настройка ES на DS
на экран исходных строк stringl и string2
<16> mov
<17> lea
<18> int
<19> lea dx,string2
<20> int 21h
<21>;сброс флага
- сравнение в направлении возрастания адресов
<22>
<23> lea
в si смещения stringl
<24> lea
;загрузка в di смещения string2
<25> mov
строки для префикса
строк (пока сравниваемые элементы строк равны)
продолжение £
<3>STACK
<5>match
<6>failed
<8>string2
small
256
db
db
db
db
0
0
9
256


258 Глава
Цепочечные команды

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   143   144   145   146   147   148   149   150   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish