Искать реферат        
Рефераты на 5 с плюсом
С нашим сайтом написать реферат проще простого

Программы

Категория: Компьютерные науки     версия для печати   

Страница: [1] [2] [3] [4] [5]

Псевдооператоры (директивы).

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

[] Псевдооператор [] [; комментарий].

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

Псевдооператоры определения идентификаторов. Они позволяют выражения присвоить символическое имя, т.е. идентификатор. В качестве выражения может быть константа, адрес, другое символическое имя. После такой директивы этот идентификатор можно использовать в любом месте где необходимо указать выражение. Два оператора: аEQU и =, эти псевдооператоры подобные, но между ними есть существенная разница: а

Помечены знаком "=" идентификаторы можно переопределять, а определенные псевдооператор EQU нельзя. Псевдооператор EQU можно использовать как с числовыми такие с текстовыми выражениями, а псевдооператор "=" только с числовыми. Примеры:

К1аEQU 1024 - присвоение имени константе; T_1аEQU DS: [BP] [SI]. Комбинации адресов DS: [BP] [SI] присваивается символическое имя, повсюду в программе вместо комбинации этих адресов можно использовать T_1. В_Т EQU B_T1, определение синонима, то есть имя В_Т будет иметь то же значение как и изменение В_Т1. REG1аEQU CX - присвоение имени регистра. При использовании псевдооператора "=" в качестве выражения могут выступать математические преобразования. В директиве EQU также могут быть простые математические преобразования, они будут выполнены ассемблером при трансляции. Например: CON1аEQU CON2 * 2 CONS1 = 24 CONS1 = 29 CONS1 = CONS1 +1.

Псевдооператоры определения данных. В ассемблере можно использовать ячейки памяти для сохранения именованных данных, т.е. переменных. Наиболее используются такие псевдооператоры для резервирования памяти: 1) DB - Define Byte, 2) DW - Define Word, 3) DD - Define Double Word, 4) DQ, 5) DF; 6) DT. В основном они различаются по объему памяти, который резервируется. Псевдооператоры определения данных имеют такой формат записи: имя псевдооператор выражение [... ...]. В качестве выражения зачастую может быть константа. Псевдооператор DB резервирует память объемом 1 байт. DW - объемом одно слово. DD - двойное слово. DQ - 2пподвийни слова. DF - 6 байт. DT - 10 байт. Например переменная xyz DW 2S - резервирует для переменной (). Треба помнить о макс. Vпмин. значение данных, которые могут быть размещены в отведенной памяти в каждом из этих случаев, так например: макс. значения байта без знака не может превышать 255, макс. значения байта со знаком 127, а мин. - 128. Псевдооператоры можно использовать для создания в памяти таблиц, например: А_ТАВ DB 3, 2, 4, 6, 8, 0, 0, 0

DB 5, 4, 2, 1

Такой псевдооператор DB резервирует в памяти место для 12 значений элементов таблицы А_ТАВ каждый размером в байт. Можно указывать любое количество элементов таблицы строке, важно, чтобы они поместились в 132 позиции строки. В ассемблере является операция DUP, позволяющая сокращать задания таблиц в случае одинаковых элементов. Данный псевдооператор можно записать так:

А_ТАВ DB 3, 2, 4, 6, 8, 3 DUP (0),

DB 5, 4, 2, 1

В памяти можно резервировать память для переменной, но конкретного значения ей не предоставлять. Для этого в поле выражения надо указать знак. Пример: X_1аDB? X_2 DW? Такие псевдооператоры резервируют в памяти место байту и слова, но начального значения им не придают. X_1аi X_2 при этом не будут содержать никаких специфических значений, даже (0). Можно зарезервировать в памяти место для таблицы. Например: А_ТАВ DB 12 DUP (3) резервирует место для таблицы из 12 элементов. Можно в качестве значения переменной задавать строку символов, для этого текст заключается в апострофы.

Псевдооператоры определение сегмента и процедуры. Для определения сегмента используются псевдооператоры: SEGMENTаi ENDS. Это псевдооператоры делят исходную программу на сегменты. Они соответственно отмечают начало и конец сегмента, но вины не сообщают ассемблер какого рода сегмент должен быть определен. Для этого используется псевдооператор ASSUME, он имеет такую форму записи: ASSUME регистр сегмента: имя сегмента [, ... ....] это регистр сегмента - это имя одного из сегментных регистров CS, DS, SS, ES. Если П 80386 и выше то там еще будет FS, GS. Имя сегмента это имя которое указывается в псевдооператор SEGMENT. Этот псевдооператор помогает ассемблеру превращать метки в адреса, он сообщает, каким регистром хотите скористяватися при адресации меток. Например: ASSUME DS: DSEG - значит, если при трансляции программы будет упомянута метка из сегмента DSEG, т.е. регистр DS будет всегда указывать на начало сегмента DSEG. Почти всегда его помещают после псевдооператора SEGMENT. Заметим, что адрес начала сегмента требуется явно загрузить в DS. Псевдооператоры PROG и ENDP определяют начало и конец процедуры. Каждая процедура повинн0ппочинатись

Страница: [1] [2] [3] [4] [5]

версия для печати

Читайте также:
Информационное обеспечение в процессе управления
Государство скифов
Альтернативная стоимость производства
Уильям Шекспир
Позитивная экономика