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



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

Псевдооператоры EQU и =
К простейшим макросредствам языка ассемблера можно отнести псевдооперато-
ры
и = (равно). Их мы уже неоднократно использовали при написании про-
грамм. Данные псевдооператоры предназначены для присвоения некоторому вы-
ражению символического имени или идентификатора.
когда в ходе
трансляции такие идентификаторы встречаются в теле программы, макроассемб-
лер подставляет вместо них соответствующее выражение. Выражениями могут быть
константы, имена меток, символические имена и строки в апострофах. После при-
своения этим конструкциям символических имен их можно использовать везде,
где эти конструкции могли бы присутствовать.
Синтаксис псевдооператора
строка или
Синтаксис псевдооператора =:
=
Несмотря на внешнее и функциональное сходство, псевдооператоры EQU и =
различаются следующим:
с помощью псевдооператора
идентификатору можно ставить в соответствие
как числовые выражения, так и текстовые строки, а псевдооператор = может
использоваться только с числовыми выражениями;
Ж идентификаторы, определенные с помощью псевдооператора =, можно переопре-
делять в исходном тексте программы, а определенные с использованием псев-
дооператора
— нельзя.
Ассемблер всегда пытается вычислить значение строки, воспринимая ее как
выражение. Для того чтобы строка воспринималась именно как текстовая, необхо-
димо заключить ее в угловые скобки:
<строка>
Угловые скобки являются оператором ассемблера, называемым оператором вы-
деления. С
помощью транслятору сообщается, что заключенная в угловые
скобки строка должна трактоваться как текст, даже если в нее входят служебные
слова ассемблера или операторы.
Псевдооператор EQU удобно использовать для настройки программы на кон-
кретные условия выполнения, замены сложных в обозначении объектов, много-
кратно встречающихся в программе, более простыми именами и т. п. К примеру,
model small
stack 256


296 Глава 14. Макросредства языка ассемблера
equ 10
массива
akk equ ax
регистр
equ
элемент массива
;описание массива из 10 байт:
mas db mas_size dup (0)
. code
mov
mov
mov
mov
mov
Псевдооператор = удобно использовать для определения простых абсолютных
(то есть не зависящих от места загрузки программы в память) математических
выражений. Главное условие — транслятор должен быть в состоянии вычислять
эти выражения во время трансляции. К примеру,
db 5 dup (0)
adr2
0
= 43
=
и так, через предыдущее определение
= adr2-adrl
Как видно из примера, в правой части псевдооператора = можно использовать
метки и ссылки на адреса — главное, чтобы в итоге получилось абсолютное выра-
жение.
Компилятор TASM, начиная с версии 3.00, содержит директивы, значительно
расширяющие его возможности по работе с текстовыми макросами. Эти директи-
вы аналогичны некоторым функциям обработки строк в языках высокого уровня.
Под строками здесь понимается текст, описанный с помощью псевдооператора
Эти директивы перечислены далее.
Директива слияния строк CATSTR:
идентификатор catstr
Значением этого макроса будет новая строка, состоящая из сцепленной слева
направо последовательности строк строка_1, строка_2 и т. д. В качестве сцепляе-
мых строк могут быть указаны имена ранее определенных макросов. К при-
меру,
рге equ Привет,
name equ < Юля>
privet c a t s t r
;privet= "Привет, Юля"
Директива выделения подстроки в строке
идентификатор substr
Значением данного макроса будет часть строки, заданной операндом строка,
начинающаяся с позиции с номером
и длиной, указанной опе-
рандом размер. Если требуется только остаток строки начиная с некоторой по-
зиции, то достаточно указать номер позиции (без размера). К примеру,
предыдущего фрагмента:
privet catstr
;privet= "Привет, Юля"
name substr
Директива определения вхождения одной строки в другую
идентификатор i n s t r
После обработки данного макроса транслятором операнду идентификатор будет
присвоено числовое значение, соответствующее номеру (первой) позиции,


Макрокоманды 297
с которой совпадают операнды
и строка_2. Если такого совпадения нет,
то идентификатор получит значение 0.
Директива определения длины строки в текстовом макросе
идентификатор sizestr строка
В результате обработки данного макроса значение идентификатор устанавлива-
ется равным длине строки:
продолжение предыдущего фрагмента:
privet catstr
"Привет, Юля"
sizestr privet
Эти директивы очень удобно использовать при разработке макрокоманд, кото-
рые являются следующим типом макросредств, предоставляемых компилятором
ассемблера.

Download 12,06 Mb.

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