
- •Содержание
- •Перечень практических занятий
- •Предисловие Назначение методических указаний
- •Требования к знаниям и умениям при выполнении практических занятий
- •Правила выполнения практических занятий Общие положения
- •Оформление иллюстраций и таблиц
- •Уфимский государственный колледж радиоэлектроники журнал
- •Практическое занятие 1
- •2 Пояснение к работе
- •Практическое занятие 2
- •3 Задание
- •4 Контрольные вопросы
- •5 Содержание отчета
- •6 Список литературы
- •Практическое занятие 3
- •2 Пояснение к работе
- •3 Задание
- •4 Контрольные вопросы
- •5 Содержание отчета
- •6 Список литературы
- •Практическое занятие 4
- •2 Пояснение к работе
- •3 Задание
- •4 Контрольные вопросы
- •5 Содержание отчета
- •6 Список литературы
- •Практическое занятие 5
- •2 Пояснение к работе
- •3 Задание
- •4 Контрольные вопросы
- •5 Содержание отчета
- •6 Список литературы
- •Практическое занятие 6
- •2 Пояснение к работе
- •3 Задание
- •Практическое занятие 7
- •3 Задание
- •Практическое занятие 8
- •3 Задание
- •Практическое занятие 9
- •3 Задание
- •Практическое занятие 10
- •Практическое занятие 11
- •3 Задание
- •4 Контрольные вопросы
- •Практическое занятие 12
- •Практическое занятие 13
- •Практическое занятие 14
- •Практическое занятие 15
- •3 Задание
- •4 Контрольные вопросы
- •5 Содержание отчета
- •6 Список литературы
Практическое занятие 11
Изучение видов адресации памяти
1 Цель работы
1.1 Изучить способы обращения к ячейкам памяти
2 Пояснение к работе
2.1 Краткие теоретические сведения
Адресация памяти вычислительных систем – метод указания на ячейку памяти, к которой производится доступ. Виды адресации: неявная, непосредственная, прямая, прямая регистровая, косвенная, косвенная регистровая, индексная, базовая, относительная, адресация с автоувеличением или автоуменьшением (с инкрементированием или с декрементированием), стековая, страничная, сегментная, виртуальная.
2.1.1 Неявная адресация
Способ, при котором местонахождение операнда или команды фиксировано, т.е. в коде команды адрес операнда не указывается, тем не менее, операция с ним производится. Такие команды выполняются с наибольшей скоростью.
2.1.2 Непосредственная адресация
Операнд находится в формате команды.
2.1.3 Прямая адресация
Операнды извлекаются из памяти по адресу, который хранится в команде.
Команда |
Регистр |
Память |
а |
|
операнд |
Если адрес указан в виде символа, в дальнейшем распознаваемого компилятором, то такая адресация является символической прямой. Если задается в виде явного адреса (цифр) – абсолютная прямая адресация.
2.1.4 Прямая регистровая адресация
В коде команды хранится имя регистра, в котором находится операнд, т.е. в качестве адреса используется имя или код регистра.
Команда |
Регистр |
Память |
к |
операнд |
|
2.1.5 Косвенная адресация
Операнд из памяти извлекается через другую ячейку памяти, т.е. косвенно. В формате команды находится указатель адреса ячейки памяти. При выполнении команд с косвенной адресацией происходит два обращения к памяти: сначала по указателю адреса извлекается адрес ячейки памяти, в которой находится операнд, затем по этому адресу – сам операнд. Такой механизм позволяет, не меняя кода команды, манипулировать данными модифицируя только содержимое ячейки памяти, на которую указывает указатель.
К |
Регистр |
П |
Указатель адреса |
|
Адрес операнда |
|
|
операнд |
Механизм косвенной адресации может быть как одноуровневый, так и многоуровневый, т.е. указатель адреса указывает на ячейку памяти, в которой находится второй указатель адреса, который уже указывает на операнд.
2.1.6 Косвенная регистровая адресация
В коде команды хранится имя регистра, в котором хранится адрес операнда.
К |
Регистр |
Память |
Адрес (имя) регистра-указателя |
А операнда |
операнд |
2.1.7 Индексная адресация
Обеспечивает удобство работы с массивами данных. Адрес операнда вычисляется суммированием адреса первого элемента массива и некоторого целого положительного смещения – индекса, который хранится в специальном индексном регистре. Адрес первого элемента массива хранится в формате команды. Адрес индексного регистра может быть задан неявно.
Команда |
Регистр (индексный) |
|
Память |
А |
с |
|
|
Адрес первого элемента массива |
|
+ |
операнд |
2.1.8 Базовая адресация
А
дрес
операнда вычисляется суммированием
содержимого базового регистра с
положительным или отрицательным
смещением, которое задается в формате
команды. Позволяет обеспечить
переместимость в памяти программ, что
особо важно для программ, использующих
абсолютную прямую адресацию. Другие
виды адресации такую переместимость
обеспечить не могут.
Команда |
Регистр ( |
|
Память |
А |
Базовый адрес |
|
|
С |
|
+ |
операнд |
2.1.9 Относительная адресация
В качестве базового регистра выступает счетчик команд. Т.е. это разновидность базовой адресации, при которой базовый регистр задается неявно и является счетчиком команд. Используется при выполнении команд условных переходов, вызовов подпрограмм и возвращения из подпрограмм.
Команда |
Регистр |
|
Память |
|
Счетчик команд |
|
|
С мещение (+ или -) |
|
+ |
операнд |
2.1.10 Адресация с автоувеличением (инкрементированием) или автоуменьшением (декрементированием)
Разновидность косвенной регистровой адресации, ближе к индексной, при которой после выполнения команды содержимое регистра с адресом операнда увеличивается или уменьшается на фиксированное значение. Это значение зависит от разрядности процессора и общего механизма адресации в этом процессоре. Способ применяется при организации циклов и в операциях со строковыми переменными.
К |
Р |
|
Память |
Адрес (код) регистра |
а |
|
операнд |
|
|
+1 (-1) |
2.1.11 Стековая адресация
Разновидность косвенной регистровой адресации с автоинкременитрованием или автодекрементированием, при которой регистр с указателем адреса операнда задается неявно. Ячейку памяти, на которую указывает содержимое такого неявно заданного регистра, называют верхушкой стека. А сам регистр – указатель стека. Область памяти называется стек. Говорят, что стек работает на автоувеличение, если содержимое указателя стека после записи в стек увеличивается, и на автоуменьшение, если содержимое указателя стека после записи уменьшается.
Команда |
Регистр (SP – указатель стека) |
|
Память |
|
а дрес |
|
операнд |
|
|
+1 (-1) |
2.1.12 Страничная адресация
Была введена с целью уменьшения длины команд и за счет этого увеличения быстродействия процессора, т.к. уменьшается время выборки команды из памяти. В формате команды хранится два параметра: номер страницы, к которой идет обращение, и адрес внутри страницы, т.е. смещение относительно адреса начала страницы. Память при этом можно представить в виде набора страниц, у каждой из которых имеется свой начальный адрес.
|
Регистр |
Память |
|||||||
|
|
|
2.1.13 Сегментная адресация
В структуру процессора вводится набор регистров специального назначения, называемых сегментными регистрами (CS, DS, SS, ES). В этих регистрах хранятся старшие разряды полного физического адреса, к которому обращается процессор. Можно считать, что в них хранится номер сегмента памяти. Кроме этого, в формировании адреса участвуют дополнительные регистры специального назначения (IP, SI, SP, DI соответственно). Полный физический адрес формируется на основе адреса в сегментом регистре и адреса в дополнительном регистре. Получается логический адрес: SS:SP, CS:IP, DS:SI, ES:DI.
Для получения полного физического адреса содержимое сегментного регистра умножается на 16 (в шестнадцатеричной записи числа добавляем 0 в конце) и складывается с содержимым дополнительного регистра.
Пример. Если в CS 38A2h, а в регистре IP 12A6h. Полный адрес CS:IP:
38A20+12A6=39CC6h
К |
Регистр (сегментный) |
|
Память |
|||||
Адрес внутри сегмента |
Часть полного адреса начала сегмента |
+ |
|
2.1.14 Виртуальная адресация
Была развита из сегментной и страничной. В основе виртуальной адресации лежит динамическое перераспределение страниц и сегментов памяти таким образом, что одним и тем же логическим адресам, используемым пользователем системы (операционная система, программа, приложение или человек), соответствуют различные физические адреса памяти.
Команда |
Основная память |
Внешняя память |
||||||||||
|
Таблица соответствия виртуальных и физических адресов страниц (ассоциативная таблица)
|
|
||||||||||
Физическая страница
|
В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Операционная система преобразует виртуальный адрес в физический при помощи ассоциативной таблицы и при необходимости подгружает страницу с жёсткого диска в оперативную память. По адресу внутри страницы находится операнд.
Области использования виртуальной адресации:
- свопинг (swapping)
- кэширование памяти (cache)
- теневая память (shadow memory).
- отображаемая память