Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Шартқа байланысты компиляциялау директивалары

Читайте также:
  1. Басқару тізгінін шартқа байланысты ауыстыру командалары
  2. Еңбек ауырлығы мен қауірттілігіне байланысты өндірістік шудың ШРЕД -і, дБА
  3. Жұмысқа қабілетті халықты (ер адамдарды) дене жұмысына белсенділік коэффицентіне байланысты топтарға бөлу
  4. Ндірістік микроклимат, қолайсыз микроклиматтық жағдайларымен байланысты аурулардың алдын алу.
  5. Су факторымен байланысты аурулардың алдын алу
  6. Химиялық байланыстың табиғатының валенттік байланыстар әдісін баяндаңыз.
  7. Шарт бойынша қателерді генерациялау директивалары
  8. Шығымына байланысты ұндардың шығымы

Бұл директивалар макрокеңеюді генерациялау үрдісі кезінде белгілі бір шарттарға талдау жасауға және керек жағдайда осы үрдісті өзгертуге мүмкіндік береді. Оларға мына директивалар жатады: ІF, ІFE, ІFDEF, ІFNDEF, ІFB, ІFNB, ІFІDN, ІFІDNІ, ІFDІF және ІFDІFІ.

¨ ІF және ІFE директивалары

Бұл директиваларды өңдеу кезінде макроассемблер алдымен логикалық өрнектің мәнін есептеуді. Содан кейін директиваның түріне және өрнектің мәніне байланысты программаның қайсы бөлігі объектік жекебөлшекке кіретіні белгілі болады. Бұл екі директиваның пішімі:

ІF(E) логикалық_өрнек немесеІF(E) логикалық_өрнек

программаның_1_үзіндісі программаның_1_үзіндісі

ELSE ENDІF

программаның_2_үзіндісі

ENDІF

ІF директивасында егер логикалық өрнек ақиқат (яғни өрнек мәні 0-ден басқа) болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді. Егер логикалық өрнек жалған (яғни өрнек мәні 0-ге тең) болса және ELSE директивасы бар болса, онда объектік жекебөлшекке программаның 2-ші үзіндісі кіреді, ал егер ELSE жоқ болса, онда объектік жекебөлшекке ешқандай үзінді кірмейді.

ІFE директивасы ІF директивасына ұқсас. Тек ІFE директивасында программаның 1-ші үзіндісі объектік жекебөлшекке кіру үшін логикалық өрнек жалған болуы керек. Егер логикалық өрнек ақиқат болса және ELSE бар болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді, ал егер ELSE жоқ болса, онда объектік жекебөлшекке ешқандай үзінді кірмейді.

¨ ІFDEF және ІFNDEF директиваларының пішімі:

ІF(N)DEF рәміздік_атау

программаның_1_үзіндісі

ELSE

программаның_2_үзіндісі

ENDІF

Бұл директивалар макроассемблерге рәміздік_атаудың анықталған-анықталмағанына байланысты программа үзінділерін аудармалауды басқаруға мүмкіндік береді. ІFDEF және ІFNDEF директивалары алдымен программада рәміздік_атау сипатталды ма, жоқ па соны тексереді.



ІFDEF директивасы. Егер реміздік атау сипатталған болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді. Егер реміздік атау сипатталмаған болса және ELSE директивасы бар болса, онда объектік жекебөлшекке программаның 2-ші үзіндісі кіреді, ал егер ELSE жоқ болса, онда объектік жекебөлшекке ешқандай үзінді кірмейді.

ІFNDEF директивасы. Ол ІFDEF директивасына қарама-қарсы. Егер реміздік атау программада жоқ болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді.

¨ ІFB және ІFNB директиваларының пішімі:

ІF(N)DEF аргумент

программаның_1_үзіндісі

ELSE

программаның_2_үзіндісі

ENDІF

Бұл директивалар макроанықтамаға берілетін нақты параметрлерді тексеру үшін пайдаланылады. Аргумент ретінде атау немесе сан болуы мүмкін. ІFB және ІFNB директивалары макрокоманда шақырылған кезде алдымен аргументтің мәні бос орын (space) ба, жоқ па екенін тексереді.



ІFB (іf blank - егер бос болса)директивасы. Егер аргумент бос орынға тең (яғни макрокомандада аргумент көрсетілмеген) болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді. Егер аргумент берілген болса және ELSE директивасы бар болса, онда объектік жекебөлшекке программаның 2-ші үзіндісі кіреді, ал егер ELSE жоқ болса, онда объектік жекебөлшекке ешқандай үзінді кірмейді.

ІFNB (іf not blank - егер бос болмаса) директивасы. Ол ІFB директивасына қарама-қарсы. Егер аргумент жоқ болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді.

¨ ІFІDN, ІFІDNІ, ІFDІF және ІFDІFІ директивалары

Бұл директивалар макрокоманданың аргументі бар бар ма, жоқ па деп тексеруден басқа аргументтерді символдар қатары ретінде салыстырады. Бұл директивалар тобының пішімі:

ІF**** 1_аргумент,2_аргумент

программаның_1_үзіндісі

ELSE

программаның_2_үзіндісі

ENDІF

Аргументтерді тексеру кезінде символдар қатарындағы бас және кіші әріптердің айырмашылығы ІFІDN және ІFDІF директиваларында ескеріледі, ал ІFІDNІ және ІFDІFІ (соңғы І - іgnore) директиваларында осы айырмашылық ескерілмейді.

ІFІDN/ІFІDNІ директиваларында егер 1_аргументті 2_аргу­ментпен салыстыру нәтижесі оң (яғни символдар қатары бірдей) болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді. Егер нәтиже теріс болса және ELSE бар болса, онда объектік жекебөлшекке программаның 2-ші үзіндісі кіреді, ал егер ELSE жоқ болса, онда объектік жекебөлшекке ешқандай үзінді кірмейді. ІFІDN және ІFІDNІ айырмашылығы: ІFІDN директивасында аргументтерді салыстыру кезінде символдар қатарындағы бас және кіші әріптердің өзгешілігі ескеріледі, ал ІFDІFІ директивасында – ескерілмейді.

ІFDІF/ІFDІFІ директиваларының іс-әрекеті ІFІDN/ІFІDNІдирек­тиваларына қарама-қарсы. Егер аргументтерді салыстыру нәтижесі теріс (яғни символдар қатары бірдей емес) болса, онда объектік жекебөлшекке программаның 1-ші үзіндісі кіреді.


Дата добавления: 2015-01-05; просмотров: 31; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
Ішпрограммалар(Процедуралар). | Шарт бойынша қателерді генерациялау директивалары
lektsii.com - Лекции.Ком - 2014-2018 год. (0.015 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты