Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Регистры общего назначения. РОНы МП Intel (рис.3.2) не являются классическими регистрами общего назначения



РОНы МП Intel (рис.3.2) не являются классическими регистрами общего назначения. Они могут задаваться и явными адресами, и по умолчанию (кодом операции, постбайтом и т.д.).

C точки зрения использования регистров по умолчанию, они делятся на две группы:

· регистры данных – ax, cx, dx и bx (по возрастанию адресов),

· регистры адресов – sp, bp, si и di (по возрастанию адресов).

Регистр bx, хоть его и относят к группе регистров данных, является и одним из регистров адреса базы данных (для сегмента DS).

Регистр dx может использоваться в качестве адресного регистра портов в командах ввода/вывода.

Регистры cx, si и di по умолчанию используются при обработке строк.

При работе с 16-разрядными операндами и компонентами адреса используются 16-разрядные РОНы – ax, cx, dx, bx, sp, bp, siиdi (по возрастанию адресов).

При работе с байтовыми операндами используются 8-разрядные РОНы: al, cl, dl, bl, ah, ch, dhиbh (по возрастанию адресов).

           
ax ah al Аккумулятор
cx ch cl Счетчик
dx dh dl Данные
bx bh bl База (для DS)
  sp Указатель стека
  bp База кадра стека SS)
  si Индекс источника
  di Индекс приемника
  Рис. 3.2 РОНы  

Сегментные регистры и трансляция сегментов

При использовании сегментированной математической памяти необходима процедура преобразования адреса сегментированной (математической) памяти в адреса линейной физической памяти при каждом обращении к памяти.

Адрес объекта в сегментированной памяти задается двумя компонентами: базовым адресом сегмента и смещением в сегменте. В команде задается только смещение в сегменте. Базовый адрес сегмента задается содержимым одного из четырех сегментных регистров (рис. 3.3).

МП IA-16 содержали четыре 16-разрядных сегментных регистра:

· ES – регистр дополнительного сегмента данных,

· CS– регистр сегмента кода,

· SS – регистр сегмента стека,

· DS – регистр сегмента данных,

  Базовые адреса сегментов        
  ES– Доп. сегмент данных    
  CS – Сегмент кода    
  SS – Сегмент стека    
  DS – Сегмент данных    
Рис.3.3. Сегментные регистры IA-16.

Использование регистров CS, SS, DS и ES возможно по умолчанию и с использованием префикса замены сегмента. Базовые адреса сегментов используются для преобразования адреса сегментированной памяти в адрес линейной.

Емкость физической памяти в МП IA-16 позволяет разместить одновременно до 16 полных сегментов по 64 Кбайт (216 байт). Но одновременно, без изменения содержимого сегментных регистров, в реальном режиме IA-16 можно обращаться только к четырем сегментам, по числу сегментных регистров.

Обращаться к другим сегментам (кроме кодовых сегментов), размещенным в оперативной памяти можно:

· при помощи загрузки базовых адресов в соответствующие сегментные регистры командами пересылки (mov ),

· при помощи команд загрузки сегментных регистров (LES, LDS и LSS).

Все операции со стеком ориентированы на словарную организацию стека. По этой причине адрес указателя стека и базовый адрес сегментного регистра SSдолжны быть четными.

Переходы на новые кодовые сегменты производятся командами межсегментных передач управления.

Преобразование адреса сегментированной памяти в адрес линейной (плоской) памяти производится процедурой трансляции сегмента: сложением базового адреса сегмента с адресом операнда в сегменте.

Но сегментные регистры 16-битные, а базовые адреса должны быть 20- битными. Поэтому при использовании сегментных регистров их содержимое умножается на 16 добавлением четырех нулей после младшего разряда.

Таким образом, адрес в сегменте математической памяти МП IA-16 задается тремя компонентами: B (база), X (индекс) и disp (смещение).

Для вычисления адреса обращения к физической памяти (при сегментированной структуре математической памяти) требуются, по крайней мере, две процедуры:

· вычисление прямого адреса в сегменте по компонентам (В), (Х) и disp,

· преобразование адреса в сегменте сегментированной памяти в адрес линейной физической памяти.

Результатом первого преобразования адреса является получение одного компонента логического адреса – смещения в сегменте, результатом второго преобразования – получение смещения в линейной памяти.

Для уменьшения неопределенности при использовании вышеописанных смещений используют термины:

· disp– для обозначения смещения в кадре сегмента,

· offset – для обозначения смещения в сегменте,

· линейный адрес – для обозначения адреса (смещения) в линейной (не сегментированной) памяти.

Схема вычисления смещения в сегменте (offset)по компонентам адреса, включая смещение в кадре сегмента (disp) и трансляцию сегмента (вычисление линейного адреса в несегментированной памяти) представлена на рис.3.4.

Трансляция сегментов связана с проблемой 20-й адресной шины оперативной памяти. Эта проблема заключается в следующем.

Максимальный адрес сегмента, который может быть записан с сегментный регистр (с учетом четырех нулей в младших разрядах) составляет А max = 220 -24 -1. При использовании этого адреса как базового адреса сегмента, в оставшиеся ячейки памяти можно будет записать только 16 слов. В МП с 20-разрядной адресной шиной остальные данные сегмента запишутся в ячейки оперативной памяти, начиная с нулевого адреса.

В МП IA-32 при работе в реальном режиме (эмуляции МП IA-16) приходится учитывать это явление, используя прием заворота 20-й шины адреса

В защищенном режиме, если включен механизм виртуальной памяти, происходит еще одно преобразование адреса – трансляция страниц.

В МП IA-16 – трансляция страниц (виртуальная память) не реализована.





Дата публикования: 2014-11-03; Прочитано: 617 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...