Page 46 - 4989
P. 46
в основну програму.
Таблиця 5.1 – Команди організації підпрограм
Команда Зміст
CALL pp виклик підпрограми з ім’ям рр
RET повернення з підпрограми
RET n повернення з підпрограми із звільненням n комірок
стекової пам’яті
Коректно написана підпрограма не повинна змінювати стан
регістрів і флагів, що можуть використовуватись основною
програмою. Для цього доцільно на початку виконання програми
тимчасово зберегти у стеку вміст регістрів, які передбачається
використовувати у підпрограмі, а перед виходом з підпрограми
відновити їх. Наприклад:
PUSH ЕAX
...
(команди підпрограми, що включають якісь дії з регістром ЕАХ)
…
POP ЕAX
RET
5.3.2 Передача параметрів у підпрограми
Підпрограма може мати декілька вхідних та вихідних
параметрів. Найпростіше передавати параметри через регістри,
тобто в основній програмі слід занести в регістри вхідні
параметри, викликати підпрограму, після чого результат
виконання буде також знаходитись у певних регістрах. Такий
підхід виправданий, якщо параметрів небагато та наявні вільні
регістри. Альтернативним є варіант, коли вхідні параметри
передаються через стек. При цьому в головній програмі вхідні
параметри заносяться в стек, а у підпрограмі звертання до них
відбувається за допомогою непрямої адресації через регістр ЕВР,
в який на початку підпрограми копіюється значення верхівки
стеку ЕSP.
Приклад. Нехай підпрограма РР має два аргументи А і В.
46