ВУЗ:
Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »