Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Директивы

Читайте также:
  1. Директивы ЕС о консолидированной отчетности. Состав и структура консолидированной отчетности.
  2. Основные директивы препроцессора. Макросы

Ассемблер имеет ряд операторов, которые позволяют упpавлять процессом ассемблирования и формирования листинга. Эти операторы называются псевдокомандами или директивами. Они действуют только в процессе ассемблирования программы и не генерируют машинных кодов.

 

Директива PAGE.

В начале программы можно указать количество строк, распечатываемых на одной странице, и максимальное количество символов на одной строке. Кроме того можно заставить ассемблер сделать прогон листа на конкретной строке, например, в конце сегмента. Для этого необходимо записать директиву PAGE без операндов.

 

Директива TITLE.

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

 

Директива SEGMENT

Любые программы содержат по крайней мере один сегмент - сегмент кода. В некоторых программах используется сегмент для стековой памяти и сегмент данных для определения данных. Асcемблерная директива для описания сегмента SEGMENT имеет следующий формат:

Имя Директива Операнд
имя SEGMENT [параметры]
.
имя ENDS

Имя сегмента должно обязательно присутствовать, быть уникальным и соответствовать соглашениям для имен в ассемблере.

 

Директива ENDS

Обозначает конец сегмента. Обе директивы SEGMENT и ENDS должны иметь одинаковые имена.

Директива PROC

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

имя-сегмента SEGMENT PARA
имя-процедуры PROC FAR Сегмент
. кода
. с
. одной
RET процедурой
имя-процедуры ENDP
имя-сегмента ENDS

Имя процедуры должно обязательно присутствовать, быть уникальным и удовлетворять соглашениям по именам в ассемблере.


Директива ENDP

Определяет конец процедуры и имеет имя, аналогичное имени в директиве PROC.

 

Директива ASSUME

Процессор использует регистр SS для адресации стека, регистр DS для адресации сегмента данных и регистр CS для адресации cегмента кода. Ассемблеру необходимо сообщить назначение каждого сегмента.

 

Директива END

Как уже показано, директива ENDS завершает сегмент, а директива ENDP завершает процедуру.

15. Инициализация программы

Существует два основных типа загрузочных программ: EXE и COM. Рассмотрим требования к EXE-программам. DOS имеет четыре требования для инициализации ассемблерной EXE-программы:

1) указать ассемблеру, какие cегментные регистры должны соответствовать сегментам,

2) сохранить в стеке адрес, находящийся в регист ре DS, когда программа начнет выполнение

3) записать в стек нулевой адрес

4) загрузить в регистр DS адрес сегмента данных.
5)Выход из программы и возврат в DOS сводится к использова нию команды RET.

1. ASSUME - это ассемблерная директива, которая устанавливает для ассемблера соответствие между конкретными сегментами и сегментными регистрами; Ассоциируя сегменты с сегментными регистрами, ассемблер сможет определить смещения к отдельным областям в
каждом сегменте.

2. Загрузочному модулю в памяти непосредственно предшествует 256-байтовая (шест.100) область, называемая префиксом программного сегмента PSP. Программа загрузчика использует регистр DS для установки адреса начальной точки PSP. Пользовательская программа должна сохранить этот адрес, поместив его в стек. Позже, команда RET использует этот адрес для возврата в DOS.
3. В системе требуется, чтобы следующее значение в стеке являлось нулевым адресом. Для этого
команда SUB очищает регистр AX, вычитая его из этого же регистра AX, а команда PUSH заносит это значение в стек.
4. Загрузчик DOS устанавливает правильные адреса стека в регистре SS и сегмента кодов в регистре CS. Поскольку программа загрузчика использует регистр DS для других целей, необходимо инициализировать регистр DS двумя командами MOV.
5. Команда RET обеспечивает выход из пользовательской программы и возврат в DOS, используя для этого адрес, записанный в стек в начале программы командой PUSH DS.

 




Дата добавления: 2015-04-22; просмотров: 16 | Поможем написать вашу работу | Нарушение авторских прав

1 | 2 | 3 | 4 | <== 5 ==> | 6 | 7 | 8 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав