[ Тематический план ] [ Физическая и логическая организация адресного пространства] [ 1 ] 



Организация оперативной памяти

ОП является основной памятью для хранения информации. Она организована как одномерный массив ячеек памяти размером в 1 байт. Каждый из байтов имеет уникальный 20 битный физический адрес в диапазоне от 00000 до FFFFFh (здесь и далее для записи адресов используется шестнадцатеричная система счисления, признаком которой является символ h в конце кода). Таким образом, размер адресного пространства ОП составляет 2 20 = 1Мбайт . Любые два смежных байта в памяти могут рассматриваться как 16-битовое слово. Младший байт слова имеет меньший адрес, а старший - больший. Так шестнадцатеричное число 1F8Ah , занимающее слово, в памяти будет расположено в последовательности 8Ah , 1Fh . Адресом слова считается адрес его младшего байта. Поэтому 20 битовый адрес памяти может рассматриваться и как адрес байта, и как адрес слова.

Команды, байты и слова данных можно размещать по любому адресу, что позволяет экономить память вследствие ее более полного заполнения. Однако для экономии времени выполнения программ целесообразно размещать слова данных в памяти, начиная с четного адреса, так как микропроцессор передает такие слова за один цикл работы шины. Слово с четным адресом называется выровненным по границе слов. Невыровненные слова данных с нечетным адресом допустимы, но для их передачи требуется два цикла шины, что снижает производительность ЭВМ. Заметим, что необходимое количество циклов считывания слова данных инициируется микропроцессором автоматически. Следует иметь в виду, что при операциях со стеком слова данных должны быть выровнены, а указатель стека инициирован на четный адрес, так как в таких операциях участвуют только слова данных.

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

Адресное пространство ОП делится на сегменты . Сегмент состоит из смежных ячеек ОП и является независимой и отдельно адресуемой единицей памяти, которая в базовой архитектуре персональной ЭВМ имеет фиксированную емкость 2 16 = 64К байт. Каждому сегменту назначается начальный (базовый) адрес, являющийся адресом первого байта сегмента в адресном поле ОП. Значение физического адреса ячейки складывается из адреса сегмента и смещения ячейки памяти относительно начала сегмента (внутрисегментное смещение). Для хранения значений адреса сегмента и смещения используются 16-битовые слова.

Чтобы получить 20-битовый физический адрес , микропроцессор автоматически осуществляет следующие операции. Значение базового адреса сегмента умножается на 16 (сдвиг на 4 разряда влево) и суммируется со значением смещения в сегменте ( рис. 1 ). В результате получается 20-битовое значение физического адреса . При суммировании может возникнуть перенос из старшего бита, который игнорируется. Это приводит к тому, что ОП оказывается как бы организованной по кольцевому принципу. За ячейкой с максимальным адресом FFFFFh следует ячейка с адресом 00000h .

Сегменты физически не привязаны к конкретному адресу ОП, и каждая ячейка памяти может принадлежать одновременно нескольким сегментам , так как базовый адрес сегмента может определяться любым 16-битовым значением. Сегменты могут быть смежными, неперекрывающимися, частично или полностью перекрывающимися. Вместе с тем, в соответствии с алгоритмом вычисления физического адреса , начальные адреса сегментов всегда кратны 16.

Сегментную группу образуют регистры CS, SS, DS и ES. Как говорилось ранее, участвующие в формировании адреса регистры ВХ, IP, SP, ВР, SI и DI имеют длину всего 16 бит, поэтому эффективный адрес имеет такую же длину. Но, с другой стороны, выдаваемый на шину адреса физический адрес должен содержать 20 бит. Дополнительные 4 бита образуются при сложении эффективного адреса с содержимым одного из сегментных регистров, как показано на рис. Перед сложением к содержимому сегментного регистра справа добавляются четыре нуля, что дает 20-битный результат. Если, например, (CS) = 123А и (IP) =341В, следующая команда будет выбираться по адресу 157ВВ

341В эффективный адрес

+

123А0 начальный адрес сегмента

----------

157ВВ физический адрес команды


Слово состояния процессора PSW микропроцессора 8086 содержит 16 бит, но семь из них не используются.
Флажки микропроцессора  8086 разделяются на условные (или флажки условий) , отражающие результат предыдущей операции АЛУ, и управляющие (или флажки управления), от которых зависит выполнение специальных функций.
Флажками условий являются:

Флажок знака SF. Равен старшему биту результата. Так как в дополнительном коде старший бит отрицательных чисел содержит 1, а у положительных чисел он равен 0, флажок SF показывает знак предыдущего результата.

Флажок нуля ZF. Устанавливается в 1 при получении нулевого результата и сбрасывается в 0, если результат отличается от нуля.

Флажок паритета PF. Устанавливается в 1, если младшие 8 бит результата содержат четное число единиц; в противном случае он сбрасывается в 0.

Флажок переноса CF. При сложении (вычитании) устанавливается в 1, если возникает перенос (заем) ид старшего бита. Другие команды также воздействуют на этот флажок, что будет отмечено при их обсуждении.

Флажок вспомогательного переноса AF. Устанавливается в 1 если при сложении (вычитании) возникает перенос (заем) из бита 3. Флажок предназначен только для двоично-десятичной арифметики.

Флажок переполнения OF. Устанавливается в 1, если возникает переполнение, т. е получение результата вне допустимого диапазона. При сложении этот флажок устанавливается, если имеется перенос в старший бит и нет переноса из старшего бита или наоборот. При вычитании он устанавливается, когда возникает заем из старшего бита, но заем в старший бит отсутствует, или наоборот.

Пусть, например, предыдущая команда производила следующее сложение:

0010 0011 0100 0101

+

0011 0010 0001 1001

---------------------------

0101 0101 0101 1110

Тогда после ее выполнения получаются такие состояния флажков

SF=0, ZF=0, PF=0, CF=0, AF=0, OF = 0.

Если в предыдущей команде выполнялось сложение

0101 0100 0011 1001

+

0101 0101 0110 1010

---------------------------

1010 1001 1010 0011

Флажки принимают следующие состояния:

SF=1, ZF=0, PF=1, CF=0, AF=1, OF = 1.

Флажки управления микропроцессора 8086:

Флажок направления DF. Применяется в командах манипуляций цепочками. Если он сброшен, цепочка обрабатывается с первого элемента, имеющего наименьший адрес. В противном случае цепочка обрабатывается от наибольшего адреса к наименьшему.

Флажок разрешения прерываний IF. Когда установлен этот флажок, ЦП распознает маскируемые прерывания; в противном случае эти прерывания игнорируются .

Флажок прослеживания (трассировки) TF. Когда этот флажок установлен, после выполнения каждой команды генерируется внутреннее прерывание .