Студопедия

КАТЕГОРИИ:

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



Опишіть нестандартні прийоми передачі параметрів до дочірньої програми

Читайте также:
  1. В) підготовці документів для передачі їх на зберігання до державного нотаріального архіву.!!!!!!!
  2. Зміст початкового курсу математики. Аналіз програми з математики для початкових класів
  3. Мікрофлора води. Фактори самоочищення води. Виживання патогенних мікроорганізмів у воді. Роль води у передачі інфекційних захворювань
  4. Опишіть методику одержання пеніциліну і лізину
  5. Опишіть новітні нетрадиційні напрямки біотехнології:генна інженерія ,генетично модифіковані рослини та тварини
  6. Опишіть способи застосування пробіотиків в тваринництві та птахівництві
  7. Опишіть технологічну схему виробництва кормових дріжджів
  8. Опишіть,що являють собою мультиферментні системи.
  9. Охарактеризуйте методичні прийоми: вартісного вимірювання, грошової оцінки, двоїстості, доказовості, періодичності та безперервності.

Стек також є зручним місцем для передачі інформації в
підпрограми і з них. Зазвичай програма передає параметри
підпрограму, поміщаючи їх у регістри, проте в деяких випадках
число параметрів перевищує розміри регістрового простору. В
таких випадках програииа може помістити параметри в стек до
виконання команди CALL (виклик підпрограми). Як ми побачимо в
гл.10, стек є єдиним засобом передачі параметрів у
підпрограми, написані на мові асемблера, з мов високого
рівня Бейсік і Фортран.

Підпрограма може дуже ефективно завантажувати ці параметри з
стека. У звичайних випадках програма читає інформацію з стека
єдиним способом - витягуючи її звідти. Замість цього
підпрограма може використовувати регістр BP, як вказівник на
область стека. Коли програма передає параметрів через стек, однією
з перших команд у підпрограмі виконується команда

MOV BP, SP

яка загружвет регістр BP поточним значенням вказівника стека.
Оскільки регістр BP - адресний регістр, підпрограма може
використовувати його при адресних обчисленнях, а це означає, що всі
параметри доступні як зміщення відносно регістру BP.

Конструктори мікропроцесора 8088 виразно пам'ятали про
описаному вище метод передачі параметрів, так як при доступі до
даними регістр BP використовує за замовчуванням регістр стека
сегмента SS як сегментного регістра. У всіх інших
нормальних випадках доступу до даних використовує мікропроцесор
регістр DS. Оскільки стек знаходиться в стековому сегменті,
реєстрову пару SS:BP дуже природно використовувати для адресації
інформації в стеку.

На Фіг. 4.7 зображений приклад, що демонструє використання
регістр BP для доступу до параметрів, переданим через стек. У цьому
прикладі головна програма перед виконанням команди CALL помістила
чотири слова в стек. Підпрограма завантажує в BP покажчик даних
стеку. Зауважимо, що зміщення, що використовуються для доступу до даних
стеці, враховують той факт, що адреса повернення також був записаний в
стек в результаті виконання команди CALL.

У підпрограмі цього прикладу в вершині стека лежить адреса
повернення, і регістр BP містить зсув цієї клітинки. Двома байтами
нижче в стеку лежить поміщений останнім параметр, регістр DX;
далі, через двобайтові інтервали - регістри CX, BX і AX. Таким
чином, правильною адресою для читання параметра, що міститься в
регістрі DX, [BP+2], а інші адреси слідують через
двобайтові інтервали. В даному прикладі значення, що знаходилося в
регістрі DX, потрапляє в регістр AX, BX CX і т.д.



Підпрограма може використовувати регістр BP для адресації стека
не тільки при передачі параметрів. Підпрограма може виявитися
довгою і настільки заплутаною, що зберігати всі необхідні їй у
час виконання значення в регістрах важко. Приміщення цих
значень в стек і завантаження покажчика цій області в регістр BP
вирішує проблему.

Багатьом подпрограммам протягом їх виконання також необхідна
локальна пам'ять, і підпрограми можуть динамічно розташувати її в
стеку. Всякий раз, коли програма викликається, вона може відняти
розмір цієї області пам'яті з вмісту покажчика стека. Так як
стек росте в напрямку до молодших адресах, віднімання числа з
регістра SP ідентично поміщення в стек такої ж кількості даних
- за винятком тих даних, які не ініціалізується. Після
цього підпрограма може використовувати регістр BP для адресації
такий області пам'яті. Коли настає момент повернення, підпрограма
може додати відповідне значення до покажчика стека, і тим
самим відновити його колишнє значення. Динамічна організація
даних означає, що програма використовує область пам'яті лише
тоді, коли вона необхідна для роботи, і не займає цю пам'ять
все інше час, тому програму можна виконувати на машині .



 


Дата добавления: 2015-04-21; просмотров: 5; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ №24 | ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ №25
lektsii.com - Лекции.Ком - 2014-2020 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты