- •5. Логические сегменты программы. Адресация сегментов
- •4 Типа сегментов:
- •6.Сегмент стека. Адресация стека, команды работы со стеком, изменение состояния стека.
- •7.Режимы адресации мп i8086.
- •9.Формат команд мп i8086
- •11.Система прерываний мп i8086. Понятие прерывания, вектора прерывания. Таблица векторов прерываний.
- •12.Механизм обработки прерываний в вычислительных системах на базе мп i8086.
- •13.Внешние (аппаратные) прерывания.
- •14.Логическая структура контроллера прерываний.
- •16.Особенности программ в сом-формате. Структура, хранение на диске, загрузка в память,варианты завершения.
- •17.Особенности программ в ехе-формате. Структура, хранение на диске, загрузка в память,варианты завершения.
- •18.Распределение адресного пространства (карта памяти)
- •19.Управление памятью в реальном режиме
- •20.Организация взаимодействия мп i8086 с клавиатурой
- •22. Особенности мп i80386. Виды организации логического пространства
- •23.Структура кода команды мп i80386:
- •24. Регистровая модель мп i80386
- •25.Регистры флагов:
- •26.Общая структура кода команды мп 80386
- •27. Методы адресации i80386:
- •32.Страничная организация памяти:
- •34. Средства защиты по привелегиям:
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) если требуется освободить блок памяти либо от дочерней программы, либо
от самой себя (программа самовыгружается – для резидентных программ)