Информатика. 2 семестр. Тема 03. Обработка данных
Поддержка стековых операций процессором
Базовое использование
стека – сохранение состояния процессора (всех регистров) при вызове подпрограммы или обработке прерывания
В стековых языках программирования стек используется для размещения данных, а адреса ячеек в коде рассчитываются относительно вершины стека
Interrupt (Прерывание) – встроенная последовательность операций процессора, выполняемая в ответ на заданное событие. При обработке прерывания в стек помещается текущий адрес выборки команды, затем по номеру прерывания вычисляется ячейка в таблице прерываний, содержащая адрес процедуры обработчика и выполняется переход по этому адресу
стек
Инструкция Call (Вызвать) помещает в стек адрес выборки команды, затем выполняет сохранение всех регистров, а потом выполняется переход по адресу, указанному в инструкции
Offset (Смещение) – возможность указать в инструкции по обмену данными адрес ячейки памяти с помощью задания смещения от адреса вершины стека. Например, ADD AX, [SP + offset ]
С учетом возможности прямого изменения значения указателя стека это даёт возможность выделять (резервировать) память под хранение данных
параметр B
параметр A
адрес возврата
лок. перемен. D
лок. перемен. C
копия регистров
резерв стека
MOV AX, [SP + 34] – поместить в аккумулятор (регистр AX) значение параметра А
Для i8086 для сохранения копии регистров нужно 26 байт, поэтому (в подпрограмме):
Задача: запишите на ассемблере D = A + B