Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Приложения / AppIntel8080.doc
Скачиваний:
63
Добавлен:
20.06.2014
Размер:
441.86 Кб
Скачать

Регистры процессора i8080

Теперь рассмотрим такие компоненты архитектуры процессора как регистры. i8080 имеет десять программно-доступных регистров:

1. IP (Instruction Pointer) — указатель команд. Содержит адрес очередного байта команды. Другое название этого регистра — счетчик программы (Program Counter, PC). На линейных участках программы он инкрементируется схемой инкремента-декремента в каждом машинном цикле. При передаче управления его содержимое заменяется адресом перехода.

2. SP (Stack Pointer) — указатель стека. Содержит адрес верхушки стека, т.е. адрес последней заполненной ячейки стека. SP декрементируется перед помещением в стек очередного байта и инкрементируется после извлечения очередного байта. Помещение в стек и извлечение из стека осуществляется двумя байтами. В системах на основе процессоров Intel принят обратный порядок хранения слов (little endian order — в противоположность big endian order — прямому порядку хранения слов) в памяти, при котором по порядку возрастания адресов сначала хранится младший байт, затем старший. В соответствии с ним сначала в стек помещается старший байт, затем младший. Извлечение из стека происходит в обратном порядке.

3. Регистры общего назначения (РОН). Это шесть 8-ми разрядных (B, C, D, E, H, L) или три 16-ти разрядных (BC, DE, HL) регистра. Используются в командах передачи данных, арифметических и логических командах как операнды-источники или операнды-приемники. Имеют специализацию указателей данных (содержат адрес операнда): HL — в командах перемещения данных (MOV), арифметических и логических командах с операндом в памяти данных; BC, DE — в командах загрузки или размещения аккумулятора.

4. А — аккумулятор или регистр результата. Он также относится к группе регистров общего назначения. Однако, его описание вынесено в отдельный пункт, так как этот регистр имеет наибольшую специализацию. По умолчанию (неявно) аккумулятор используется в качестве источника и приемника во многих командах. По этой причине он сильнее других регистров связан с АЛУ.

5. F — регистр флагов (признаков, условий, состояния). Этот регистр также сильно связан с АЛУ. Его формат таков:

7

6

5

4

3

2

1

0

S

Z

AC

P

CY

CY (Carry) — флаг переноса;

P (Parity) — флаг паритета (четности);

AC (Auxiliary Carry) — флаг дополнительного переноса;

Z (Zero) — флаг нуля;

S (Sign) — флаг знака.

Флаги, признаки и условия выполнения команд

Все эти флаги являются признаками результата предыдущей арифметической или логической операции. Потому часто используется другое название регистра флагов — регистр признаков. Значения флагов влияют на процесс ветвления программы (передачу управления, поток управления). Ветвления: переходы, вызовы подпрограмм и возвраты из подпрограмм — бывают безусловными и условными. Последние осуществляются при выполнении какого-либо условия. Количество возможных условий и, соответственно, количества условных переходов, вызовов и возвратов связаны с количеством флагов следующим образом:

NC=2(NF-1),

где NC — количество условий;

NF — количество флагов.

Единственным флагом, который не порождает никаких условий, является флаг дополнительного переноса. Он используется процессором при выполнении команды десятичной коррекции аккумулятора. Оставшиеся четыре флага соответствуют следующим условиям:

  • перенос (CY=1);

  • нет переноса (CY=0);

  • чет (P=1);

  • нечет (P=0);

  • ноль (Z=1);

  • не ноль (Z=0);

  • минус (S=1);

  • плюс (S=0).

По этой причине регистр флагов называется также регистром условий.

Признаки результата предыдущей операции определенным образом характеризуют состояние процессора и программы. Поэтому регистр флагов называют еще и регистром состояния. А совокупность аккумулятора и регистра флагов — словом состояния процессора или программы (PSW, Processor (Program) Status Word). Однако нужно иметь в виду, что термин состояние используется также и в другом смысле, как тип машинного цикла, характеризуемый байтом состояния, выводимым процессором на шину данных в первом такте каждого машинного цикла.

Хотя аккумулятор и называется по-другому регистром результата, не всегда результат выполнения арифметической операции оказывается в нем. Поэтому надо отметить, что значения флагов устанавливаются именно по результату операции, а не по значению аккумулятора.

Программно-недоступные регистры процессора i8080

Теперь необходимо упомянуть о программно-недоступных регистрах. Их на структурной схеме i8080 два:

  1. WZ — регистр временного хранения. Его размер — 16 бит. Используется при обменах, например, при обмене пары HL с верхушкой стека (команда XTHL).

  2. Регистр команд. В него помещается код операции (КОП) команды. Процессор в первом цикле извлекает КОП команды и помещает его в регистр команд. Дешифратор команд дешифрирует его, и на основе этого устройство управления формирует сигналы, которые организуют дальнейший процесс выполнения этой команды.

Тип данных процессора i8080

Единственным типом данных процессора i8080 являются данные в дополнительном коде. Т. е. при выполнении арифметических операций процессор рассматривает операнды как числа в дополнительном коде. Положительные числа в дополнительном коде представляются так же, как и в прямом коде. Отрицательные числа представляются в дополнительном коде по следующему правилу:

        1. В двоичной системе счисления записывается абсолютное значение (модуль) данного отрицательного числа. Количество разрядов соответствует размеру операнда.

        2. Разряды инвертируются.

        3. К полученному числу прибавляется единица.

Пример. Представление числа -9 в дополнительном коде.

  1. 910 = 000010012

  2. Побитная инверсия дает 11110110

  3. Прибавляем единичку и получаем 11110111= F7h

Проверка: F7 + 9 = 100.

Видно, что у отрицательных чисел всегда в старшем разряде единица. Поэтому флаг знака повторяет старший бит результата.

Вычитание происходит путем сложения уменьшаемого с вычитаемым в дополнительном коде. Во флаг CY при этом записывается инвертированное значение переноса:

9 00001001

-6 +11111010

3 100000011

CY=0 (перенос инвертируется)

6 00000110

-9 +11110111

-3 011111101

CY=1 (перенос инвертируется)

Для флага вспомогательного переноса AC это не так. Этот флаг командами вычитания не инвертируется. В этом флаге при выполнении команд вычитания оказывается реальный перенос из третьего разряда аккумулятора в четвертый, возникающий при сложении уменьшаемого и взятого с обратным знаком вычитаемого. Рассмотрим в качестве примера команду SUB A, B при условии, что A=02h, а B=01h. После выполнения этой команды A=01h, AC=1, CY=0. Рассмотрим, как выполняет эту операцию процессор:

Видно, что перенос происходит как из третьего, так и из седьмого разряда. Перенос из третьего разряда не инвертируется (AC=1), а из седьмого — инвертируется (CY=0).

СИСТЕМА КОМАНД ПРОЦЕССОРА i8080

Общая характеристика системы команд i8080

Группы команд процессора i8080

Всего в системе команд процессора i8080 имеется 244 команды.

Фирма Intel выделяет пять групп команд процессора i8080:

  1. Команды передачи данных: регистр - регистр, регистр - память, память - регистр, память команд - память данных:

    1. Перемещение.

    2. Загрузка.

    3. Размещение.

    4. Обмен.

  2. Арифметические команды:

    1. Сложение-вычитание.

    2. Инкремент-декремент.

    3. Десятичная коррекция аккумулятора.

  3. Логические команды:

    1. Логические операции И, ИЛИ, Искл. ИЛИ, НЕ.

    2. Сравнение.

    3. Сдвиг.

    4. Установка переноса.

  4. Команды перехода (ветвления, передачи управления):

    1. Условные и безусловный переходы.

    2. Условные и безусловный вызовы подпрограмм, в т. ч. повторные запуски (рестарты).

    3. Условные и безусловный возвраты из подпрограмм.

  5. Команды стека, ввода-вывода и машинного управления:

    1. Помещение в стек и извлечение из стека 16-разрядных регистров (кроме PC), в том числе слова состояния программы (Program Status Word, PSW), старший байт которого представляет собой аккумулятор, а младший — регистр флагов.

    2. Ввод-вывод.

    3. Разрешение-запрещение прерываний.

    4. Останов.

    5. Отсутствие операции.

Формат команд процессора i8080

По количеству байтов команды процессора i8080 могут быть однобайтными, двухбайтными и трехбайтными. Если в команде используется непосредственная или прямая адресация, то число байтов в команде — два или три. В остальных случаях команда состоит из одного байта. Первый байт команды называется кодом операции. Он также имеет свой определенный формат.

Признаки результата выполнения команд процессора i8080

В i8080 фиксируется пять признаков результата выполнения команд:

  1. С (CY) — признак (флаг) переноса (Carry). Он устанавливается в следующих случаях:

  • если был перенос из старшего разряда результата операции сложения или же заем в старший разряд уменьшаемого при выполнении команды вычитания;

  • если был сдвиг единички из крайнего разряда аккумулятора при выполнении команд сдвига;

  • если выполнилась команда установки признака переноса или его инвертирования в случае первоначального нулевого значения.

  • Р — признак (флаг) четности (Parity). Он устанавливается в том случае, если число единичек результата арифметической или логической операции четно.

  • АС — признак (флаг) дополнительного переноса. Он устанавливается в том случае, если был перенос из 3-го разряда в 4-й или же заем из 4-го разряда в 3-й при выполнении арифметических операций.

  • Z — признак (флаг) нуля (Zero). Он устанавливается в том случае, если результат арифметической или логической операции равен нулю.

  • S — признак (флаг) знака (Sign). Он устанавливается в том случае, если результат арифметической или логической операции — отрицательное число (повторяет старший бит результата).

    Сбрасываются флаги, соответственно, в противоположных перечисленным случаях.

    Все они содержатся в регистре флагов, который является также регистром признаков, поскольку все флаги этого регистра являются признаками результата. Четыре из этих пяти признаков формируют восемь условий команд условных переходов, вызовов подпрограмм и возвратов из подпрограмм.

    Способы адресации в процессоре i8080

    В командах процессора i8080 используются пять базисных способов адресации:

    1. Неявная адресация.

    Информация о местонахождении операндов в команде не содержится. Оно определяется неявно типом операции. Пример — команда STC — установить перенос.

    1. Регистровая адресация.

    Информация о местонахождении операндов представляет собой код регистра, который и является этим местонахождением. Пример — команда ADD C;

    1. Непосредственная адресация.

    Входные операнды находятся в самой команде и следуют непосредственно за кодом операции команды (первым байтом команды). В зависимости от типа операции ими могут быть данные или адрес. Примеры — ADI data, JMP addr;

    1. Прямая адресация.

    Информация о местонахождении операнда представляет собой адрес ячейки памяти или порта ввода-вывода внешнего устройства, который содержится в команде и следует непосредственно (прямо) за кодом операции. Пример — LDA addr16.

    1. Косвенная (косвенно-регистровая) адресация.

    Информация о местонахождении операнда представляет собой код регистра, который содержит адрес ячейки памяти, в которой находится операнд. Эта информация может и не присутствовать в команде в явном виде, а определяться типом операции и специализацией регистров процессора. Примеры — ADD M (регистр, содержащий адрес одного из операндов команды, HL, определяется неявно, в соответствии со своей специализацией), LDAX B (код регистра, содержащего адрес операнда-источника, BC, содержится в команде).

    Кодировка регистров в командах процессора i8080

    Кодировка регистров, а также ячейки памяти в командах процессора i8080 такова:

    8-разрядные регистры:

    000 — B

    001 — C

    010 — D

    011 — E

    100 — H

    101 — L

    110 — M (ячейка памяти)

    111 — A

    16-разрядные регистры:

    00 — BC

    01 — DE

    10 — HL

    11 — SP

    Если в мнемонике команды есть буква X, например, DCX B, INX B, LXI B, STAX B, то в операции участвует пара регистров (16-разрядный регистр).

  • Соседние файлы в папке Приложения