русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Директивы STARTUPCODE и EXITCODE.


Дата добавления: 2014-11-27; просмотров: 1261; Нарушение авторских прав


 

Директива STARTUPCODE выполняет код инициализации программы, зависящий от текущей модели и операционной системы.

Синтаксис:

STARTUPCCODE ;для режима IDEAL

или

.STARTUP ; для режима Masm.

STARTUPCODE инициализирует регистры DS, SS и SP. Для моделей SMALL, MEDIUM, COMPACT, LARGE, HUGE и TRANSCAL TASM устанавливает DS и SS на @data, а SP - на вершину стека. При использовании моделей TINY и TCHUGE директива STARTUPCODE не изменяет содержимого сегментных регистров.

Идентификатор @Startup автоматически помещается перед начальным кодом, генерируемым директивой STARTUP, и представляет собой метку ближнего типа, указывающую на начало программы. Таким образом, в начале программы не нужно ставить метку (как в примере раздела 4.7, где на начало программы указывает метка Begin). Также не нужно указывать эту метку в директиве END.

 

Для автоматического создания в программе кода завершения программы, требуемого установленным типом операционной системы, предназначена директива EXITCODE. Ее можно указывать в нескольких местах программы, в которых необходимо указать точку выхода. Синтаксис в режиме IDEAL:

EXITCODE [код_возврата] ;для режима IDEAL

.EXIT [код_возврата] ; для режима Masm.

Необязательный параметр код_возврата - выражение, результат вычисления которого возвращается операционной системе по завершении работы программы. По умолчанию TASM присваивает коду возврата значение, находящееся в регистре AX.

Таким образом, программа, представленная в разделе 4.7, может быть изменена:

IDEAL ;включаем режим IDEAL Tasm'а

DOSSEG ; директива упорядочивания сегментов

MODEL SMALL ; модели кода и данных ближнего типа

STACK 200h ; стек объемом 512 байт

DATASEG ; начало сегмента данных

DisplayString DB 13,10 ; описание какой-то переменной

CODESEG ; начало сегмента кода



STARTUPCODE ;директива, указывающая на начало программы

.

.

.

EXITCODE ;директива завершения программы

END ;директива, отмечающая конец исходного кода

 

Сравним с разделом 4.7. Видно, что программа стала более короткой и более простой для понимания и запоминания.

 

Контрольные вопросы и задания

 

1. Для сегментов кода, данных и стека даны имена CDSEG, DATSEG и STKSEG соответственно. Сформируйте директиву ASSUME:

1) ASSUME CX:CDSEG, DX:DATSEG, SP:STKSEG;

2) ASSUME CS=CDSEG, DS=DATSEG, SS=STKSEG;

3) ASSUME CS:CDSEG, DS:DATSEG, SS:STKSEG.

 

2. Какая директива является закрывающей для директивы SEGMENT ?

1) ENDP 2) ENDS 3) END.

 

3. Для нормальной работы программы необходимо предварительно:

1) Инициализировать все используемые программой регистры;

2) Сохранить в стеке все используемые программой регистры;

3) Выполнить сначала 1), потом 2);

4) Выполнить сначала 2), потом 1).

 

4. Для определения массива констант от 0 до 9 в формате слова, с именем VAR в сегменте данных необходимо написать конструкцию:

1) VAR DW 0,1,2,3,4,5,6,7,8,9

2) VAR DB 0,1,2,3,4,5,6,7,8,9

3) VAR DW 0..9

 

5. Для внесения дополнительного сегмента данных DOPSEG в программу необходимо включить в ASSUME следующую конструкцию (сегмент данных имеет имя DATSEG):

1) ES=DOPSEG 2)AX:DOPSEG 3)ES:DOPSEG 4)DS:DATSEG, DOPSEG

 

6. Какая директива является закрывающей для всей программы ?

1) ENDP 2) ENDS 3) END

 

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

1) RETN 2) MOV 3) PUSH 4) ASSUME

 

8. Для определения константы символьного типа с именем SYMB и содержащую слово «Привет», в сегменте данных необходимо написать конструкцию:

1) SYMB DW Привет

2) SYMB DB 'Привет'

3) SYMB DD 'Привет'

 

9. Какое значение параметра 'выравнивание' директивы SEGMENT указывает на необходимость размещения сегмента на ближайшем свободном адресе?

1) BYTE 2) WORD 3) PARA 4) PAGE

 

10. Какое значение параметра 'выравнивание' директивы SEGMENT указывает на необходимость размещения сегмента по заданному адресу?

1) PUBLIC 2) STACK 3) AT 4) COMMON

 

11. Какая директива в режиме Ideal указывает на начало программы?

1) BEGIN 2) END 4) STARTUPCODE

12. Какая модель памяти не может использоваться для создания exe-файла?

1) TINY 2) SMALL 3) для создания exe-файла могут использоваться

все модели

13. Какая директива используется для сокращенного описания сегмента кода?

1) CODESEG 2) DATASEG 3) STACK




<== предыдущая лекция | следующая лекция ==>
Директивы упрощенного описания сегментов. | Регистровая адресация


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.002 сек.