Ассемблер и программирование для IBM PC


          

ГЛАВА 1. Введение в семейство персональных компьютеров IBM PC - часть 8


РЕГИСТРЫ ------------------------------------------------------------

Процессоры 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егистре предполагает наличие справа четырех нулевых битов.

Ассемблер для IBM PC 9

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, соответственно:




Содержание  Назад  Вперед