Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Директива MODEL



Директива MODEL позволяет задавать в программе одну из нескольких стандартных моделей управления памятью, когда используется упрощенное описание сегментов. Кроме того, ее можно использовать для указания языкового соглашения, определяющего порядок передачи параметров функциям API, и возврата из подпрограммы.

Как известно, функции API написаны на языке С. Ассемблерные программы используют их как внешние процедуры. Для правильной передачи параметров функциям API и использования результатов их работы необходимо определить языковое соглашение.

Для функций WIN32 API применяется соглашение STDCALL. В этом случае параметры помещаются в стек в обратном порядке, вызываемая процедура освобождает стек при своем завершении.

Перед первой командой процедуры транслятор вставляет код пролога, который выполняет следующие операции: сохраняет текущее значение EВР в стеке, загружает в EВР текущее значение регистра – указателя стека ESP, устанавливает указатель стека на область локальных переменных, сохраняет в стеке регистры, указанные в USES описания процедуры. При завершении процедуры вставляется код эпилога, выполняющий операции, обратные операциям пролога: восстанавливает из стека регистры, указанные в USES описания процедуры, изменяет указатель стека, освобождая область локальных переменных, восстанавливает из стека EВР, освобождает стек от переданных процедуре переменных, если этого требуют языковые соглашения, и осуществляет возврат.

Ключевое слово NOLANGUAGE в качестве языкового соглашения означает отмену автоматической генерации пролога и эпилога. В этом случае передача аргументов через стек и код пролога и эпилога должны присутствовать в тексте программы в явном виде [5].

MODEL <модель_памяти >,< языковое_соглашение >

В режиме MASM применяется тот же синтаксис, но с директивой .MODEL.

В случае программирования в среде Windows для защищенного режима модель памяти будет flat, что означает с логической точки зрения наличие совмещенных четырех гигабайтных сегмента, нижняя граница которых 0. Поэтому в адресных операндах программ защищенного режима используются только смещения.





Дата публикования: 2015-10-09; Прочитано: 182 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...