Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Команды вызова процедуры и возврата из процедуры






    Команды вызова процедуры по-другому называются командами перехода с возвратом, что более правильно, так как их можно использовать и без процедур. По своей сути это команды безусловного перехода, которые перед передачей управления в другое место программы запоминают в стеке адрес следующей за ними команды. На языке Ассемблера эти команды имеют следующий вид:

    call op1

    где op1 может иметь следующие форматы: i16, r16, m16, m32 и i32. Как видим, по сравнению с командой безусловного перехода здесь не реализован только близкий короткий относительный переход сall i8, он практически бесполезен в практике программирования, так как почти всегда тело процедуры находится достаточно далеко от точки вызова этой процедуры. Таким образом, как и команды безусловного перехода, команды вызова процедуры бывают близкими (внутрисегментными) и дальними (межсегментными). Близкий вызов процедуры выполняется по следующей схеме:

    Встек (IP); jmp op1

    Здесь запись Встек (IP)обозначает действие " записать значение регистра IP в стек". Заметим, что отдельной команды push IP в языке машины нет. Дальний вызов процедуры выполняется по схеме:

    Встек (CS); Встек (IP); jmp op1

    Для возврата на команду программы, адрес которой находится на вершине стека, предназначена команда возврата из процедуры, по сути, это тоже команда безусловного перехода. Команда возврата из процедуры имеет следующий формат:

    ret [i16]; Параметр может быть опущен

    На языке машины у этой команды есть две модификации, отличающиеся кодами операций: близкий и дальний возврат из процедуры. Нужный код операции выбирается программой Ассемблера автоматически, по контексту использования команды возврата, о чём мы будем говорить далее. Если программист опускает параметр этой команды i16, то Ассемблер автоматически полагает i16=0.

    Команда близкого возврата из процедуры выполняется по схеме:

    Изстека (IP); SP: =(SP+i16)mod 216

    Здесь, по аналогии с командой вызова процедуры, запись Изстека (IP)обозначает операцию " считать из стека слово и записать его в регистр IP".

    Команда дальнего возврата из процедуры выполняется по схеме:

    Изстека (IP); Изстека (CS); SP: =(SP+i16)mod 216

    Действие SP: =(SP+i16)mod 216 приводит к тому, что указатель вершины стека SP устанавливается на некоторое другое место в стеке. В большинстве случаев этот операнд имеет смысл только для чётных i16> 0 и SP+i16< =K, где K – размер стека. В этом случае из стека удаляются i16 div 2 слов, что можно трактовать как очистку стека от данного количества слов (уничтожение соответствующего числа локальных переменных). Возможность очистки стека, как мы увидим, будет весьма полезной при программировании процедур на Ассемблере.






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.