Микропроцессорная память

Микропроцессорная память базового микропроцессора включает четырнадцать 2-байтовых запоминающих регистров. Все регистры можно разделить на четыре группы:

- универсальные регистры: AX, BX, CX, DX;

- сегментные регистры: CS, DS, SS, ES;

- регистры смещения: IP, SP, BP, SI, DI;

- регистр флагов FL.

Каждый из универсальных регистров (или регистров общего назначения) может использоваться для временного хранения любых данных, при этом можно работать с каждым регистром целиком, а можно отдельно с каждой его половиной (регистры AH, BH, CH, DH – старшие байты, а регистры AL, BL, CL, DL – младшие байты соответствующих 2-байтовых регистров). Но каждый из универсальных регистров может использоваться и как специальный при выполнении некоторых конкретных команд программы. В частности:

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

- регистр BX часто используется для хранения адреса базы в сегменте данных и начального адреса поля памяти при работе с массивами;

- регистр CX – регистр-счетчик, используется как счетчик числа повторений при циклических операциях;

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

Сегментные регистры используются для хранения начальных адресов полей памяти (сегментов), отведенных в программах для хранения:

- команд программы (сегмент кода – CS);

- данных (сегмент данных – DS);

- стековой области памяти (сегмент стека – SS);

- дополнительной области памяти данных при межсегментных пересылках (расширенный сегмент – ES), поскольку размер сегмента в реальном режиме работы микропроцессора ограничен величиной 64 Кбайт.

Регистры смещений используются для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов):

- регистр IP (Instruction Pointer) хранит смещение адреса текущей команды программы;

- регистр SP (Stack Pointer) – смещение вершины стека (текущего адреса стека);

- регистр BP (Base Pointer) – смещение начального адреса поля памяти, непосредственно отведенного под стек;

- регистры SI, DI (Source Index и Destination Index соответственно) предназначены для хранения адресов индекса источника и приемника данных при операциях над строками и им подобных.

Регистр флагов FL содержит условные одноразрядные признаки-маски или флаги, управляющие прохождением программы в ПК. Флаги работают независимо друг от друга и лишь для удобства они помещены в единый регистр. Всего в регистре содержится 9 флагов: 6 их них статусные, отражают результаты операций, выполненных в компьютере (их значения используются, например, при выполнении условной передачи управления – команд ветвления программы), а три других – управляющие, непосредственно определяют режим исполнения программы.

Статусные флаги:

- CF (Carry Flag) – флаг переноса; содержит значение «переносов» (0 или 1) из старшего разряда при арифметических операциях и некоторых операциях сдвига и циклического сдвига;

- PF (Parity Flag) – флаг четности; проверяет младшие 8 битов результатов операций над данными; нечетное число единичных битов приводит к установке этого флага в 0, а четное – в 1;

- AF (Auxiliary Carry Flag) – флаг логического переноса при двоично-десятичной арифметике; вспомогательный флаг переноса устанавливается в 1, если арифметическая операция приводит к переносу или заему четвертого справа бита однобайтового операнда; этот флаг используется при арифметических операциях над двоично-десятичными кодами и кодами ASCII;

- ZF (Zero Flag) – флаг нуля; устанавливается в 1, если результат операции равен нулю; если результат не равен нулю, то флаг обнуляется;

- SF (Sign Flag) – флаг знака; устанавливается в соответствии со знаком результата после арифметических операций: положительный результат устанавливает флаг в 0, отрицательный – в 1;

- OF (Overflow Flag) – флаг переполнения; устанавливается в 1 при арифметическом переполнении: если возник перенос в знаковый разряд при выполнении знаковых арифметических операций, если частное от деления слишком велико и переполняет регистр результата и т.д.

Управляющие флаги:

- TF (Trap Flag) – флаг системного прерывания (трассировки); единичное состояние этого флага переводит процессор в режим пошагового выполнения программы (режим трассировки);

- IF (Interrupt Flag) – флаг прерываний; при нулевом состоянии этого флага прерывания запрещены, при единичном – разрешены;

- DF (Direction Flag) – флаг направления; используется в строковых операциях для задания направления обработки данных; при нулевом состоянии флага команда увеличивает содержимое регистров SI и DI на 1, обуславливая обработку строки «слева направо», при единичном – «справа налево».

Вопросы для самопроверки:

1. Поясните назначение, основные функции и структуру арифметико-логического устройства.

2. Поясните назначение, основные функции и структуру устройства управления.

3. Назовите регистры МПП и дайте им краткую характеристику.