Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Структура и образ памяти .com программы.




В MS DOS существует два типа исполняемых файлов: программы с расширением.com и.exe. Для исполняемых программ загружаемых в память DOS создает специальный блок размером в 256 байт (100h), называемый префиксом программного сегмента (PSP - Program Segment Prefix). Структура PSP показана в таблице 2.4.

Таблица 2.4.

Структура префикса программного сегмента [].

Смещение Назначение
00 - 15 Указатели и векторы адресов DOS
16 – 2B Зарезервировано
2C – 2D Адрес сегмента текущей строки описания конфигурации
2E – 5B Зарезервировано
5C – 7F Блоки управления файлами 1 и 2, используемые в первых версиях DOS
80 – FF Область переноса данных и копия текущего буфера команд.

Образ памяти программы типа.com показан на рис. 2.4. Программа типа.com содержит один сегмент, включающий все компоненты программы: PSP, программный код, данные и стек. Поэтому размер.com программы не может быть больше 64 кбайт минус размер PSP и два резервных байта в конце стека. После загрузки программы все сегментные инициализируются базовым адресом PSP. Пространство кодов начинается со смещением 100h, данные непосредственно следуют за кодами. Указатель стека автоматически инициализируется числом FFFEh.

 
 

В Листингах 2.1. и 2.2. рассматриваются шаблоны, содержащие только самое необходимое для написание.com программы.

Листинг 1.2. Шаблон стандартного формата.com программы.

TITLE “Шаблон упрощенного формата.com программ”

;Директивы INCLUDE “filename”

;Макроопределения EQU и =

DATASG SEGMENT Para ‘Data’

;Если программа будет прервана по ошибке, то соответствующий код ошибки записывается в exCode и выполняется команда перехода на метку Exit.

exCode DB 0

; описания других переменных

DATASG ENDS

STACKSG SEGMENT Para STACK ‘Stack’

db 100h dup(?)

STACKSG ENDS

CODESG SEGMENT Para ‘Code’

ASSUME CS:CODESG, DS:DATASG, SS:STACKSG

Start:

;тело программы, вызовы подпрограмм и т.п.

MOV AH, 004Ch; Функция DOS выхода из программы

MOV AL, [exCode]; Возврат значения кода выхода

INT 21h; Вызов DOS. Останов программы.

END Start; Конец программы

Листинг 1.3. Шаблон упрощенного формата.com программы.

%TITLE “Шаблон упрощенного формата.com программ”

IDEAL

MODEL tiny

;Директивы INCLUDE “filename”

;Макроопределения EQU и =

DATASEG

;Если программа будет прервана по ошибке, то соответствующий код ошибки записывается в exCode и выполняется команда перехода на метку Exit.

exCode DB 0

;Описания других переменных

CODESEG

ORG 100h; Cстандартный адрес начала.com программы

Start:

;Тело программы

Exit:

MOV AH, 004Ch; Функция DOS выхода из программы

MOV AL, [exCode]; Возврат значения кода выхода

INT 21h; Вызов DOS. Останов программы.

END Start; Конец программы






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных