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

Передача аргумента через регистр

Читайте также:
  1. II. Регистрация документов.
  2. III. Лист регистрации противопролежневых мероприятий
  3. А. Обмеження в’їзду, виїзду та транзитного проїзду транспорту через територію епідемічного осередку.
  4. Абсолютные основания для отказа в регистрации
  5. Автобус отбывал через десять дней... ...И все высыпали на палубу.
  6. Анализ деятельности отдела регистрации и учёта налогоплательщиков
  7. АНАЛИТИЧЕСКИЕ РЕГИСТРЫ НАЛОГОВОГО УЧЕТА

Это наиболее простой в реализации способ передачи данных. Данные переданные подобным способом становятся доступными немедленно после управления передачи процедуре. Этот способ наиболее эффективен при небольшом объеме передаваемых данных.

Ограничения на способ передачи аргументов через регистр:

· Небольшое число доступных для пользователя регистров

· Нужно постоянно помнить о том, какая информация в каком регистре находится

· Ограничение размера передаваемых данных размерами регистра. В случае превышения необходимо передавать не сами данные, а указатели на них

Передача аргументов через общую область памяти

Этот вариант передачи аргументов предполагает, что вызывающая и вызываемая программа условились использовать некоторую область памяти как общую. Транслятор предоставляет специальное средство для организации такой области памяти. Называется он атрибут комбинирования сегментов. Наличие данного атрибута указывает компоновщику как нужно комбинировать сегменты имеющие оно имя.

Common

Значение common говорит о том, что все сегменты имеющие одинаковое имя в объединяемых модулях будут располагается компоновщиком начиная с одного адреса оперативной памяти.

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

Передача аргументов через стек

Суть способа заключается в том, что вызывающая процедура самостоятельно заносит в стек передаваемые данные, после чего производит вызов процедуры.

Стек обслуживается 3 регистрами ss, sp и bp. Микропроцессор автоматически работает с регистрами ss и sp, в предположении, что они всегда указывают на вершину стека. Для осуществления произвольного доступа к данным в стеке архитектура микропроцессора имеет специальный регистр bp которая автоматически предполагает работу с сегментом стека. Перед использованием этого регистра, для доступа к данным стека, его содержимое необходимо правильно проинициализировать, что предполагает формирование в нём адреса, который бы указывал непосредственно на переданные данные. Для этого в начало процедуры рекомендуется включать дополнительный фрагмент кода, который имеет название «пролог процедуры».

Обычно код пролога состоит из 2 команд:

Push bp

Mov bp,sp

Команда push сохраняет содержимое bp в стеке с тем, чтобы исключить порчу находящегося в нём значения.

Вторая команда настраивает bp на вершину стека.

Конец

Конец процедуры должен быть оформлен особым образом и содержать действия обеспечивающие корректный возврат из процедуры. Фрагмент кода выполняющие такие действия называется «эпилог процедуры». Код эпилога должен восстановить контекст программы, точки вызова процедуры из вызывающей программы. При этом нужно откорректировать содержимое стека, убрав из него аргументы передававшиеся в процедуру. Это можно сделать несколькими способами:

1. Используя последовательность из n команд pop xx - Лучше всего это делать в вызывающей программе сразу после возврата управления из процедуры.

2. Add sp, NN – откорректировать регистр указателя стека sp на вершину 2*N

3. Используя команду ret n в качестве последней исполняемой команды в процедуре, где n – это количество байт на которое нужно увеличивать содержимое регистра sp после того как со стека будут сняты составляющие адреса возврата. Это способ выполняется микропроцессором автоматически.


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



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