Оперативная память слова
|
|
|
Программный сегмент |
|
06FF |
|
|
0006 |
|
|
|
|
0 |
|
|
2 |
|
Сегмент данных |
4 |
|
|
6 |
Ячейка meml |
|
|
|
Код команды inc meml
Смещение к ячейке meml
I—— Содержимое DS - 10E2h
10E20h Базовый адрес сегмента (на границе параграфа) lDE22h
lDE24h lDE26h Физический адрес ячейки meml
10Е28П Вычисление физического адреса:
lDE2h * 10h = lDE20h + ООО6h
=1DE26h
Рис. 1.3. Формирование физического адреса
В примере предполагается, что сегмент данных, адресуемый через регистр DS, имеет базовый адрес lDE20h, а ячейка meml расположена в байтах 6 и 7 этого сегмента (смещение meml относительно начала сегмента равно 6).
Поскольку младшая 16-ричная цифра базового адреса сегмента должна быть равна 0, сегмент всегда начинается с адреса, кратного 16, т.е. на границе 16-байтового блока памяти (параграфа). Число, хранящееся в сегментном .регистре, называют сегментным адресом. Следует помнить, что сегментный адрес в 16 раз меньше физического; его можно рассматривать, как номер параграфа, с которого начинается данный сегмент.
Регистр CS обеспечивает адресацию к сегменту, в котором находятся программные коды, регистры DS и ES - к сегментам с данными (таким образом, в любой момент времени программа может иметь доступ к 128 Кбайт данных), а регистр SS -к сегменту стека, который на машинах типа IBM PC, в отличие от других вычислительных систем, может быть очень большим и достигать 64 Кбайт. Сегментные регистры, естественно, не могут выступать в качестве регистров общего назначения.
Указатель команд IP "следит" за ходом выполнения программы, указывая в каждый момент относительный адрес команды, следующей за исполняемой. Регистр IP программно недоступен (IP - это просто его сокращенное название, а не мнемоническое обозначение, используемое в языке программирования); наращивание адреса в нем выполняет микропроцессор, учитывая при этом длину текущей команды. Команды переходов, прерываний, вызова подпрограмм и возврата из них изменяют содержимое IP, осуществляя тем самым переходы в требуемые точки программы.
Регистр флагов, эквивалентный регистру состояния процессора других вычислительных систем, содержит информацию о текущем состоянии процессора (рис. 1.4). Он включает 6 флагов состояния и 3 бита управления состоянием процессора, которые, впрочем, тоже называются флагами.