Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Создание локальных переменных

Замена чипсета на материнской плате из песочницы | Как определить неисправность материнской платы в домашних условиях. | Как заменить конденсаторы на материнской плате | Перепайка и замена конденсаторов на плате | Ещё о командах ассемблера. | Главная > Язык ассемблера > Процедуры и функции в ассемблере | Объединение процедур, расположенных в разных модулях | Организация интерфейса с процедурой | Способы передачи аргументов в процедуру | Возврат результата из процедуры |


Читайте также:
  1. I. Создание таблицы в режиме конструктора
  2. II. Формы управления учреждением. Перечень и порядок принятия локальных нормативных актов.
  3. II.2 Создание простых запросов с группированием данных в режиме конструктора
  4. III. Создание таблицы БД путем импорта данных из таблицы MS Excel
  5. IV. Создание запросов на выборку в режиме конструктора
  6. IV. Создание образа убийцы
  7. Анализ особенностей организации локальных сетей предприятия

Чтобы создать локальные переменные в процедуре, необходимо выделить для них память. Эта память выделяется в стеке. Сделать это очень просто — достаточно вычесть из регистра SP значение, равное суммарному размеру всех локальных переменных в процедуре. Так как ширина стека равна 16 бит, то это значение должно быть кратно 2 байтам. При выходе из процедуры нужно восстановить указатель стека. Обычно это выполняется командой mov sp,bp (В bp сохраняется значение sp при входе в процедуру, как в случае с параметрами, передаваемыми через стек). Код процедуры с локальными переменными будет выглядеть следующим образом:

;Процедура с локальными переменными myproc: push bp ;Сохранение BP mov bp,sp ;Копирование указателя стека в BP sub sp,locals_size ;Выделение памяти для локальных переменных... mov sp,bp ;Восстановление указателя стека pop bp ;Восстановление BP ret ;Возврат из процедуры

Код, выполняемый при входе в процедуру, называют также кодом пролога, а код, выполняемый при выходе, — кодом эпилога. После выполнения кода пролога стек будет иметь такой вид:

Область стека, включающая в себя параметры процедуры, адрес возврата, локальные переменные и сохранённые регистры, называется кадром или фреймом стека. Из рисунка понятно, что для обращения к локальным переменным внутри процедуры нужно использовать отрицательные смещения относительно регистра BP. Лучше всего показать это на примере


Дата добавления: 2015-07-16; просмотров: 55 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Автор: xrnd | Рубрика: Учебный курс | 17-10-2010 | Распечатать запись| Пример процедуры с локальными переменными

mybiblioteka.su - 2015-2024 год. (0.008 сек.)