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



Download 12,06 Mb.
Pdf ko'rish
bet132/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   128   129   130   131   132   133   134   135   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Установка байта по условию
При рассмотрении команд условного перехода логично
еще об од-
ной команде — SETcc. Данная команда впервые появилась в процессоре
Ее формат:
SETcc
Команда устанавливает байт
после проверки модификатора
задаю-
щего условие, аналогично тому, как это делается в командах условного перехода.
Фактически, модификатор обозначает флаг, который нужно проверить (см. при-
ложение). В качестве операнда используется либо один из 8-разрядных регистров
(AL, АН, BL, BH, CL, CH, DL, DH), либо адрес ячейки памяти размером в байт. Алгоритм
работы команды заключается в том, что значение операнда устанавливается по
результатам проверки условия, заданного модификатором
в
= 0 — если условие ложно;
я
= 1 — если условие истинно.
К примеру, в следующем фрагменте байт по адресу rez будет установлен в 0:
sete byte ptr
Организация циклов
Цикл, как известно, представляет собой важную алгоритмическую структуру, без
которой не обходится, наверное, ни одна программа. Организовать циклическое
выполнение некоторого фрагмента программы можно, к примеру, используя ко-
манды условной передачи управления или команду безусловного перехода JMP.
Например, подсчитаем количество нулевых байтов в области mas (листинг 10.2).
Листинг
Подсчет числа нулевых элементов
<2> model
<3>
100h
<4>
<5>
equ 10
элементов в mas
<6> mas db
<7>
 продолжение


230 Глава
Команды передачи управления
Листинг 10.2
<8> s t a r t :
<9> raov ax
<10>
ds
mov
@data
ax
len ;длину поля mas в сх
<12> xor ax ax
<13> xor si
<14>
<15> jcxz exit ;проверка сх на 0, если 0, то выход
<16> cmp m a s [ s i ] , 0 ;сравнить очередной элемент mas с 0
<17> jne ml ;если не равно 0, то на ml
<18> inc

- счетчик нулевых элементов
<19> ml:
inc si ;перейти к следующему элементу
<21> dec сх
сх на 1
<22>
cycl
<23> e x i t :
<24> mov
<25>
;возврат управления операционной системе
<26> end start
Цикл в листинге 10.2 организован тремя командами, JCXZ, DEC и JMP (строки 15,
21 и 22). Команда JCXZ выполняет здесь две функции: предотвращает выполнение
«пустого» цикла (когда счетчик цикла в СХ равен нулю) и отслеживает окончание
цикла после обработки всех элементов поля mas. Команда
после каждой итера-
ции цикла уменьшает значение счетчика в регистре СХ на Заметьте, что при та-
кой организации цикла все операции по его организации выполняются «вручную».
Но, учитывая важность такого алгоритмического элемента, как цикл, разработчи-
ки процессора ввели в систему команд группу из трех команд, облегчающую про-
граммирование циклов. Эти команды также используют регистр ЕСХ/СХ как счет-
чик цикла. Дадим краткую характеристику этим командам.
Команда LOOP позволяет организовать циклы (loops), подобные циклам for
в языках высокого уровня с автоматическим уменьшением счетчика цикла. Син-
таксис команды:
loop метка_перехода
Команда реализует описанные далее действия.
1. Декремент регистра ЕСХ/СХ.
2. Сравнение регистра ЕСХ/СХ с нулем:
П если (ЕСХ/СХ) > 0, то управление передается на метку перехода;
П если (ЕСХ/СХ) = 0, то управление передается на следующую после LOOP ко-
манду.
Команды LOOPE и LOOPZ (Loop still сх <> 0 or Zero flag = 0 — повторить цикл пока
СХ <> 0 или ZF = 0) — абсолютные синонимы, поэтому используйте ту команду, ко-
торая вам больше нравится. Синтаксис команд:
метка_перехода
Команды реализуют описанные далее действия.
Декремент регистра ЕСХ/СХ.
2. Сравнение регистра ЕСХ/СХ с нулем и анализ состояния флага нуля ZF:
П если
> 0 и ZF = 1, управление передается на метку перехода;


Организация циклов 231
D если
= 0 или
управление передается на следующую после ШОР
команду.
Команды LOOPNE и LOOPNZ (Loop still
<> 0 or NonZero flag = 0 — повторить
цикл, пока СХ <> 0 или ZF 1) также абсолютные синонимы. Синтаксис команд:
loopne/loopnz
Команды реализуют описанные далее действия.
1. Декремент регистра ЕСХ/СХ.
2. Сравнение регистра ЕСХ/СХ с нулем и анализ состояния флага нуля ZF:
если (ЕСХ/СХ) > 0 и ZF = 0, управление передается на метку перехода;
если (ЕСХ/СХ) = 0 или ZF = 1, управление передается на следующую после LOOP
команду.
Команды LOOPE/LOOPZ и LOOPNE/LOOPNZ по принципу своей работы являются
Они расширяют действие команды
тем, что дополнитель-
но анализируют флаг ZF. Это дает возможность организовать досрочный выход из
цикла, используя этот флаг в качестве индикатора. Типичное применение этих
команд связано с операцией поиска определенного значения в последовательно-
сти или со сравнением двух чисел.
Недостаток команд организации цикла LOOP, LOOPE/LOOPZ и LOOPNE/LOOPNZ за-
ключается в том, что они реализуют только короткие переходы (от -128 до
+127 байт). Для работы с длинными циклами придется использовать команды
условного перехода и команду
(см. листинг 10.2), поэтому постарайтесь осво-
ить оба способа организации циклов. Рассмотрим несколько примеров организа-
ции циклов с помощью команд LOOP, LOOPE/LOOPZ и LOOPNE/LOOPNZ.
Программа из листинга 10.2 с использованием команды организации цикла
будет выглядеть так, как показано в листинге 10.3.

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   128   129   130   131   132   133   134   135   ...   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