CF – признак переноса из старшего разряда при выполнении операции
ZF – признак нуля: 1 - число = 0
AF – признак дополнительного переноса, сигнал, возникающий между тетрадами в двоичной операции.
SF – признак знака: 1 - число < 0, 0 - число > 0
PF – признак четности;
ОF – признак переполнения;
DF – признак направления;
IF – признак прерывания;
ТF – признак трассировки;
В блоке преобразования адресов формируются физические адреса данных, расположенных в основной памяти. Наконец, регистры используются для хранения управляющей информации: адресов и данных.
Всего в состав микропроцессора i8086 входит четырнадцать 16-битовых регистров (см. рис.):
a) четыре регистра общего назначения (регистры данных):
AX - регистр-аккумулятор,
BX - базовый регистр,
СХ - счетчик,
DX - регистр-расширитель аккумулятора (по умолчанию для хранения данных в командах умножения и деления);
б) три адресных регистра:
SI - регистр индекса источника,
DI - регистр индекса результата,
BP - регистр-указатель базы (позволяет прочитать произвольный элемент стека);
в) три управляющих регистра:
SP - регистр-указатель стека (адрес последнего числа, записанного в стек),
IP - регистр-счетчик команд (указывает адрес команды, подлежащей выполнению, т.е. следующей),
регистр флагов;
Данные регистры составляют сверхоперативную память.
г) четыре сегментных регистра:
CS - регистр сегмента кодов,
DS - регистр сегмента данных,
ES - регистр дополнительного сегмента данных,
SS - регистр сегмента стека.
Процессор при обработке программы взаимодействует с оперативной памятью, которая представляется единым массивом однобайтных ячеек, обращение к которым происходит по их номерам (физическим адресам). Число ячеек зависит от разрядности шины адреса и составляет для процессора i8086 1Мбайт.
Для обращения к памяти процессор предварительно помещает адрес ячейки в один из своих регистров. Шестнадцатиразрядный процессор i8086 не может хранить в своих регистрах двадцатиразрядный адрес, поэтому в нем применена так называемая сегментация памяти, которая заключается в том, что истинный, физический адрес ячейки хранится в двух регистрах. Один из них – сегментный (хранит адрес начала блока памяти). Второй регистр хранит величину смещения адреса требуемой ячейки от начала сегмента. Адрес ячейки памяти записывается в виде двойного слова (4 байта): <сегмент>:<смещение>.
Команды могут формировать адреса операндов различными способами. Реализованы следующие режимы адресации:
1. Регистровая прямая (посылочная) - операнд находится в регистре.
Обозначение - <регистр>,< регистр > - АХ, ВХ, СХ, DX, SI, DI, BP, SP, AL, BL, СL, DL, AH, BH, CH, DH.
Пример: (приведен операторами языка ассемблера)
mov АХ,SI ; переслать содержимое регистра SI в регистр АХ.
2. Непосредственная - непосредственный операнд (константа) присутствует в команде.
Обозначение - < константное выражение > .
Пример:
mov AX, 093Ah ; занести константу 093Ah в регистр АХ.
3. Прямая (абсолютная)- исполнительный адрес операнда присутствует в команде.
Обозначение - < переменная >+/-< константное выражение >.
Пример:
mov AX, WW ; переслать в АХ слово памяти с именем WW
mov BX, WW+2 ; переслать в ВХ слово памяти отстоящее от переменной с именем WW на 2 байта.
4. Регистровая косвенная - регистр содержит адрес операнда.
Обозначение - [< регистр >], < регистр > - ВХ. ВР. SI, DI.
Пример:
mov [ BX ], CL ; переслать содержимое регистра CL по адресу, находящемуся в регистре ВХ.
5. Регистровая относительная - адрес операнда вычисляется как сумма содержимого регистра и смещения.
Обозначение - < переменная >[< регистр >] или [< регистр >]< константное выражение >, < регистр > - SI или DI индексная адресация, ВХ или ВР - базовая адресация.
Пример:
mov АХ, WW[SI] ; переслать в АХ слово из памяти, адрес которого вычисляется как сумма содержимого регистра SI и смещения WW.
6. Индексно - базовая - адрес операнда вычисляется как сумма содержимых базового и индексного регистров и смещения.
Обозначение - [< базов. регистр>][< индексн. регистр>] или <переменная >[<базов. регистр >][< индекс. регистр >] или [<базов. регистр >][< ин-декс. регистр >]< константное выражение>, где < индекс. регистр > - SI или DI, < базов. Регистр > - ВХ или ВР.
Пример:
mov [BX+ SI+ 2], CL; переслать содержимое регистра CL по адресу, вычисляемому как сумма содержимого регистров ВХ, SI и константы 2.
7.Стековая адресация - реализует неявное задание адреса операнда. Хотя адрес обращения в стек отсутствует в команде, он формируется с помощью указателя SP в котором автоматически при записи или чтении устанавливается номер последней занятой ячейки стека.
Прерывания осуществляют механизм переключения с одной задачи на другую. Прерывания рассматриваются с двух сторон:
- программно определенные события (предусмотрены текущей программой),
- события не предопределенные, поэтому процессор должен переключаться на какую-то задачу
Следовательно, различают 2 вида прерываний: аппаратные и программные.
1. Программные вызываются из программы с помощью команды int.
2. При аппаратном прерывании процедура прерывания инициируется внешним сигналом IRQ, поступившим с программируемого контроллера прерываний (КПР). Обработка запроса в КПР происходит по следующей схеме:
Происходит фиксация запросов и их селекция по принципу приоритета, который задается номером: запрос с меньшим номером имеет высший приоритет, и наоборот.
КПР выдает сигнал int в процессор. Периодически в конце каждой команды процессор анализирует сигнал int. Если это событие произошло, то процессор прекращает выполнять текущую операцию и приступает к процедуре прерывания:
ЦП записывает в стек содержимое регистра флагов IF (флаг разрешения прерывания), CS и указатель IP, чтобы сохранить состояние текущей команды в момент прерывания. Затем он сбрасывает флаг и передает управление программе обработки прерывания, загружая в регистр CS и IP адрес вектора прерываний, который представляет собой 2 числа (4 байта), задающие местонахождение обработчика прерывания. В оперативной памяти размещаются 256 векторов прерываний (1024 байта).
Адрес вектора прерывания с номером прерывания N вычисляется как N*4. В младшем байте хранится значение IP, а в старшем CS.
Чтобы вернуться из прерывания, необходимо использовать команду iret, которая восстанавливает из стека содержимое CS, IP и регистра флагов.
Программные прерывания применяются в первую очередь для вызова системных обслуживающих программ - функций DOS и BIOS. Большая часть векторов прерываний зарезервирована для выполнения определенных действий; часть из них автоматически заполняется адресами системных программ при загрузке системы. Вектора прерываний можно условно разбить на следующие группы:
векторы внутренних прерываний процессора (0lh, 02h и др.);
векторы аппаратных прерываний (08h...0Fh и 70h...77h);
программы BIOS обслуживания аппаратуры компьютера (10h, 13h, 16h и др.);
программы DOS (21h, 22h, 23h и др.);
адреса системных таблиц BIOS
Ключевым принципом построения памяти ЭВМ является ее иерархическая организация (принцип, сформулированный еще Джоном фон Нейманом), которая предполагает использование в системе памяти компьютера запоминающих устройств (ЗУ) с различными характеристиками.
ВЗУ – энергонезависимая память, используемая для хранения больших объемов информации. Её емкость больше, чем в ОЗУ, но быстродействие во много раз меньше.
ОЗУ используется для хранения данных и программ (RAM – устройство с произвольным доступом). ОЗУ характеризуется следующими параметрами:
1. Время обращения: время чтения, время записи.
2. Емкость – количество адресуемых элементов в памяти. Ячейка памяти – то, что считывается за одно обращение. Количество данных (разрядность), считываемых за одно обращение называется шириной выборки. Адресуемый элемент <> ширины. Емкость может рассматриваться как физическая и как размер адресного пространства.Все современные ОЗУ – полупроводниковые устройства:
1. Статические ОЗУ.
В качестве элемента памяти используется триггер. Статические ЗУ обладают меньшей плотностью хранения информации. Однако триггер со времен первых компьютеров был и остается самым быстродействующим элементом памяти. Поэтому статическая память позволяет достичь наибольшего быстродействия, обеспечивая время доступа в единицы и даже десятые доли наносекунд, что и обусловливает ее использование в ЭВМ, главным образом, в высших ступенях памяти – кэш-памяти всех уровней. Триггер создается на двух транзисторах, охваченных обратной связью, и имеет два различных устойчивых состояния. Статические ОЗУ поддерживают режимы хранения, чтения, записи, чтения и записи. Главными недостатками статической памяти являются ее относительно высокие стоимость и энергопотребление.
2. Динамические ОЗУ.
Запоминающая ячейка представляет собой один моп-транзистор, который управляется напряжением и ведет себя практически как ключ. Недостатки, связанные с необходимостью регенерации информации из-за утечки тока и относительно невысоким быстродействием, компенсируются другими показателями малыми размерами элементов памяти и, следовательно, большим объемом микросхем этих ЗУ, а также низкой их стоимостью.
СОЗУ – сверхоперативное запоминающее устройство. Его быстродействие примерно в 100 раз больше быстродействия ОЗУ (реализовано на той же базе, что ЦП, поэтому по быстродействию сравнимо с ним), но емкость в несколько раз меньше.