"Ассемблер и программирование для IBM PC. (IBM PC assembler language and programming)" - читать интересную книгу автора (Абель Питер, Переводчик: Ю.В.Сальников)


РЕГИСТРЫ
________________________________________________________________

Процессоры 8086/8088 имеют 14 регистров, используемых для yправления
выполняющейся программой, для адресации памяти и для обеспечения
арифметических вычислений. Каждый регистр имеет длину в одно слово (16
бит) и адресуется по имени. Биты регистра принято нумеровать слева
направо:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Процессоры 80286 и 80386 имеют ряд дополнительных регистров,
некоторые из них 16-битовые. Эти регистры здесь не рассматриваются.


Сегментные регистры CS, DS, SS и ES
-------------------------------------
Каждый сегментный регистр обеспечивает адресацию 64К памяти, которая
называется текущим сегментом. Как показано ранее, cегмент выравнен на
границу параграфа и его адрес в сегментном pегистре предполагает наличие
справа четырех нулевых битов.

1. Р е г и с т р CS. Регистр сегмента кода содержит начальный
адрес сегмента кода. Этот адрес плюс величина смещения в командном
указателе (IP) определяет адрес команды, которая должна быть выбрана
для выполнения. Для обычных программ нет необходимости делать ссылки
на регистр CS.
2. Р е г и с т р DS. Регистр сегмента данных содержит начальный
адрес сегмента данных. Этот адрес плюс величина смещения,
определенная в команде, указывают на конкретную ячейку в сегменте
данных.
3. Р е г и с т р SS. Регистр сегмента стека содержит начальный
адрес в сегменте стека.
4. Р е г и с т р ES. Некоторые операции над строками используют
дополнительный сегментный регистр для управления адресацией памяти. В
данном контексте регистр ES связан с индексным регистром DI. Если
необходимо использовать регистр ES, ассемблерная программа должна его
инициализировать.


Регистры общего назначения: AX, BX, CX и DX
---------------------------------------------
При программировании на ассемблере регистры общего назначения
являются "рабочими лошадками". Особенность этих регистров состоит в том,
что возможна адресация их как одного целого слова или как oднобайтовой
части. Левый байт является старшей частью (high), a правый - младшей
частью (low). Например, двухбайтовый регистр CX состоит из двух
однобайтовых: CH и CL, и ссылки на регистр возможны по любому из этих трех
имен. Следующие три ассемблерные команды засылают нули в регистры CX, CH и
CL, соответственно: