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




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


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


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


Идентификатор счетчика адреса $


Предопределенный идентификатор $ представляет текущий счетчик адреса. Счетчик адреса состоит из двух частей: сегмента и смещения. При ассемблировании счетчик адреса представляет собой смещение в текущем сегменте.


Счетчик адреса - это адрес адрес, который увеличивается и отражает текущий адрес при ассемблировании каждого оператора исходного файла. Например:


helpkMessage DB "это справочное сообщение программы"
helpLength = $ - helpMessage


Когда эти две строки ассемблируются, идентификатор helpLength равен длине справочного сообщения.


Директивы счетчика адреса $


В Турбо Ассемблере предусмотрено несколько директив, устанавливающий счетчик инструкций. Эти директивы описываются в следующем разделе. Заметим, что все эти директивы работают как в режиме MASM, так и в режиме Ideal.


Директива ORG


Вы можете использовать директиву ORG, чтобы установить счетчик адреса в значение текущего сегмента. Директива ORG имеет следующий синтаксис:


ORG выражение


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


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


Директиву ORG можно использовать для того, чтобы связать метку с конкретным адресом. Директива ORG может также использоваться для задания начального адреса файлов .COM. Приведем примеры ее использования:


PROG SEGMENT
ORG 100h ; начальное смещение файла .COM
start:
;
; остальная часть программы .COM
PROG ENDS
end start


Приведем другой пример:


PROG SEGMENT
ASSUME cs:PROG, ds:PROG, ss:PROG, es:NOTHING
ORG 20h
EnvPtr label word ; определить метку для доступа
; к слову в PSP, которое ука-
; зывает на сегмент, содержа-
; щий блок операционной среды
; (он обычно освобождается для
; создания более компактной
; резидентной программы)
ORG 80h
CmdLength lebel byte ; определить метку для доступа
; к длине командной строки


ORG @1h
CmdLine label byte ; определить метку для доступа
; к тексту командной строки


ORG 0100h
start:


; освободить блок операционной среды


mov es, EnvPtr ; ES -> блок операционной среды
mov ah, 49h ; функция 49h: освободить блок
; памяти
int 21h ; вызвать MS-DOS
jc error_ENV ; ошибка освобождения EnvBlock?


; анализ командной строки


mov al, CmdLength ; длина командной строки
or al,al ; проверка на 0
jz no_params ; нет параметров
mov cl,al ; поместить длину в cl
mov ch,0
mov si,offset CmdLine ; адрес командной строки
mov al," " ; символ для поиска
repne scasb ; поиск первого пробела
;
; остальная часть файла .COM резидентной программы:
PROG ENDS
end start




Вперед  >>>
 1  2  3 


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

8  В тему

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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