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



Download 12,06 Mb.
Pdf ko'rish
bet169/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   165   166   167   168   169   170   171   172   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

подстановкой аргументов. Здесь нужно отметить еще раз особо список формаль-
ных аргументов в заголовке макроопределения. В общем случае он может содер-
текущей системой счисления понимается то, как интерпретируются транслятором числа или
строки с фиксированным числовым значением — как двоичные, десятичные или
ные числа. По умолчанию транслятор трактует их как
Ассемблер имеет специальную
директиву
которая дает возможность изменить текущую систему
В качестве опе-
ранда директивы
может быть значение
или 16, что означает выбор, соответственно, двоич-
ной, десятичной или
системы счисления.


302 Глава 14. Макросредства языка ассемблера
жать не только разделенные запятыми формальные элементы, но и некоторую до-
полнительную информацию. Полный синтаксис формального аргумента следую-
щий:
Здесь тип может принимать
REQ — это значение говорит о том, что требуется обязательное явное задание
фактического аргумента при вызове макрокоманды;
т =<любая_строка> — если аргумент при вызове макрокоманды не задан, то в соот-
ветствующие места в макрорасширении по умолчанию будет вставлено значе-
ние любая_строка (будьте внимательны: символы, входящие в операнд любая_
строка, должны быть заключены в угловые скобки).
Однако распознать в теле макроопределения формальный аргумент ассемблер
может не всегда. Это, например, может не произойти в случае, когда он является
частью некоторого идентификатора. В этом случае последовательность символов
формального аргумента отделяют от остального контекста с помощью специаль-
ного оператора замены (символа &). Этот прием часто используется для задания
модифицируемых идентификаторов и кодов операций. К примеру, определим мак-
рос, который предназначен для генерации в программе некоторой таблицы, при-
чем параметры этой таблицы можно задавать с помощью аргументов макроко-
манды:
(0)
table
def
def_tabl
macro
d&type
После трансляции текста программы, содержащей эти строки, получатся сле-
дующие макрорасширения:
tabl_b db 10 dup (0)
10 dup (0)
Символ & можно применять и для распознавания формального аргумента в стро-
ке, заключенной в двойные кавычки
Например,
macro message
количество
символов в строке
ml
db "Строка &message содержит"
;число символов в строке message в коде ASCII
db
2 dup (0)
db
;конец строки
;дпя вывода функцией 09h
elem на экран
endm
В связи с последним фрагментом разберем ситуацию, когда тело макроопреде-
ления содержит метку или имя в директиве резервирования и инициализации дан-
ных. Если некоторая макрокоманда вызывается в программе несколько раз, то при


Макрокоманды 303
макрогенерации один и тот же идентификатор будет определен несколько раз, что,
естественно, транслятор посчитает ошибкой. Для выхода из подобной ситуации
применяют директиву LOCAL, которая имеет следующий синтаксис:
local
Эту директиву необходимо указывать непосредственно за заголовком макро-
определения. Результатом работы директивы LOCAL будет генерация в каждом эк-
земпляре макрорасширения уникальных имен для всех идентификаторов, пере-
численных в операнде
Эти уникальные имена имеют вид
??хххх, где хххх —
число. Для первого идентификатора в пер-
вом экземпляре макрорасширения хххх = 0000, для второго — хххх = 0001 и т. д. Кон-
троль правильности размещения и использования этих уникальных имен берет на
себя транслятор ассемблера. Для того чтобы окончательно разобраться в деталях,
введем и оттранслируем листинг 14.2. В нем помимо некоторых ранее рассмотрен-
ных макрокоманд содержится макрокоманда num_char. Ее назначение — подсчи-
тывать количество символов в строке, адрес которой передается этой макрокоман-
де в качестве фактического параметра. Строка должна удовлетворять требованию,
предъявляемому к строке, предназначенной для вывода на экран функцией 09h
прерывания 21h, то есть заканчиваться символом $. Другой момент, который
нашел отражение в этой программе, — использование символа & для распознава-
ния формального аргумента в строке, заключенной в кавычки
(см. последний
фрагмент).

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   165   166   167   168   169   170   171   172   ...   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