Особенности команд возврата (masm32)

Тема в разделе "WASM.BEGINNERS", создана пользователем assch, 17 июн 2017.

  1. assch

    assch Member

    Публикаций:
    0
    Регистрация:
    17 мар 2011
    Сообщения:
    192
    Эта темка чисто для начинающих осваивать Ассемблер
    Если требуется выйти из процедуры
    то лучше всего использовать команду - ret
    без необязательного операнда
    компилятор (masm32) сам раставит все точки над "i"

    Код (ASM):
    1. MyFunction proc
    2. .........
    3. .........
    4. .........
    5. ret
    6. MyFunction endp
    Команда (ret) извлекает из стека адрес возврата и передаёт
    управление назад в программу первоначально вызвавшую процедуру

    Но предположим что в функции нужно не один раз
    применить определённый алгоритм и чтобы не раздувать функцию
    можно этот алгоритм вынести в отдельную функцию
    но в определённых случаях это можно сделать и без отдельной функции
    для этого нужно прописать этот алгоритм в самой функции
    в определённом месте например лучше всего в конце
    после основной команды - ret (выхода из процедуры)
    Только для возврата из этого алгоритма нужно обязательно
    применить команду - ret (с постфиксом) то есть команду - retn

    Код (ASM):
    1. MyFunction proc
    2. .........
    3. .........
    4. .........
    5. call @f
    6. .........
    7. .........
    8. .........
    9. call @f
    10. .........
    11. .........
    12. .........
    13. call @f
    14. .........
    15. .........
    16. .........
    17. ret
    18. @@:
    19. .........
    20. тело вложенного алгоритма
    21. .........
    22. retn
    23. MyFunction endp
    Ещё раз повторюсь эта темка чисто для начинающих
    а точнее для тех кто не знал об этой особенности команд возврата
    как говориться - "Век живи век учись"
     
    седьмой нравится это.
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Особенности.
     

    Вложения:

    sniper и assch нравится это.
  3. assch

    assch Member

    Публикаций:
    0
    Регистрация:
    17 мар 2011
    Сообщения:
    192
    Спасибо Indy_,