Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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
2)IP=000F->в стек код операции дальнего 3)4451-> в CS вызова 4)0009-> в IP
ret- работает в зависимости от того, как объявлена процедура ret-в дальней проц. снимает со стека два слова. ret-в ближней процедуре снимает со стека одно слово.
Т.о. ближние процедуры следует вызывать только из того же сегмента командой ближнего вызова call, в то время, как процедуры, объявленные, как дальние следует вызывать только с помощью команды дальнего вызова call far ptr. Лишь в этом случае завершающие эти процедуры команды ret будут работать правильно.
|
||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-07; просмотров: 381; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.146 (0.017 с.) |