 |
::
Меню :: |
 |
|
|
 |
::
Друзі :: |
 |
|
|
 |
::
Лічильники :: |
 |
|
|
|
Асемблер. Альтернатива команди call
Аркадій Саакян
Асемблер. Альтернатива команди call
Як відомо, при викликі команди call, копіюється адреса наступної інструкції в стек і керування переходить до процедури. Тільки команда ret може повернути керування на адресу, яка має знаходитися у вершині стека. Я вирішив виконати ці дії вручну, але щось пішло не так. Запитання: що? Я перевірив програму у відладчику. Після команди ret вказівник на інструкцію (EIP) встановлюється на 0000001B замість того, щоб вказати на першу інструкцію програми. Після наступного кроку (команди ret) відбувається помилка.
Відповіді:
...
Ви не помістили в стек зсув, а тільки сегмент Якщо в стеку повну адресу (сегмент-зміщення) треба робити retf (дальнє повернення) Якщо тільки зсув retn (ближній) У даному випадку retf або retn бажано поставити явно, а не просто ret, раз до таких фокусів вдаєтеся Приклад коду TASM, MSDOS, .com файл: .model tiny .code .386 org 100h main: push cs push offset up
|
 |
::
Наша кнопка :: |
 |
|
 |
Отримати код:
|
Підтримайте наш сайт і розмістіть нашу
кнопку на своєму ресурсі. |
|
|
 |
::
Популярне :: |
 |
|
|
 |
:: Посилання :: |
 |
|
|
|