- •Трансляция программы
- •Компоновка программы
- •Система команд микропроцессора
- •32 Разрядные регистры:
- •Целочисленные арифметические команды
- •Особенности реализации микропроцессоров
- •Регистры: пользовательские и системные
- •Программа на языке ассемблера
- •Цепочечные команды
- •Осуществление переходов
- •Счётчик адреса команд
- •Безусловные переходы
- •Команда безусловного перехода jmp
- •Защищённый режим работы микропроцессора
- •Регистры управления
- •Регистры системных адресов
- •Сложные структуры данных
- •Доступ к элементам массива
- •Двумерные массивы
- •Структура
- •Сложные структуры данных 2
- •Методы работы со структурой
- •Объединение
- •Модульное программирование -1
- •Технологии программирования
- •Процедуры в языке ассемблера
- •Модульное программирование – 2 Передача аргумента через регистр
- •Передача аргументов через общую область памяти
- •Передача аргументов через стек
- •Связь ассемблера с языками высокого уровня
- •Макросредства языка ассемблера
- •Создание Windows приложений на ассемблере
- •Процесс производства микропроцессора
Счётчик адреса команд
Транслятор ассемблера обрабатывает команды последовательно. При этом он ведёт счётчик адреса команд, который для первой исполняемой команды равен нулю, а далее, по ходу обработки следующей команд, он увеличивается на длину этих команд. Т.е. по сути адрес счётчика команд это смещение текущей команды относительно начала сегмента кода. Таким образом каждая команда во время трансляции имеет адрес равный значению счётчика адреса команд. Транслятор поддерживает 2 возможности работы с счётчиком:
Использование меток – т.е. атрибуту смещения транслятор присваивает значение счётчика адреса той команды перед которой появились
Применение специального символа $ для обозначения счётчика адреса команд. Этот символ позволяет в любом месте программы использовать численное значение счётчика адреса
Безусловные переходы
Что именно должно подвергнутся модификации зависит от
Типа операнда в команде безусловного перехода.
От указания в команде перехода, перед адресом перехода, модификатора. При этом сам адрес перехода может находится либо непосредственно в команде, либо в регистре или ячейке памяти (тогда это будет косвенный переход).
Модификатор может принимать следующие значения:
Near ptr – прямой переход на метку внутри текущего сегмента кода.
Far ptr – это прямой переход на метку в другом сегменте кода. При этом адрес перехода задаётся в виде непосредственного операнда
Word ptr – косвенный переход на метку в текущем сегменте кода.
Dword ptr – косвенный переход на метку в другом сегменте кода.
Команда безусловного перехода jmp
JMP [модификатор] адрес_перехода
Безусловный переход без сохранения информации о точки возврата.
Адрес перехода представляет собой адрес в виде метки, либо области памяти, в которой находится указатели перехода. Дальность перехода определяется местоположение операнда, адрес перехода.
Можно выделить 3 варианта внутрисегментного использование команды JMP.
Прямой и короткий
Прямой
Косвенный
Защищённый режим работы микропроцессора
Любой сегмент памяти в защищённом режиме имеет следующие атрибуты:
Расположение сегментов памяти
Размер сегмента
Уровень привилегий – он определяет права данного сегмента относительно других сегментов
Тип доступа – определяет назначение сегмента
Состав атрибутов показывает, что в защищённом режиме микропроцессор поддерживает 2 типа защиты:
По привилегиям
По доступу к памяти
В отличие от реального режима, в защищённом режиме программа уже не может обратиться по любому физическому адресу в памяти. Для этого она должна иметь определённые привилегии и удовлетворять ряду требований.
Ключевым объектом защищённого режима является специальная структура, которая называется дескриптор сегмента. Он представляет собой 8-байтовой дескриптор непрерывной области памяти. Любая область памяти, которая логически может являться сегментом данных, кода или стека должна быть описана таким дескриптором.
Все дескрипторы собирается в 1 из 3 дескрипторных таблиц. В какую именно таблицу будет помещён дескриптор, определяется его назначением. Адрес, по которому размещаются дескрипторные таблицы, может быть любым. Он хранится в специально предназначенном для этого адреса сегментном регистре.
Сегментные регистры можно разделить на 3 группы:
4 регистра управления
4 регистра сегментных адресов
8 регистров отладки
В состав сегментных регистров микропроцессоров Pentium4 были введены следующие изменения:
Задействован зарезервированный ранее регистр управления cr4
Введена группа MSR – регистров (модельно-зависимые регистры). Назначения и возможности этой группы регистров привязаны к конкретной модели микропроцессора
