Организация регистров ВМ86
Набор программно-доступных регистров МП ВМ86 [17, 22] имеет большую функциональную неоднородность. По этой причине его нельзя назвать блоком РОН. Система команд МП ВМ86 широко использует неявную и укороченную форму представления адресной информации. В связи с этим ряд команд оперирует одним-двумя определенными регистрами из всего набора или некоторым его подмножеством. Это обстоятельство затрудняет программирование МП, так как требует от программиста учета всех функциональных особенностей, присущих его регистрам. Однако в результате широкого применения таких укороченных форм адресации объектный код МП оказывается намного короче, чем он был бы при использовании блока РОН. Время исполнения такого кода за счет сокращения времени выборки команд будет существенно меньше.
Микропроцессор ВМ86 содержит 14 программно-доступных регистров: восемь общецелевых регистров адреса/данных AX—SP, четыре сегментных регистра CS—ES, программный счетчик IP и флажковый регистр F. Все регистры имеют по 16 разрядов. Их организация приведена на рис. 6.2.
Во время выполнения программы регистры AX—SP содержит адреса или данные. Первые четыре регистра АХ—ВХ, как правило, используются для хранения данных, поэтому их называют регистрами данных. В командах с байтовыми операндами каждая половина регистров данных AL—ВН может быть адресована отдельно. Эти подрегистры предназначены для хранения однобайтовых данных. Регистры ВР—SP обычно называют адресными регистрами, так как они выполняют функцию хранения 16-разрядных адресов. Адресные регистры ВР, SI и DI служат базовыми и индексными регистрами при различных способах адресации. Для этой же цели может быть использован и регистр ВХ. Указатель стека SP предназначен для организации стека, хранящего локальные переменные, адреса возвратов из подпрограмм и процедур обслуживания прерываний. Он всегда указывает на верхний элемент стека, который заполняется в сторону уменьшения адресов. Такая организация стека соответствует стандартной.
Существует и более узкая специализация этих регистров. Так, регистр AX (Accumulator) выполняет роль 16-разрядного, а AL—байтового аккумулятора. Для работы с ним предусмотрен полный набор команд со специальным коротким форматом. Такие операции, как ВВ данных, осуществляют обмен, только используя эти регистры. Широкое применение аккумулятора при обработке данных дает возможность программисту сократить длину программы.
Регистр данных DX (Data) служит расширением аккумулятора до 32 разрядов, выполняя при этом функции старшего слова. Такое расширение необходимо при осуществлении операций 16-разрядного умножения и деления. В ряде команд ВВ DX может использоваться в качестве регистра косвенного адреса порта ВВ.
Регистр ВХ (Base) кроме базового или индексного может служить регистром косвенной адресации. Такая возможность предусматривается для совместимости систем команд ВМ86 и ВМ80. Еще одно назначение регистра ВХ—указатель кадра FP (Frame Pointer).
В некоторых командах регистр СХ (Counter) играет роль счетчика циклов, а младший байт CL применяется при реализации команд параметрического сдвига.
Адресные регистры ВР—DI также имеют узкую специализацию. Так, регистры SI (Source Index) и DI (Destination Index) могут быть использованы в качестве регистров косвенной адресации. В командах обработки строк SI и DI являются регистрами автоинкрементной или автодекрементной адресации. Тип адресации определяется флажком DF в регистре F. Если DF = 1, то реализуется автодекрементный способ адресации, в противном случае—автоинкрементный. При этом SI указывает на исходную строку, а DI—на результирующую строку. Регистры SI и DI в паре с регистрами ВХ и ВР (Base Pointer) могут быть использованы при различных способах базовой адресации с индексированием.
Сегментные регистры CS—ES служат для указания четырех сегментов, располагаемых в основной памяти.
Базовые адреса этих сегментов однозначно определяются содержимым сегментных регистров:
base20 = 16 • sel
где sel—значение сегментного регистра, известное также под названием селектор. Регистр CS (Code Segment) указывает на сегмент кода, служащего для хранения исполняемых МП программ. Регистр SS (Stack Segment) указывает на стековый сегмент, резервируемый под системный стек. Два оставшихся регистра DS (Data Segment) и ES (Extra Segment) служат для указания на основной и дополнительный сегменты данных, используемые для хранения переменных.
Функцию счетчика команд в МП ВМ86 выполняет регистр IP (Instraction Pointer). Он содержит 16-разрядное значение смещения (offset) в сегменте кода, указывающее на следующий элемент программной последовательности, который подлежит выборке.
Слово состояния программы F (Flags) содержит девять флажков:
CF | (Carry Flag) | Флажок переноса |
PF | (Parity Flag) | Флажок четности |
AF | (Auxiliary Carry Flag) | Флажок дополнительного переноса |
ZF | (Ziro Flag) | Флажок нулевого результата |
SF | (Sign Flag) | Флажок знака |
TF | (Trap Flag) | Флажок пошагового исполнения |
IF | (Interrupt Enable Flag) | Флажок разрешения прерывания по входу INT |
DF | (Direction Flag) | Флажок направления |
OF | (Overflow Flag) | Флажок переполнения |
Флажки признаков результата CF, PF, AF, ZF, SF и OF имеют стандартное назначение (см. § 1.4). Флажки TF, IF, DF относятся к классу управляющих работой процессора. Следует отметить, что структура младшего байта F полностью соответствует структуре флажкового регистра МП ВМ80 (см. рис. 2.2).
Дата добавления: 2019-02-07; просмотров: 413;