|
Память компьютера используется для
различных целей - часть ее занимает программа, другая часть
используется для хранения данных, с которыми в данный момент
работает программа. Поэтому два регистра сегмента выделены
для программы и для данных. |
перевод с английского на русский |
|
{img2} |
программы архиваторы |
|
Для указания базового адреса
программного или кодового сегмента используется регистр CS.
Для указания сегмента данных используется регистр DS. Еще
одна область памяти, используемая для специальных целей,
называется стеком и ее адрес указывается регистром стека SS.
И, наконец, для обеспечения дополнительных возможностей
адресации имеется регистр дополнительного сегмента (или
сегмента расширения), ES.
Когда программа подготавливается к выполнению,
операционная система, такая как DOC, выбирает ячейки каких
разделов будут использоваться для размещения кодовой части
программ, данных и стека. |
avast edition |
|
{img3} |
программы архиваторы |
|
В регистры сегментов CS,DS и SS
заносятся адреса этих ячеек. При выполнении программы адреса
в этих регистрах позволяют находить нужные ячейки памяти. |
asplinux deluxe |
|
|
программы архиваторы, системы резервного копирования, asplinux 11, перевод с русского на английский, архиватор rar, .
nod32
|
Адресация памяти:
1-обычный 16-разрядный регистр адреса; 2-16бит (4
шестнадцатиричные цифры) 4 бита на шестнадцатиричную цифру;
3-сдвиговый регистр сегмента; 4-объединенные регистры
сегмента адреса и сегмента; 5-дополнительный
шестнадцатиричный ноль; 6-результат - 20-разрядный адрес
Хотя относительная часть адреса могла бы задавать только
четыре последних цифры адреса, она принимает значения от 0 до
без единицы 64К. Большая часть манипуляций с адресами связана
с относительной частью адреса. Сегментная часть адреса
фактически становится базовым адресом для рабочей области
размером ,;К, которую позволяет адресовать относительная
часть адреса.
Имеется удобный способ записи сегментированных адресов,
использование которого программой DEBUG (описанной в главе 6)
Вы еще увидите. Кроме того, он хорошо прослеживается в
ассемблерных листингах, например в том, который приведен в
приложении А к техническому руководсву фирмы IBM. Сначала
записывается сегментная часть адреса, после нее следует
двоеточие, а затем относительная часть адреса. Например, если
сегментная часть адреса (в шестнадцатиричной форме) 2222, а
относительная часть - 3333, то полный сегментированный адрес
будет записываться как 2222:3333. Фактический 20-разрядный
адрес будет в шестнадцатиричном виде иметь значение 25553,
получаемое таким простым сложением:
22220
+
3333
____________
25553
(В конце этого раздела мы приведем несколько примеров
работы с сегментированными адресами на Бэйсике и Паскале).
Для работы с сегментированными адресами микропроцессор
8088 имеет специальные регистры сегментов, предназначенные
для хранения сегментной части адресов. Загрузив в регистр
сегмента некоторое значение, можно адресовать следующие за
ним 64К ячеек памяти . Без изменения значения в регистре
сегмента компьютер может работать только с 64К байтами из
общего адресного пространства в 1.024К. Путем изменения
значения в регистре сегмента можно адресовать любую ячейку
памяти.
Чтобы иметь возможность в каждый момент времени работать
более чем с 64К памяти, в микропроцессоре 8088 предусмотрены
четыре различных регистра сегмента, каждый из которых имеет
особое назначение.
|
|
|