- •1. В чем суть сегментной организации.
- •2. Можно ли допустить одинаковые адреса у памяти и внешнего устройства.
- •3. Структура байта-атрибута.
- •4. Принадлежность ячейки памяти к озу и пзу.
- •5. Состав и назначение регистров процессора
- •6. Какие способы адресации приняты в системе команд ibm?
- •2. Какие функции представляет прерывание bios int10h?
- •4. Какого рода ошибки выявляет транслятор: логические, синтаксические?
- •7. Какие команды редактора Tasm вы используете в своей работе?
- •1. Опишите порядок выполнения аппаратного прерывания при нажатии клавиши?
- •2. Что такое скан-код, ascii-код?
- •2. Описание работ команд div, mul.
- •1.Чтоь такое файл? Как определяется конец файла?
- •3.Понятия: Открыть файл? Закрыть файл?
ЭВМ IBM PC в вопросах и ответах
1. В чем суть сегментной организации.
Суть сегментной адресации заключается в следующем. Обращение к памяти осуществляется исключительно с помощью сегментов - логических образований, накладываемых на те или иные участки физической памяти. Исполнительный адрес любой ячейки памяти вычисляется процессором путем сложения начального адреса сегмента, в котором располагается эта ячейка, со смещением к ней (в байтах) от начала сегмента (рис. 1.4). Это смещение иногда называют относительным адресом.
Рис. 1.4. Образование физического адреса из сегментного адреса и смещения.
Начальный адрес сегмента без четырех младших битов, т.е. деленный на 16, помещается в один из сегментных регистров и называется сегментным адресом. Сам же начальный адрес хранится в специальном внутреннем регистре процессора, называемом теневым регистром. Для каждого сегментного регистра имеется свой теневой регистр; начальный адрес сегмента загружается в него процессором в тот момент, когда программа заносит в соответствующий сегментный регистр новое значение сегментного адреса.
Процедура умножения сегментного адреса на 16 (или, что то же самое, на 10h) является принципиальной особенностью реального режима, ограничивающей диапазон адресов, доступных в реальном режиме, величиной 1 Мбайт. Действительно, максимальное значение сегментного адреса составляет FFFFh, или 64К-1, из чего следует, что максимальное значение начального адреса сегмента в памяти равно FFFF0h, или 1 Мбайт - 16. Если, однако, учесть, что к начальному адресу сегмента можно добавить любое смещение в диапазоне от 0 до FFFFh, то адрес последнего адресуемого байта окажется равен 10FFEFh, что соответствует величине 1 Мбайт + 64 Кбайт - 17.
Диапазон адресов, формируемых процессором, называют адресным пространством процессора; как мы видим, в реальном режиме он немного превышает 1 Мбайт. Заметим еще, что для описания адреса в пределах 1 Мбайт требуются 20 двоичных разрядов, или 5 шестнадцатеричных. Процессор 8086 имел как раз 20 адресных линий и не мог, следовательно, выйти за пределы 1 Мбайт; современным 32-разрядным процессорам, если они работают в реатьном режиме, доступно несколько большее (почти на 64 Кбайт) адресное пространство. Если же процессор работает в защищенном режиме (с использованием 32-разрядных регистров), то его адресное пространство увеличивается до 232 = 4 Гбайт.
Сегментом называется область памяти, которая начинается на
границе параграфа, то есть в любой точке, адрес которой кратен
16 (восемь младших битов равны нулю).
Существуют три основных типа сегментов:
- сегмент кода - содержит машинные команды, адресуется ре-
гистром CS;
- сегмент данных - содержит данные, то есть константы и
рабочие области, необходимые программе.
Адресуется регистром DS;
- сегмент стека - содержит адреса возврата в точку вызова
подпрограмм. Адресуется регистром SS.
Каждый из упомянутых регистров содержит адрес начала сег-
мента (базовый адрес). В программе все адреса записаны относи-
тельно начала сегмента, и они определяются как смещение
(offset) от начала сегмента. Двухбайтовое смещение (одно слово)
может принимать значение от 0000 до 0FFFFh. Для того, чтобы вы-
полнить обращение по любому адресу процессор выполняет суммиро-
вание адреса, записанного в регистре сегмента, со смещением.
При этом, содержимое регистра сдвигается на четыре двоичных
разряда влево. Результирующий адрес занимает 20 позиций, что и
позволяет адресовать 1 Мбайт памяти.
Пример.
Содержимое DS 045F
+
Смещение 0032
------
Исполнительный 04622
адрес (EA)
Примечание: Адреса шестнадцатиричные.
