Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Использование выражений и значений идентификаторов - Программирование от RIN.RU
Использование выражений и значений идентификаторов



Регистры


Имена регистров представляют регистры процессоров семейства 89086 и могут использоваться в составе выражения, например:


5+ax+7


При вычислении данного выражения получается значение ax+12, так как AX - это зарезервированный в Турбо Ассемблере идентификатор регистра. Идентификаторы регистров перечислены в следующем списке:


8086AX, BX. CX, DX, SI, DI, DP, CS, DS, ES, SS
80186,80286то же, что и для 8086
80386регистры 8086, плюс EAX, EBX, ECX, EDX, ESI
EDI, EBP, PS, GS, CR0, CR3, CR3, DR0, DR1,DR@, DR#, DR6, DR7
80486регистры процессора 80386, плюс TR3, TR4, TR5



Стандартные значения идентификаторов


Некоторые идентификаторы всегда представляют конкретные значения, и для того, чтобы их использовать, определения не требуется. Эти идентификаторы и их значения перечислены в следующей таблице:


Стандартные идентификаторы
ИдентификаторЗначение
$ Значение текущего счетчика адреса программы.
NOTHING0
?0
UNKNOWN0
BYTE1
WORD2
DWORD4
PWORD6
FWORD6
QWORD8
TBYTE10
NEAR0ffffh
FAR0fffeh
PROC0ffffh или 0fffeh, в зависимости от текущей модели.
CODEPTR2 или 4, в зависимости от текущей модели.
DATAPTR2 или 4, в зависимости от текущей модели.



Значения простых идентификаторов


Турбо Ассемблер возвращает для идентификаторов, которые используются сами по себе, следующие значения:


Значения идентификаторов, используемых непосредственно
ВыражениеЗначение
имя_адресаВозвращает адрес.
имя_числового_выраженияВозвращает значение числового выражения.
имя_таблицы | имя_элемента_таблицы Возвращает значение по умолчанию элемента таблицы, заданное в определении таблицы.
структура/имя_элемента_таблицы Возвращает смещение элемента в таблице или структуре (только в режиме MASM).
имя_записиВозвращает маску, в которой биты, зарезервированные для представления битовых полей в определении записи, равны 1, а остальные равны 0.
имя_записи <.>Возвращает начальное значение экземпляра записи, которое имела бы эта запись, если бы она описывалась с текстом, заключенном в угловые скобки (подробности содержатся здесь).
имя_записи [.]Аналогично предыдущему.
имя_поля_записиВозвращает число бит, на которое смещена запись от младшего бита записи (значение сдвига).
имя_перечисленияВозвращает маску, в которой биты, требуемые для представления максимального значения в определении перечисления равны 1, а остальные равны 0.
имя_сегментаВозвращает значение сегмента.
имя_группыВозвращает значение группы.
имя_структуры/объединенияВозвращает размер в байтах структуры или объединения, но только в том случае, если этот размер равен 1, 2 или 4; в противном случае возвращается 0.
имя_типа Если тип определяется как синоним структуры или объединения, то возвращаемое значение то же, что и у структуры или объединения. В противном случае возвращается размер типа (с 0ffffh для меток short и near и 0fffeh для меток far).



Все другие типы идентификаторов возвращают значение 0.


Заметим, что когда в выражении вы используете имя текстовой макрокоманды, Турбо Ассемблер подставляет вместо идентификатора текстовой макрокоманды значение текстовой макрокоманды. Аналогично, когда вы используете имя псевдонима, Турбо Ассемблер подставляет вместо идентификатора псевдонима значение идентификатора, которое представляет псевдоним.


Унарная операция LENGTH


Унарная операция LENGTH возвращает информацию о счетчике или числе величин, представляющих идентификатор. Возвращаемое фактическое значение зависит от типа идентификатора, что показано в приведенной ниже таблице:


Значения, возвращаемые операцией LENGTH
ВыражениеЗначение
LENGTH имя_адреса Возвращает счетчик элементов, выделяемых при определении имени адреса.
LENGTH имя_элемента_структуры/объединения Возвращает счетчик элементов, выделенных при определении элемента (только режим MASM).



При применении ее ко всем другим типам идентификаторов операция LENGTH возвращает значение 1. Приведем некоторые примеры использования операции LENGTH:


MSG DB "Hello"
array DW 10 DUP (4 DUP (1),0)
numbrs DD 1,2,3,4
lmsg = LENGTHG msg ; =1, нет операции DUP
larray = LENGTH nsg ; =10, счетчик повторения DUP
lnumbrs = LENGTH numbrs ; =1, нет операции DUP




Унарная операция SIZE


Унарная операция SIZE возвращает информацию о размере выделенного элемента данных. Возвращаемое значение зависит от типа заданного идентификатора. Список доступных для операции SIZE значений приведен в следующей таблице:


Значения, возвращаемые операцией SZIE
ВыражениеЗначение
SIZE имя_адресаВ режиме Ideal возвращается фактическое число байт, выделенных для переменных данных. В режиме MASM возвращается размер подтипа имя_адреса (UNKNOWN=0, BYTE=1, WORD=2, DWORD=4, PWORD=FWORD=6, QWORD=8, TBYTE=10, SHORT=NEAR=0ffffh, FAR=0fffeh, адрес структуры = размеру структуры), умноженный на значение LENGTH имя_адреса.
SIZE имя_структуры/объединенияВозвращает число байт, требуемых для представления структуры или объединения.
SIZE имя_таблицыВозвращает число байт, необходимых для представления таблицы.
SIZE имя_элемента_таблицы/структурыВозвращает число байт, необходимых для представления общего числа бит, зарезервированных в определении записи: 1, 2 или 4.
SIZE имя_перечисления Возвращает число байт, необходимых для представления максимального значения, присутствующего в перечислении: 1, 2 или 4.
SIZE имя_сегментаВозвращает размер сегмента в байтах.
SIZE имя_типаВозвращает число байт, необходимых для представления названного типа, при этом ближние и дальние метки возвращают значение 0ffffh, а дальние - 0fffeh.



При применении ко всем другим типам идентификаторов операция SIZE возвращает значение 0.


Унарная операция WIDTH


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


Значения WIDTH
ВыражениеЗначение
WIDTH имя_записиВозвращает общее число бит, зарезервированных в определении записи.
WIDTH имя_поля_записиВозвращает число бит, зарезервированных для поля в определении записи.
WIDTH имя_перечисленияВозвращает число бит, необходимых для представления максимального значения в определении enum.



<<<  НазадВперед  >>>
 1  2  3  4  5  6  7 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Начало работы на Турбо Ассемблере

Использование директив и параметров

Общие принципы программирования

Объектно-ориентированное программирование

Директивы выбора процессора

Использование моделей памяти программы и сегментации

Определение типов данных

Задание и использование счетчика адреса

Описание процедур

Управление областью действия идентификаторов

Определение данных

Расширенные инструкции

Использование макрокоманд

Использование условных директив

Интерфейс с компоновщиком

Генерация листинга

Интерфейс Турбо Ассемблера и Borland C++

Интерфейс Турбо Ассемблера с Турбо Паскалем

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь