Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
64
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать
    1. Регистры микропроцессора

С точки зрения программиста микропроцессор 8086 включает следующие регистры:

– регистры общего назначения;

– сегментные регистры;

– регистр флагов;

– регистр указателя инструкции.

      1. Регистры общего назначения

Процессор 8086 имеет восемь 16-разрядных регистров общего назначения, обозначаемых AX,BX,CX,DX,SI,DI,BPиSP.

Старший и младший байты регистров AX,BX,CXиDXмогут использоваться отдельно. Они носят обозначенияAH,BH,CHиDHдля старших байтов иAL,BL,CLиDLдля младших байтов.

Несмотря на то, что эти регистры именуются регистрами общего назначения, каждый из них имеет специальные функции, которые не могут быть переданы какому-либо другому регистру. Общим является то, что все регистры общего назначения могут использоваться в командах пересылки, сложения, вычитания и логических операциях. О специальном назначении каждого регистра будет упоминаться в описании тех функций микропроцессора, где этот регистр используется. Ниже приведён краткий список специфических особенностей использования этих регистров.

Регистр AXявляется одним из операндов команд умножения и деления; хранит операнд, подвергающийся десятичной или символьной коррекции в операциях двоично-десятичной арифметики; используется в командах ввода-вывода в качестве регистра данных.

Регистр BXиспользуется при адресации операндов.

Регистр CXсодержит счётчик повторения цикла или количество разрядов, на которое производится сдвиг операнда в инструкциях сдвига.

Регистр DXрасширяет разрядность регистраAXв операциях умножения, деления и двойного сдвига; он содержит адрес порта ввода-вывода в инструкциях ввода-вывода.

Регистр SIсодержит смещение строки-источника в строковых операциях и может использоваться при адресации операндов.

Регистр DIсодержит смещение строки-приёмника в строковых операциях и может использоваться при адресации операндов.

Регистр BPиспользуется при адресации данных, расположенных в сегменте стека; может использоваться при адресации данных, расположенных в других сегментах.

Регистр SPявляется указателем стека.

      1. Сегментные регистры

Процессор 8086 содержит четыре 16-разрядных сегментных регистра: CS,DS,ESиSS, называемые соответственно сегментными регистрами кода, данных, дополнительных данных и стека.

Процессор использует содержимое сегментных регистров (так называемые селекторы сегментов) для формирования 20-разрядных физических адресов памяти, о чём говорилось выше, в подразделе 2.2.2 “Сегментация”. При обращениях к кодам команд всегда используется сегментный регистрCS, а при обращении к стеку (с использованием указателя стека или при адресации посредством регистраBP) – сегментный регистрSS, причём если адресация данных производится с помощью регистраBP, вместо сегментного регистраSSможно указать любой другой сегментный регистр. При обращении к данным в большинстве случаев по умолчанию используется регистр сегментный регистрDS, однако вместо него в этих ситуациях можно использовать любой другой сегментный регистр. Сегментный регистрESиспользуется при доступе к строкам-приёмникам в строковых операциях, в этом качестве он не может быть заменён каким-либо другим сегментным регистром.

Сегментные регистры не могут являться операндами арифметико-логических инструкций. В регистры DS,ESиSSзначение может быть загружено из какого-либо регистра общего назначения с помощью инструкцииMOVлибо извлечено из вершины стека инструкциейPOP. РегистрCSне может быть загружен с помощью инструкцииMOVилиPOP, новое значение в него загружается только при выполнении операций длинных переходов (инструкцииJMP,CALLиRET), при возврате из прерывания (инструкцияIRET) и при возникновении прерывания. Короткие переходы не изменяют регистрCS. Содержимое всех четырёх сегментных регистров может быть переслано в любой регистр общего назначения инструкциейMOVили занесено в стек инструкциейPUSH.