Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программы с несколькими сегментами команд.
Рассмотрим программы с расширением ЕХЕ. Любая программа, загружаемая в память, включает три компонента: - окружение ENVIRONMENT - префикс программы PSP - собственно программу, в случае ЕХЕ может состоять из нескольких сегментов. Поскольку окружение и сама прграмма (включая РSР) рассматриваются DOS,как отдельные блоки памяти, и та, и другая структура предворяются блоками управления памяти. МСВ-, размером 16 байт. С помощью этих блоков DOS ведёт учёт свободной и занятой памяти.
CS,SS,IP и SP инициализируются заголовками из ЕХЕ-файла. Рассмотрим ….СОМ программы. В этом случае единственный сегмент содержит все компоненты программы. -PSP -коды команд -данные -стек В терминах языков высокого уровня это соответствует минимальной или крошечной модели памяти. Преимущество.СОМ прогр. перед ЕХЕ- компакность. Как правило резидентная программа пишется в формате.СОМ.
Формат MCB блока
Если команда помещается в один сегмент команд и данные в одном сегменте данных, то такая.ЕХЕ программа принадлежит к малой модели памяти. Если требуется увеличить объём команд, то необходимо организовать несколько сегментов команд. Программа с несколькими сегментами команд и одним сегментом данных относится к средней модели памяти. В программе, содержащей несколько сегментов команд, должны быть команды либо перехода из одного сегмента в другой, либо вызов процедуры из другого сегмента. Любое обращение к другому сегменту команд носит название межсегментного или дальнего. Рассмотрим пример программы с двумя сегментами команд. Пусть основная программа в одном сегменте, а процедура-подпрограмма в другом.
text1 segment ‘code’ assume CS:text1, DS:data main proc mov AX,data mov DS,AX . . call far ptr subr1 . . call far ptr subr2 . . main endp text ends text2 segment ‘code’ assume CS:text2, DS:data subr1 proc far . . subr1 endp ; subr2 proc far . . subr2 endp text2 ends
; data segment … DB …DW . . data ends stack segment stack ‘stack’ DW 128 dup(0) stack ends end main
Сегмент команд с главной процедурой получил название text1. Процедуры subr1 и subr2 объявлены с описанием far, а её вызовы в главной процедуре сопровождаются описаниями far ptr (far pointer- дальний указатель). Вызов не call, а call far ptr.
Смещение код команды адрес проц. subr1 000A 9A 0009 4451 call far ptr subr1 1)CS=444D->в стек 2)IP=000F->в стек код операции дальнего 3)4451-> в CS вызова 4)0009-> в IP
ret- работает в зависимости от того, как объявлена процедура ret-в дальней проц. снимает со стека два слова. ret-в ближней процедуре снимает со стека одно слово.
Т.о. ближние процедуры следует вызывать только из того же сегмента командой ближнего вызова call, в то время, как процедуры, объявленные, как дальние следует вызывать только с помощью команды дальнего вызова call far ptr. Лишь в этом случае завершающие эти процедуры команды ret будут работать правильно.
|
|||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 255; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.59.231 (0.005 с.) |