- •Оглавление
- •Вопрос №3
- •Вопрос №4
- •Вопрос №5
- •Вопрос №6 Системы исчисления
- •Вопрос №7
- •Вопрос №8
- •Вопрос №9
- •Вопрос №10
- •Вопрос №11
- •Вопрос №12
- •Вопрос №13
- •Вопрос №14
- •Вопрос №15
- •Вопрос №16
- •Вопрос №17
- •Вопрос №18
- •Вопрос №19
- •Вопрос №20
- •Вопрос 21
- •Вопрос 22
- •Вопрос 23
- •Вопрос №24
- •Вопрос № 25
- •Вопрос № 26
- •Вопрос №27
- •Вопрос №28
- •1. Команда пересылки данных.
- •Вопрос №29
- •Вопрос №30
- •Вопрос №31
- •Вопрос №32
- •Вопрос №33
- •Вопрос №33(Краткая версия)
- •1) Команда вызова процедуры.
- •2) Команда возврата управления.
- •Вопросы №34
- •Вопросы №35
- •Вопрос №36
- •1) Команда организации цикла.
- •2) Команда перехода по обнуленному счетчику.
- •3) Команды организации цикла с условием.
- •Вопрос №37
- •Вопросы №38
- •Вопрос №39
- •Вопрос №40
Вопрос №16
Идея защищенного режима – защитить исполняемые процессором программы от взаимного влияния.
Организация защиты программ по доступу к памяти не нарушает принцип сегментации. Каждому из сегментов присваиваются определенные атрибуты:
расположение сегментов памяти
размер сегмента
уровень привилегий, то есть права данного сегмента относительно других сегментов.
Тип доступа, то есть определяется назначение сегмента
В отличие от реального режима в защищенном режиме программа уже не может напрямую обратиться к любому физическому адресу. Ключевым объектом защищенного режима является специальная структура - дескриптор сегмента.
Limit1,limit2 – 20разрядное поле, определяющее размер сегмента.
Base1,base2,base3 – 32разрядное поле, определяющее значение линейного адреса начала сегмента памяти.
AR– байт, поля которого определяют право доступа к сегменту.
В защищенном режиме размер сегмента не фиксирован, его расположение можно задать в адресах. Размер сегмента может достигать до 4 Гб.
Бит G– бит.
G=0 – размер сегмента в байтах
1 – в страницах.
Вопрос №17
Стек – область памяти, специально выделяемая для временного хранения данных в программе. Для работы со стеками предназначено 3 регистра:
SS– регистр сегмента стека
SP/ESP– регистр-указатель стека
ВР/ЕВР – регистр указателя базы кадра стека
В каждый момент времени доступен только один стек, адрес сегмента которого содержится в регистре SS. Этот стек называется текущим. Для обращения к другому стеку необходимо загрузить в регистрSSдругой адрес.
Работа со стеком:
запись и чтение данных осуществляется по принципу LIFO–lastinputfirstout.
По мере записи данных в стек он растет в сторону младших адресов.
При использовании регистров SP/ESР для адресации памяти ассемблер автоматически считает, что содержащиеся в нем значения представляют смещение относительно регистраSS.
Регистр SP/ESPуказывает вершину стека, то есть содержит смещение, по которому в стек был занесен последний элемент. Если стек пуст, то значениеTSPравно адресу последнего байта сегмента, выделенного под стек. При занесении элементов в стек процессор уменьшает значениеESP, а затем записывает элемент по адресу новой вершины. При извлечении данных из стека процессор копирует элемент, расположенный по адресу вершины, затем увеличивает значение регистраESP. Для доступа к элементам внутри стека используется регистрEВP.
Вопрос №18
Для организации работы со стеком существуют специальные команды записи и чтения.:
PUSHвыполняет запись в вершину стека
Рush<источник>
Алгоритм работы PUSH:
1.SP=SP– 2
2.Значение источника записывается по адресу, указанному парой SS:SP
РОР выполняет запись значения из вершины стека по месту указанного операнда:
Рор <приемник>
Алгоритм работы РОР:
запись содержимого вершины стека по месту, указанному операндом
увеличение значения SP:SP=SP+ 2
Работать со стеком приходиться постоянно. Основные виды операций, когда использование стека неизбежно:
вызов подпрограмм
временное сохранение значение регистра (при обработке внешнего прерывания)
определение локальных переменных в процедуре.