Лекции.Орг


Поиск:




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




 
 

Образ.exe программы в памяти [_], представленный на рис. 2.5, начинается с префикса программного сегмента PSP (Program Segment Prefix). Вслед за PSP располагаются сегменты программы. Сегментные регистры ES и DS автоматически инициализируются на начало PSP. Это даёт возможность, при сохранении значения одного из регистров, обращаться к нему в случае необходимости. В указатель команд IP загружается относительный адрес точки входа в программу, а в указатель стека SP - смещение конца сегмента стека.

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

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

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 AX, DataSg; инициализация сегмента данных

MOV DS, AX

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

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

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

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

CODESG ENDS

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

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

%TITLE “Шаблон стандартного формата.exe программ”

IDEAL

MODEL small

STACK 256

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

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

DATASEG

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

exCode DB 0

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

CODESEG

Start:

MOV AX, @DATA; Установка в DS адреса сегмента данных

MOV DS, AX;

MOV ES, AX; Установка ES = DS

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

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

Exit:

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

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

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

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






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


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


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

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

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

763 - | 718 -


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

Ген: 0.011 с.