Все про Assembler українською мовою на сайті net.kr.ua

 

:: Меню ::

Головна
Введення
Архітектура реального режиму
Основи програмування
Команди і алгоритми
Розширені можливості сучасних мікропроцесорів
Система команд процесорів Intel
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
 

:: Лічильники ::

=

 

 

 

 

fff00e50

Асемблер. Альтернатива команди 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




:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Популярне ::

-


:: Посилання ::

-


 

 

 


Copyright © net.kr.ua, 2019-2025 (assem.us)