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



Download 12,06 Mb.
Pdf ko'rish
bet174/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   170   171   172   173   174   175   176   177   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Директивы IF и IFE
Синтаксис директив IF и IFE следующий:
IF(E)
ELSE
ENDIF
Обработка этих директив макроассемблером заключается в вычислении логи-
ческого выражения и включении в объектный модуль первого
или второго
фрагмента программы в зависимости
от
в какой директиве (IF или IFE) это выражение встретилось.
Если в директиве IF логическое выражение истинно, то в объектный модуль
помещается первый фрагмент программы. Если логическое выражение ложно,
то при наличии директивы ELSE объектный код помещается второй фрагмент
программы. Если же директивы ELSE нет, то вся часть программы между дирек-
тивами IF и ENDIF игнорируется, и в объектный модуль ничего не включается.
Кстати сказать,
и ложности значения логического выра-
жения весьма условно. Ложным оно будет считаться, если его значение равно
а истинным — при любом значении, отличном от нуля.
• Директива IFE аналогично директиве IF анализирует значение логического вы-
ражения. Но теперь для включения первого фрагмента программы в объект-
ный модуль требуется, чтобы логическое выражение было ложным.
Директивы IF и IFE очень удобно использовать для изменения текста програм-
мы в зависимости от некоторых условий. К примеру, составим макрос для опре-


 Глава 14. Макросредства языка ассемблера
деления в программе области памяти длиной не более 50 и не менее 10 байт (лис-
тинг 14.4).
Листинг 14.4. Использование условных директив и IFE
<1>
<2> masm
<3> model small
<4> stack 256
<5> def_tab_50 macro len
<6> if len GE 50
<7> GOTO exit
<8> endif
<9> if len
10
: e x i t
endif
rept len
db
0
endm
endm
def_tab_50 15
def_tab_50 5
<20>
<21> main:
<22> mov
<23> mov
<24> e x i t :
mov
<26>
<27> end
Введите и оттранслируйте листинг 14.4. Не забывайте о том, что условные ди-
рективы действуют только на шаге трансляции, и поэтому результат их работы
можно увидеть лишь после макрогенерации, то есть в листинге программы. В нем
вы обнаружите, что в результате трансляции строка 18 листинга 14.4 развернется
в пятнадцать нулевых байтов, а строка 19 оставит макрогенератор совершенно рав-
нодушным, так как значение фактического операнда в строках б и 9 будет ложным.
Обратите внимание
то, что для обработки реакции на ложный результат анали-
за в условной директиве мы использовали макродирективы
и GOTO. Навер-
ное, в данном случае можно было бы составить более оптимальный вариант макро-
команды для резервирования некоторого пространства памяти в сегменте данных,
а данный способ выбран, исходя из учебных целей.
Другой интересный и полезный вариант применения директив IF и IFE — отла-
дочная печать. Суть здесь в том, что в процессе отладки программы почти всегда
возникает необходимость динамически отслеживать состояние определенных про-
граммно-аппаратных объектов, в качестве которых могут выступать переменные,
регистры процессора и т. п. После этапа отладки отпадает необходимость в таких
диагностических сообщениях. Для их устранения приходится корректировать ис-
ходный текст программы, после чего подвергать ее повторной трансляции. Но есть
более изящный выход. Можно определить в программе некоторую переменную, к при-
меру debug, и использовать ее совместно с условными директивами IF или IFE:
<2> debug equ


Директивы условной компиляции
<4>
<5>
<б> if debug
<7>
команды и директивы ассемблера
<8>
на печать или монитор)
<9>
На время отладки и тестирования программы вы можете заключить отдельные
участки кода в своеобразные операторные скобки в виде директив IF и
(стро-
ки 6-9 последнего фрагмента), реагирующие на значение логической переменной
debug. При значении debug = 0 транслятор полностью проигнорирует текст внутри
этих условных операторных скобок; при debug = 1, наоборот, будут выполнены все
действия, описанные внутри них.

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   170   171   172   173   174   175   176   177   ...   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