Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
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
Задание и использование счетчика адреса



Определение меток


Метки позволяют вам присваивать значения идентификаторам. Существует три способа определения меток:


  • использование операции :;

  • использование директивы LABEL;

  • использование операции :: (MASM 5.1).




Операция :


Операция : определяет ближнюю метку кода и имеет синтаксис:


имя:


где "имя" - это идентификатор, который вы не объявляли ранее в исходном коде. Ближние метки кода вы можете размещать на строке кода, где содержится только одна метка, или в начале строки перед инструкцией. Обычно ближние метки кода используются в качестве адреса перехода в инструкциях JMP и CALL в том же сегменте.


Если вы не используете директиву PUBLIC, чтобы метка была доступна из других файлов, она доступна только в текущем исходном файле.


Данная директива работает точно также, как при использовании директивы LABEL для определения ближней метки (NEAR). Например, A: эквивалентно A LABEL NEAR.


Приведем пример использования операции :


jne A ; пропустить следующую инструкцию
inc si
A: ; jne передает управление сюда




Директива LABEL


Директиву LABEL вы можете использовать для определения идентификатора заданного типа. Заметим, что синтаксис в режимах MASM и Ideal различен. В режиме Ideal задавайте:


LABEL имя сложный_тип


В режиме MASM используйте следующее:


имя LABEL сложный_тип


где "имя" - это идентификатор, который вы не определяли ранее в исходном файле. "Сложный_тип" описывает размер идентификатора и то, ссылается он на код или данные. См. эту главу, в которой можно найти дальнейшую информацию о сложных типах.


Если вы не используете директиву PUBLIC, чтобы метка была доступна из других файлов, она доступна только в текущем исходном файле.


Вы можете использовать директиву LABEL для доступа к элементам различного размера, которые содержатся в структуре данных. Этот принцип иллюстрируется следующим примером:


WORDS LABEL WORD ; доступ к "BYTES" как к
; WORDS
BYTES DB 64 DUP (0)
mov WORDS[2],1 ; запись в WORDS 1




Директива ::


Директива :: позволяет вам определить с областью действия, выходящей за рамки процедуры, в которой она находится. Это отличается от директивы : тем, что метки, определенные с помощью : имеют область действия только в текущей процедуре. Заметим, что :: отличается от : только когда вы задаете язык в операторе .MODEL. Приведем пример (файл DBLCOLON.ASM):


VERSION M510
.MODEL SMALL,C
.CODE


A PROC
NOP
ASINGLE:NOP
ADOUBLE::NOP
NOP
A ENDP


B PROC
NOP
JMP ASINGLE ; приведет к ошибке
JMP ADOUBLE
RET
B ENDP
END


<<<  Назад
 1  2  3 


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

8  В тему

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

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

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

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

Использование выражений и значений идентификаторов

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

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

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

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

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

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

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

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

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

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

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

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

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

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