Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Структура и образ памяти .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; Конец программы





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 644 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2307 - | 2069 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.