Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шшш.docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
143 Кб
Скачать
☆

7. Опишите процесс вызова подпрограммы и возврата из неё.

Механизм вызова подпрограммы и возврата из нее заключается в следующем. Команда вызова подпрограммы сохраняет в стеке адрес ячейки памяти следующей за этой командой (т.е., адрес следующей команды) и загружает в программный счетчик адрес вызываемой подпрограммы. После этого выполняется тело подпрограммы, в конце которой находится команда возврата. Команда возврата извлекает из стека адрес возврата (т.е., адрес команды, следующей за командой вызова) и загружает его в программный счетчик, возвращая тем самым управление вызывающе программе.

9.Способы передачи параметров в подпрограммы, возвращения результата, сохранения контекста вызывающей программы.

Передачу параметров в подпрограммы можно организовать: через стек, через регистры, через глобальные переменные (неявно). Возврат результата может происходить аналогичными способами.

Для сохранения контекста, очевидно, необходимо скопировать все регистры, которые используются подпрограммой, в некоторую область памяти; после выполнения – восстановить содержимое регистров. Наиболее удобно для целей сохранения/восстановления использовать механизм стека. В простейшем случае это может быть тот же стек, что применяется для сохранения адреса возврата из подпрограммы, в других случаях – отдельный программно реализуемый стек.

10.Способы реализации стека для хранения адреса возврата из подпрограммы. Проблемы, связанные с использованием стека.

Для реализации подпрограмм необходимы команды вызова подпрограммы и возврата из подпрограммы. Эти команды являются особыми командами передачи управления – для их работы требуется сохранение адреса возврата из подпрограммы. Для такого сохранения обычно используют стек. В некоторых процессорах такой стек реализуется аппаратно: имеется специальная память (обычно – всего несколько ячеек) и счетчик ячеек стека. При помещении информации в стек этот счетчик увеличивается, при извлечении – уменьшается. В других процессорах стек реализуется аппаратно-программно: программистом под стек отводится область памяти данных, для доступа используется специальный регистр – указатель стека (англ. Stack Pointer – SP). Указатель стека хранит адрес вершины стека. После помещения информации в стек его указатель автоматически уменьшается; перед извлечением – увеличивается. Основное достоинство программного стека – потенциально бόльший объем, чем у аппаратного. Однако перед использованием такого стека обязательно нужно проинициализировать указатель стека значением адреса конца области стека!

11.Какими средствами можно установить, сбросить, инвертировать значения отдельных битов регистров общего назначения?

С помощью команд побитового И и ИЛИ реализуется сброс и установка битов регистров общего назначение.

12.Какими средствами можно установить, сбросить, инвертировать значения отдельных битов регистров ввода/вывода?

Четыре команды позв

оляют устанавливать и сбрасывать отдельные биты в регистрах ввода/вывода. Команды SBI и CBI, соответственно, устанавливают и сбрасывают отдельные биты регистров ввода/вывода с адресами 0x00…0x1F. Команды BSET и BCLR устанавливают и сбрасывают отдельные биты регистра статуса процессора SREG (он имеет адрес 0x3F в адресном пространстве регистров ввода/вывода). На основе команд BSET и BCLR с помощью компилятора реализуется целая группа команд установки и сброса флагов (мнемоники команд этой группы начинаются с символов SE и CL).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]