Продолжаю забавы с ассемблером. Предыдущая статья из этой серии здесь. А сегодня о том, каким набором инструкций можно заменить команду CALL. Эта команда выполняет вызов процедуры. А замена её с помощью набора других команд поможет понять, как выполняется вызов процедуры в ассемблере и что при этом происходит. Итак, сначала пример с обычным вызовом процедуры: А теперь вызовем ту же процедуру, но без использования CALL: Как видите, всё достаточно просто. Нам надо лишь в том месте, где была CALL, создать какую-то метку (в нашем примере это ProcRET), которая будет использоваться как адрес возврата в программу из процедуры. А перед этой меткой добавить три команды. Первые две помещают в стек адрес возврата из процедуры, а третья выполняет безусловный переход на процедуру. Таким образом, эта часть программы будет работать так: Ну вот как-то так… На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.