Page 51 - 4989
P. 51
Варіанти відповідей:
- порядок передачі аргументів через стек – зліва направо або
справа наліво;
- хто очищує стек – функція або викликаючий код;
- де розміщується результат – зазначити регістр.
Примітка. У режимі відлагодження (Debug) компілятор у ряді
випадків додає після коду виклику функції код перевірки
коректності стану стеку, який може розміщуватись перед кодом
копіювання результату, наприклад:
cmp esi,esp
call __RTC_CheckEsp (01301163h)
Всередині функції також може бути доданий код, що
дозволяє відслідкувати помилки звертання до пам’яті, наприклад
заповнення невикористовуваних комірок стеку значенням 0хСС.
У режимі Release такий код у виконуваний файл не додається.
5.5 Звіт повинен містити:
1. Завдання із зазначенням номеру варіанту.
2. Текст програми.
3. Скріншот вікна дизасемблера з кодом виклику процедури.
4. Таблиця параметрів узгоджень про виклики (п. 5.4.7)
5. Скріншоти вікна програми, що ілюструють правильність її
виконання.
6. Висновок.
5.6 Контрольні питання
1. Які команди використовують для виклику процедури та
повернення з процедури в асемблері х86?
2. Як використовується стек при виклику підпрограм?
3. Яким чином забезпечується повернення із підпрограми
саме на команду, наступну за командою виклику?
4. Що слід зробити, якщо підпрограма використовує ті
регістри, які задіяні в основній програмі?
5. Проаналізуйте, що буде, якщо у підпрограмі замість
команди повернення RET застосувати команду
51