Основы программирования микропроцессоров



Download 1,87 Mb.
bet19/119
Sana23.02.2022
Hajmi1,87 Mb.
#139915
TuriКонтрольные вопросы
1   ...   15   16   17   18   19   20   21   22   ...   119
Bog'liq
Системное программирование

Операнды команды отделяются друг от друга запятыми. Опе­ранды записываются в виде выражений. Частным случаем выражений являются числа и имена переменных.
Комментарий. В конце каждой команды можно помещать комментарий.
Директивы. Помимо машинных команд с помощью специальных директив ассемблера в программе могут быть определены константы и переменные. Синтаксис директив следующий:

[<имя>] <название директивы> [<операнды>] [;<комментарий>]


3.2. Директивы определения данных


Для описания переменных в языке ассемблера использу­ются директивы определения данных.
Директива DB (Define Byte, определить байт) определяет данные разме­ром в байт:

[<имя>] DB <операнд> {,<операнд>}


Встречая директиву DB, ассемблер вычисляет операнды и записывает их значения в последовательные байты памяти. Первому из байтов дается имя, по которому на него можно потом ссылаться.


Существует два основных способа задания операндов директивы DB:

  • неинициализированное начальное значение ? (знак неопределенного значения);

  • константное выражение со значением от -128 до 255.

X DB ?

По этой директиве переменной X отводится один байт памяти, в который ничего не записывается. Ассемблер запомнит адрес переменной и когда он встретится в тексте, заменит его на дан­ный адрес (выполнит трансляцию имен). Адрес ячейки, выделенной переменной с именем X, принято называть значе­нием имени X (в отличие от содержимого ячейки по этому адресу).
По описанию переменной ассемблер определяет, сколько байт занимает переменная в памяти. Этот размер называется типом переменной. Значение (адрес) и тип (размер) переменной однозначно определяют ячейку, обозна­чаемую именем.
С одного и того же адреса могут на­чинаться ячейки размером байт, слово или двойное слово, поэтому кроме начального адреса ячейки обычно требуется знать и ее размер. В языке ассемблера существует оператор типа:

TYPE <имя>


Значением оператора является размер (в байтах) ячейки, выделенной под переменную с указанным именем. Если переменная описана по директиве DB, то для ее имени значение оператора равно 1. В языке ассемблера есть стандартная константа с именем BYTE и значением 1:


ТУРЕ X = BYTE = 1


Для определения переменной с начальным значением в качестве операнда в директиве DB указывается выражение, которое ассемблер вычислит, и значение которого запишет в ячейку памяти. В наиболее распространенном случае начальное значение байтовой переменной задается в виде числа с величиной от -128 до 255:


A DB 254 ; 0FEh


В DB -2 ; 0FEh (256-2=254)

По каждой из директив ассемблер отводит один байт и записывает в него указанное число. Причем неотрицательные числа записываются как беззнаковые, а отрицательные записываются в дополнительном коде.


В качестве начального значения перемен­ной можно указать символ, записав его чис­ловой код, либо сам символ в кавычках. Например, в кодировке ASCII код символа «*» равен 2Ah, поэтому следующие две директивы эквивалентны:

S DB 2Ah


S DB "*"

Во втором случае ассемблер определит код символа и запишет его в ячейку памяти.


С помощью директивы DB можно описать двоично-десятичные числа:

PACK DB 01h, 23h ; число 123 в упакованном формате


UNPACK DB 1, 2, 3 ; число 123 в неупакованном формате

Для представления числа в упакованном формате необходимо указывать две цифры обязательно в шестнадцатеричной системе счисления для трансляции каждой цифры в тетрады.


Другим более удобным способом описания является применение ASCII-чисел – записи чисел в виде символьных строк (например, ‘123’). В кодировке ASCII символьные цифры от ‘0’ до ‘9’ имеют коды от 30h до 39h. Поэтому преобразования таких символьных чисел в двоично-десятичные выполняется путем выделения младшего полубайта кода, а обратное преобразование – путем сложением с 30h.
С помощью директивы DB можно описать массив. Например, байтовый массив A из 8 элементов с начальным значением 0 для каждого из них можно определить так:

A db 0, 0, 0, 0, 0, 0, 0, 0


Директиву можно записать иначе:


A DB 8 DUP(0)


В качестве операнда здесь использована конструкция повторе­ния, в которой сначала указывается коэффициент повторения, а затем служебное слово DUP (duplicate, копировать) и в круглых скобках повторяемая величина:


k DUP (p1, р2,..., pn)


где
k - константное выражение с положительным значением, n  1;


рi - любой допустимый операнд директивы DB (возможна вновь конструкция повторения).

Данная запись является сокращением для k раз повторенной последовательности указанных в скобках операндов.


Вложенность конструкций DUP позволяет задать многомерные массивы. Например, байтовая матрица А размера 5x10 (10 байт в строке, 5 строк) имеет вид:

A DB 5 DUP(10 DUP(?))





Download 1,87 Mb.

Do'stlaringiz bilan baham:
1   ...   15   16   17   18   19   20   21   22   ...   119




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