Архитектура микропроцессоров и их программирование. Карягин А.П. - 15 стр.

UptoLike

Составители: 

15
Так как 64К - это максимальный объем памяти, к которой можно адре-
соваться с помощью 16-битового смещения, то при работе с большим (более
64К) объемом памяти значение сегментного регистра и смещение придется час-
то изменять.
Сегментные регистры не могут использоваться в качестве источников
или приемников в арифметических и логических инструкциях и единственная
операция, которую можно выполнять с сегментными регистрами, состоит в ко-
пировании значений между сегментными регистрами и другими общими реги-
страми или памятью. Например, чтобы добавить значение 100 к регистру ES,
потребуется следующее:
:
mov ax,es
add ax,100
mov es,ax
:
Из всего этого можно сделать заключение, что процессор 8086 лучше
подходит для работы с памятью в блоках, не превышающих 64К.
Ещё одна особенность использования сегментов состоит в том, что
каждая ячейка памяти адресуется через многие возможные сочетания "сегмент:
смещение". Например, адрес памяти 100h адресуется с помощью следующих
значений "сегмент: смещение": 0:100h, 1:F0h, 2:E0h и т.д., так как при вычисле-
нии всех этих пар "сегмент: смещение" получается значение адреса 100h.
Аналогично регистрам общего назначения каждый сегментный регистр
играет свою, конкретную роль. Регистр CS указывает на код программы, DS
указывает на данные, SS - на стек, сегмент (сегментный регистр) ES - это
"трафаретный" (дополнительный) сегмент, который может использоваться так,
как это необходимо.
Регистр CS указывает на начало блока памяти объемом 64К, или сег-
мент кода, в котором находится следующая выполняемая инструкция. Сле-
дующая инструкция, которую нужно выполнить, находится по смещению, оп-
ределяемому в сегменте кода регистром IP, то есть на нее указывает адрес (в
форме "сегмент:смещение") CS: IP. Никакие другие режимы адресации или
указатели памяти, отличные от IP, не могут нормально работать относительно
регистра CS.
Регистр DS указывает на начало сегмента данных, которые представ-
ляет собой блок памяти объемом 64К, в котором находится большинство раз-
мещенных в памяти операндов. Обычно для ссылки на адреса памяти исполь-
зуются смещения, предполагающие использование регистров BX, SI или DI.
Регистр ES указывает на начало блока памяти объемом 64К, который
называется дополнительным сегментом. Как и подразумевает его название,
дополнительный сегмент не служит для какой-то конкретной цели, но досту-
пен тогда, когда в нем возникает необходимость. Иногда дополнительный сег-
мент используется для выделения дополнительного блока памяти объемом
64К для данных. Однако доступ к памяти в дополнительном сегменте менее
эффективен, чем доступ к памяти в сегменте данных. Особенно полезен до-
       Так как 64К - это максимальный объем памяти, к которой можно адре-
соваться с помощью 16-битового смещения, то при работе с большим (более
64К) объемом памяти значение сегментного регистра и смещение придется час-
то изменять.
        Сегментные регистры не могут использоваться в качестве источников
или приемников в арифметических и логических инструкциях и единственная
операция, которую можно выполнять с сегментными регистрами, состоит в ко-
пировании значений между сегментными регистрами и другими общими реги-
страми или памятью. Например, чтобы добавить значение 100 к регистру ES,
потребуется следующее:
         :
         mov ax,es
         add ax,100
         mov es,ax
         :
       Из всего этого можно сделать заключение, что процессор 8086 лучше
подходит для работы с памятью в блоках, не превышающих 64К.
       Ещё одна особенность использования сегментов состоит в том, что
каждая ячейка памяти адресуется через многие возможные сочетания "сегмент:
смещение". Например, адрес памяти 100h адресуется с помощью следующих
значений "сегмент: смещение": 0:100h, 1:F0h, 2:E0h и т.д., так как при вычисле-
нии всех этих пар "сегмент: смещение" получается значение адреса 100h.
       Аналогично регистрам общего назначения каждый сегментный регистр
играет свою, конкретную роль. Регистр CS указывает на код программы, DS
указывает на данные, SS - на стек, сегмент (сегментный регистр) ES - это
"трафаретный" (дополнительный) сегмент, который может использоваться так,
как это необходимо.
       Регистр CS указывает на начало блока памяти объемом 64К, или сег-
мент кода, в котором находится следующая выполняемая инструкция. Сле-
дующая инструкция, которую нужно выполнить, находится по смещению, оп-
ределяемому в сегменте кода регистром IP, то есть на нее указывает адрес (в
форме "сегмент:смещение") CS: IP. Никакие другие режимы адресации или
указатели памяти, отличные от IP, не могут нормально работать относительно
регистра CS.
       Регистр DS указывает на начало сегмента данных, которые представ-
ляет собой блок памяти объемом 64К, в котором находится большинство раз-
мещенных в памяти операндов. Обычно для ссылки на адреса памяти исполь-
зуются смещения, предполагающие использование регистров BX, SI или DI.
       Регистр ES указывает на начало блока памяти объемом 64К, который
называется дополнительным сегментом. Как и подразумевает его название,
дополнительный сегмент не служит для какой-то конкретной цели, но досту-
пен тогда, когда в нем возникает необходимость. Иногда дополнительный сег-
мент используется для выделения дополнительного блока памяти объемом
64К для данных. Однако доступ к памяти в дополнительном сегменте менее
эффективен, чем доступ к памяти в сегменте данных. Особенно полезен до-
                                                                             15