Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Распечатка.docx
Скачиваний:
3
Добавлен:
24.04.2019
Размер:
136.27 Кб
Скачать

16.Особенности программ в сом-формате. Структура, хранение на диске, загрузка в память,варианты завершения.

Особенности:

- минимальная модель памяти

- размер < 64 кб (сегмент)

- абсолютный образ памяти

- не содержит заголовков и настроечной информации, только машинный код

- не контролируется содержимое

Загружается в память с помощью системного загрузчика XEC.

Общая структура:

<имя сегмента кодов>SEGMENT<параметры>

ASSUME СS:<имя сегм. кодов> DS: :<имя сегм. Дан.>SS:<имя сегмента стека> ES: nothing

ORG 100h (явно задает смещение, резервирование под префикс первой инструкции)

<Имя процедуры> PROC NEAR

;код программы

;завершение процедуры

<имя процедуры> ENDP

; определение данных

<Имя сегмента кодов> ENDS

END <имя программы>

Если определение данных требуется сделать в начале программы, то первой инструкцией должна быть mp main

Варианты завершения:

- инструкция RET

- INT 20h в конце процедуры

- ф-ция 4ch прерывания INT 21h позволяет передать в вызываемую процедуру код завершения

17.Особенности программ в ехе-формате. Структура, хранение на диске, загрузка в память,варианты завершения.

- малая, средняя, большая модель памяти

- содержит любое количество сегментов, лед. может иметь любой размер

- имеет спец. заголовок, кот. используется системным загрузчиком

при запуске программы

Загружается в память с помощью системного загрузчика EXEC.

При загрузке программе выделяется 2 блока памяти, один под переменные окружения, другой для самой программы.

Структура:

<имя сегмента стека> SEGMENT <параметры>

; определение размера стека

<имя сегмента стека> ENDS

<имя сегмента данных> SEGMENT <параметры>

; определение данных

<имя сегмента данных> ENDS

<имя сегмента кодов> SEGMENT <параметры>

ASSUME СS:<имя сегм. кодов> DS: <имя сегм. Данн.> SS:<имя сегмента стека> ES: nothing

<имя процедуры> PROC FAR

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

; код

; завершение

<имя процедуры> EDNP

<имя сегмента кодов> ENDS

END <имя основной процедуры>

Инициализация:

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

Варианты завершения:

- FAR RET

- 4ch int 21h

18.Распределение адресного пространства (карта памяти)

Для пользовательских программ выделяется память блоками

размером 0-FFFFh $ в области транзитных программ.

Учет свободной и занятой памяти ведется с помощью спец. блоков MCB (Memory Control locks)=16байт

Размещается непосредственно над тем блоком памяти, кот. он контролирует

Адрес первого MCB хранится в области данных ОС и может

Быть получен с помощью ф-ции 52h прерывания int 21h

19.Управление памятью в реальном режиме

1) 48h – выделяет блок памяти

2) 49h освобождает блок памяти

3) 4Ah – изменяет размер блока памяти

Эти ф-ции могут быть использованы программой в след. случаях:

1) когда требуется выделить доп.

память под динамические данные

2) если требуется сократить размер выделенного блока до реального

размера программы,

3) если требуется освободить блок памяти либо от дочерней программы, либо

от самой себя (программа самовыгружается – для резидентных программ)