- •Введение
- •Внесение примесей
- •Аналоговые и цифровые схемы
- •Цифровая логика
- •Внутренняя структура микропроцессора.
- •Регистры
- •Системные шины
- •Пропускная способность шины.
- •Способы адресации данных
- •Прерывания
- •Типы прерываний
- •Программно-аппаратное управление обработкой прерываний
- •Программные прерывания
Внутренняя структура микропроцессора.
Любая ЭВМ предназначена для обработки информации причем, как правило, осуществляет эту обработку опосредовано – представляя информацию в виде чисел. Для работы с числами машина имеет специальную важнейшую часть – микропроцессор. Это универсальное логическое устройство, которое оперирует с двоичными числами, осуществляя простейшие логические и математические операции, и не просто как придется, а в соответствии с программой, т.е. в заданной последовательности. Для хранения этой заданной последовательности служат запоминающие устройства – ЗУ. ЗУ бывают постоянными – ПЗУ, в которых информация хранится, не изменяясь сколь угодно долго, и оперативными – ОЗУ, информация в которых может быть изменена в любой момент в соответствии с результатами ее обработки. Процессор общается с ОЗУ и ПЗУ через так называемое адресное пространство, в котором каждая ячейка памяти имеет свой адрес.
МП состоит из набора регистров памяти различного назначения, которые определенным образом связаны между собой и обрабатываются в соответствии с некоторой системой правил. Регистр – это устройство, предназначенное для хранения и обработки двоичного кода. К внутренним регистрам процессора относят: счетчик адреса команд, указатель стека, регистр состояний, регистры общего назначения.
Наличие счетчика команд было положено еще в работах фон Неймана. Роль счетчика состоит в сохранении адреса очередной команды программы и автоматическом вычислении адреса следующей. Благодаря наличию программного счетчика в ЭВМ реализуется основной цикл исполнения последовательно расположенных команд программы.
Стек – это особый способ организации памяти, при использовании которого достаточно сохранять адрес последней заполненной ячейки ОЗУ. Именно адрес последней заполненной ячейки ОЗУ и хранится в указателе стека. Стек используется процессором для организации механизма прерываний, обработки обращения к подпрограммам, передачи параметров и временного хранения данных.
В регистре состояний хранятся сведения о текущих режимах работы процессора. Сюда же помещается информация о результатах выполняемых команд, например: равен ли результат нулю, отрицателен ли он, не возникли ли в ходе операции ошибки и т.п. Использование и анализ в этом регистре происходит побитно, каждый бит регистра имеет самостоятельное значение.
Регистры общего назначения (РОН) служат для хранения текущих обрабатываемых данных или их адреса в ОЗУ. У некоторых процессоров регистры функционально равнозначны, в других назначение регистров строго оговаривается. Информация из одного регистра может предаваться в другой.
Регистры
Регистром называют устройство, предназначенное для временного хранения информации во время ее обработки. Процессоры 8086/8088 имеют 14 регистров, используемых для управления выполняющейся программой, для адресации памяти и для обеспечения арифметических вычислений. Каждый регистр имеет длину в одно слово (16 бит) и адресуется по имени. Биты регистра пронумерованы слева направо начиная с нулевого:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (в десятичной системе счисления)
Все нумерации связанные с архитектурой МП принято приводить в шестнадцатеричной системе счисления:
F E D C B A 9 8 7 6 5 4 3 2 1 0 (в шестнадцатеричной системе счисления)
Регистры условно разделены на 3 группы по логике использования:
- регистры общего назначения или регистры данных (РОН): AX, BX, CX, DX;
- регистры-указатели: SP, BP, DI, SI;
- сегментные регистры: CS, DS, SS, ES.
Кроме того, имеется указатель команд (IP), который иногда включают во вторую группу, и регистр флагов (FLAGS).
Регистры общего назначения (РОН) - "рабочие лошадки" программирования. Их особенность в том, что к их содержимому можно обращаться как к двухбайтному числу, так и к каждому байту по отдельности: на рис.1 каждый рабочий регистр разбит на старшую и младшую части. Буквы L и H в названиях регистров обозначают:
L - (low) младшие разряды;
H - (high) старшие разряды.
При написании программ можно обращаться к РОН как к целому регистру, так и к каждой его части независимо.
Регистр AX - первичный аккумулятор. Регистр является основным сумматором и применяется для всех операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций, а также как временные хранилища информации.
Регистр BX - базовый. Регистр базы используется для организации адресации в памяти, для арифметических целей. Это единственный регистр общего назначения, который может использоваться в качестве "индекса" для расширенной адресации.
Регистр CX - счетчик. Он управляет работой тех операций для которых требуется повторение и для арифметических действий.
Регистр DX - регистр данных. Он применяется для некоторых операций ввода-вывода и тех операций умножения и деления над большими числами, которые используют регистровую пару DX:AX.
Регистры-указатели - предназначены для указания адреса объекта в памяти системы. К их содержимому можно обращаться только как к двухбайтному числу:
- указатель стека SP. Используется для работы с данными в стековых структурах, позволяет временно хранить адреса и иногда данные. Он связан с регистром SS; его содержимое указывает адрес элемента на вершине стека. Может выполнять функции РОН в арифметических и логических операциях, однако, как правило, в таком качестве не используется;
- указатель базы BP. Используется как дополнительный указатель при работе с данными в стековых структурах, может использоваться в большинстве арифметических и логических операций;
индексный регистр-источник SI. Применяется в некоторых операциях над строками в качестве указателя адреса байта или слова, в адресации, в большинстве арифметических и логических операций;
индексный регистр-приемник DI. Указатель назначения для адреса байта или слова в строковых командах; может использоваться в адресации, в большинстве арифметических и логических операций.
Сегментные регистры - предназначены для осуществления сегментной организации программы. К их содержимому можно обращаться только как к двухбайтному числу; использование этих регистров в командах имеет строгие ограничения:
- регистр CS. Регистр сегмента кода содержит его (сегмента кода) начальный адрес. Этот адрес при сложении с указателем команд IP дает полный адрес команды, которая должна быть принята на исполнение. Его содержимое может быть изменено только при исполнении команд, изменяющих естественный ход выполнения программы, типа JMP (переход), CALL (вызов подпрограммы), RET (возврат из подпрограммы).
- регистр DS. Регистр сегмента данных содержит его же начальный адрес. Сумма его значения со смещением, заданным в команде, определяет адрес необходимой ячейки памяти. Все прямые и косвенные ссылки, использующие регистры BX, SI, DI определяются относительно регистра DS.
- регистр SS. Регистр сегмента стека, содержащий его начальный адрес. Содержимое регистров SP и BP, используемое в стековых операциях, обрабатывается процессором с учетом именно регистра SS.
- регистр ES. Некоторые операции над строками используют этот дополнительный сегментный регистр для управления адресацией памяти.
Регистр указатель команд IP - содержит смещение на команду, которая должна быть выполнена. Прямого доступа к IP нет, но его содержимое может меняться под воздействием таких команд, как JMP, CALL, RET или отладчиков. Используется в паре с регистром кодового сегмента CS. Благодаря этому регистру компьютер "знает", что ему делать дальше.
Регистры 32-разрядного программирования. При 32-разрядном программировании 16-битовые регистры заменяются 32-битовыми. При этом 8-битовые и 16-битовые регистры открыты для использования:
AL, AH, BL, BH…. 8-разрядный режим адресации
AX, BX, CX …. 16-разрядный режим адресации
EAX, EBX, ECX …. 32-разрядный режим адресации
В данном курсе вопросы 32-разрядного программирования рассматриваться не будут.
Регистр флагов - Flags. Содержит информацию о текущем состоянии машины и о результатах выполнения операций. Многие арифметические и логические команды изменяют значения флагов. Этот регистр своего названия не имеет, но в отладчиках его величают как Flags. Девять из 16 битов регистра являются активными и называются флагами и имеют свои имена, которые могут быть использованы программистом. Флаг - это бит, принимающий значение 1, если он установлен, и значение 0, если он сброшен. Регистр флагов имеет следующую структуру:
Регистр флагов (Flags) |
|||||||||||||||
Биты регистра |
|||||||||||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||||| |
|||||| |
|||||| |
|||||| |
OF |
DF |
IF |
TF |
SF |
ZF |
|||||| |
AF |
|||||| |
PF |
|||||| |
CF |
CF, PF, AF, ZF, OF - это флаги условий, а TF, IF, DF - флаги состояний.
Их назначение приведено в нижеследующей таблице:
Бит |
Назначение |
Флаги условий |
|
CF |
Флаг переноса. Содержит признак переноса информации из старшего бита (после арифметических операций) или последний бит при операциях сдвига. |
PF |
Флаг четности. Устанавливается в 1, если в8 битах результата очередной команды содержится четное число единиц. |
AF |
Флаг дополнительного переноса. Фиксирует работу операций над двоично-десятичными данными. |
ZF |
Флаг нуля. Устанавливается, если результат выполнения команды равен нулю |
SF |
Флаг знака. Копирует старший бит результата выполнения команды. |
OF |
Флаг переполнения |
Флаги состояний |
|
TF |
Флаг трассировки. Обеспечивает возможность работы процессора в пошаговом режиме выполнения команд. |
IF |
Флаг внешних прерываний. Если IF=1, прерывания разрешены, если IF=0 - блокируются |
DF |
Флаг направления. Устанавливает направление обработки строк |
