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
   46   47   48   49   50   51   52   53   54   55   56