
Универсальные регистры
Наиболее часто программист оперирует регистрами общего назначения (РОН). К ним относятся регистры AX, BX, CX, DX, а в процессорах, начиная с Intel 80386 и выше – EAX, EBX, ECX, EDX. Регистры ЕхХ – 32-разрядные, хХ – 16-разрядные. Каждый из последних в свою очередь состоит из двух 8-битовых регистров xL и xH. Нижеприведенный рисунок иллюстрирует общую структуру РОН на примере регистра АХ.
-
A
H
A
L
AX
EAX
Рисунок 4.4. Общая структура РОН
Каждый из этих регистров может использоваться для временного хранения любых данных, при этом можно работать с каждым регистром целиком, а можно отдельно с каждой его половиной:
- регистры АН, ВН, СН, DH - старшие байты (Hight);
- регистры AL, BL, CL, DL - младшие байты (Low) соответствующих 2-ух байтовых регистров.
Регистры AL, АН образуют соответственно младший и старший байты условного регистра АХ.
Всеми этими регистрами можно пользоваться при программировании, но ряд команд использует их неявным способом. Например:
регистр АХ, аккумулятор, используется при умножении и делении слов, в операциях ввода-вывода и в некоторых операциях над строками;
регистр AL используется при выполнении аналогичных операций над байтами, а также при преобразовании десятичных чисел и выполнении над ними арифметических операций;
регистр АН используется при умножении и делении байтов;
регистр ВХ, базовый регистр, часто используется при адресации данных в памяти; регистр СХ, счетчик, используется как счетчик числа повторений цикла и в качестве номера позиции элемента данных при операциях над строками. Регистр CL используется как счетчик при операциях сдвига и циклического сдвига на несколько битов;
регистр DX, регистр данных, используется при умножении и делении слов. Кроме этого используется в операциях ввода-вывода как номер порта.
Регистры смещений или иначе, указателей и индексов
Регистры указателей также, как и сегментные регистры, предназначены для хранения составных частей адресов.
Как уже упоминалось, регистр IP содержит смещение в сегменте кодов для следующей команды, подлежащей исполнению. При выполнении каждой команды процессор изменяет значение в IP, поэтому этот регистр всегда указывает на следующую команду. Обычно в программах к IP не обращаются непосредственно, но его текущее значение может быть использовано в некоторых командах или директивах.
Регистр SP хранит значение смещения, которое вместе с регистром SS указывает на текущее слово в стеке.
Регистр BP обрабатывает ссылочные параметры (данные и адреса), которые передаются между программой и подпрограммой (процедурой) через стек. Также, как и другие регистры указателей, ВР содержит смещение. Процессор сочетает это смещение с адресом в SS.
Регистры индексов SI и DI используются для индексированной адресации, а также в строковых операциях.
Также как для вычисления адреса исполняемой команды процессору требуются значения, находящиеся в двух регистрах CS и IP, аналогично осуществляется доступ к данным в других сегментах.
Для доступа к сегменту данных процессор извлекает номер блока из регистра DS, а смещение из регистра ВХ или индексного регистра - SI или DI.
Следует отметить, что регистр ВХ – единственный из РОН – можно использовать в качестве указателя (индекса) для расширения адресации. С это целью он может использоваться в сочетании с регистрами SI и DI.