Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операторы для структур




Синтаксис  
указательЭлемента.ИмяПоля Выбирает элемент структуры.
MASK ПолеЗаписи MASK Запись Возвращает битовую маску для поля записи или всей записи.
WITH ПолеЗаписи WITH Запись Возвращает длину поля записи или всей записи в битах.

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

Оператор получения смещения выражения. позволяет получить значение смещения выражения (рис. 13) в байтах относительно начала того сегмента, в котором выражение определено.

Оператор переопределения типа. Оператор переопределения типа ptr применяется для переопределения или уточнения типа метки или переменной, определяемых выражением. Тип может принимать одно из следующих значений: byte, word, dword, qword, tbyte, near, far. Позволяет вызвать не весь операнд, а только его часть.

Синтаксис  
сегмент:выражение группа:выражение Переопределение сегмента или группы.  
Dx? Инициализация с неопределенными данными (где Dx - это DB, DD, DF, DP, DQ, DT или DW).
счетчик DUP (выражение) Повторяет операцию выделения памяти для выражения столько раз, сколько задано значением "счетчик".

Оператор переопределения сегмента. Оператор переопределения сегмента: (двоеточие) заставляет вычислять физический адрес относительно конкретно задаваемой сегментной составляющей: “имя сегментного регистра”, “имя сегмента” из соответствующей директивы SEGMENT или “имя группы”.

 

Приоритеты операторов. Как и в языках высокого уровня, выполнение операторов ассемблера при вычислении выражений осуществляется в соответствии с их приоритетами (см. таблицу). Операции с одинаковыми приоритетами выполняются последовательно слева направо. Изменение порядка выполнения возможно путем расстановки круглых скобок, которые имеют наивысший приоритет.

Команды. В языке ассемблера командой называется оператор программы, который непосредственно выполняется процессором после того, как программа будет скомпилирована в машинный код, загружена в память и запущена на выполнение (т.е. на этапе выполнения программы). Любая команда состоит из четырех основных частей:

· необязательной метки;

· мнемоники команды, которая присутствует всегда;

· одного или нескольких операндов (как правило, они присутствуют в любой команде, хотя есть ряд команд, для которых операнды не требуются);

· необязательного комментария.

Любая строка исходного кода программы может также содержать только метку или только комментарий. Стандартный формат команды ассемблера

Метка. Метка является обычным идентификатором, с помошью которого в программе помечается некоторый участок кода или данных. В процессе обработки исходного текста программы ассемблер назначает каждому оператору программы числовой адрес. Таким образом, метке, размешенной непосредственно перед командой, также назначается адрес этой команды. Аналогично, если разместить метку перед переменной, ей будет назначен адрес этой переменной.

Для чего вообще нужны метки? Ведь в программах на языке ассемблера можно непосредственно использовать числовые адреса. Например, приведенная ниже команда загружает 16-разрядное число, расположенное по адресу0020, в регистр ax.

mov ах,[0020]

Очевидно, что при вставке в программу новой переменной, адреса всех последующих за ней переменных автоматически изменятся. Поэтому программист в каждом подобном случае должен вручную скорректировать в программе ссылки наподобие [0020].

Разумеется, что подобный стиль программирования создает массу неудобств и эффективность его крайне низкая. Следовательно, если присвоить переменной, расположенной по адресу 0020h, метку, то ассемблер будет автоматически подставлять ее значение при компиляции. Теперь приведенную выше команду можно переписать так:

myVariable BYTE 4; myVariable = 4

mov ax,myVariable; myVariable загружена в регистр ax

Метки кода. Метки, расположенные в коде программы (т.е. в сегменте кода, где размешаются команды процессора), должны заканчиваться символом вертикального двоеточия (:). Подобные метки обычно используются для указания участка программы, которому будет передано управление в командах перехода или организации циклов. Например, приведенная ниже команда безусловного перехода JMP (от англ. "jump") передает управление команде, помеченной кaк target, в результате чего в программе создается цикл:

target:

mov ax,bx

jmp target

Метка в коде программы может находиться на одной строке с командой, либо занимать самостоятельную строку:

target: mov ax,bx

либо так:

target:

mov ax,bx

Метки данных. При использовании метки в сегменте данных программы (т.е. там, где размещаются и определяются переменные), она не должна заканчиваться символом вертикального двоеточия. Ниже приведен пример определения переменной под именем first:

first BYTE 10

При выборе имен меток следует учитывать общие правила для имен идентификаторов. Кроме того, имя, выбранное для метки, должно быть уникальным в пределах одного исходного файла программы. Например, если в файле с исходным кодом вашей программы уже есть метка с именем first, вы не можете присвоить это же имя другой метке, расположенной в том же файле.




Поделиться с друзьями:


Дата добавления: 2014-10-17; Просмотров: 407; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.