Общие сведения Запущен


Download 368.6 Kb.
bet3/5
Sana10.04.2023
Hajmi368.6 Kb.
#1348697
1   2   3   4   5
Bog'liq
Intel 8080

Описание[править]

Модель программирования[править]



микроархитектура i8080

Регистры Intel 8080

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

(разрядность)

Основные регистры

A

Флаги

Program Status Word

B

C

B

D

E

D

H

L

H (косвенный адрес)

Индексные регистры

SP

Stack Pointer

Счетчик программ

ПК

P рограмма C унтер

Регистр состояния 16


S

Z

-

AC

-

P

-

C

Флаги

Intel 8080 является преемником 8008. Он использует тот же базовый набор команд и модель регистра, что и 8008, хотя он не совместим ни с исходным кодом, ни с двоичным кодом, совместимым с его предшественником. Каждая инструкция в 8008 имеет эквивалентную инструкцию в 8080. 8080 также добавляет 16-битные операции в свой набор команд. В то время как 8008 требовал использования пары регистров HL для косвенного доступа к своему 14-битному пространству памяти, 8080 добавил режимы адресации, чтобы обеспечить прямой доступ к своему полному 16-битному пространству памяти. Внутренний 7-уровневый стек вызовов 8008 был заменен выделенным 16-битным регистром указателя стека (SP). 40-пиновая DIP-упаковка 8080 позволяет ему предоставлять 16-битную шину адресов и 8-битную шину данных, обеспечивая доступ к 64 КБ (2 16 байт) памяти.

Регистры[править]


Процессор имеет семь 8-разрядных регистров (A, B, C, D, E, H и L), где A-основной 8-разрядный аккумулятор. Остальные шесть регистров могут использоваться как отдельные 8-битные регистры, так и в трех 16-битных парах регистров (BC, DE и HL, называемых B, D и H в документах Intel) в зависимости от конкретной инструкции. Некоторые инструкции также позволяют использовать пару регистров HL в качестве (ограниченного) 16-битного аккумулятора. Псевдо-регистр M, который относится к разыменованной ячейке памяти, на которую указывает HL, может использоваться практически везде, где могут использоваться другие регистры. 8080 имеет 16-битный указатель стека на память, заменяющий внутренний стек 8008, и 16-битный счетчик программ.

Флаги[править]


Процессор поддерживает внутренние флаговые биты (регистр состояния), которые указывают результаты арифметических и логических инструкций. На флаги влияют только определенные инструкции. Флаги:

  • Знак (Ы), установленный, если результат отрицательный.

  • Zero (Z), устанавливается, если результат равен нулю.

  • Четность (P), устанавливается, если число 1 бит в результате четное.

  • Carry (C), устанавливается, если последняя операция сложения привела к переносу или если последняя операция вычитания потребовала заимствования

  • Вспомогательный перенос (AC или H), используемый для двоично-десятичной арифметики (BCD).

Бит переноса может быть установлен или дополнен конкретными инструкциями. Инструкции условного ветвления проверяют различные биты состояния флага. Флаги могут быть скопированы группой в аккумулятор. Аккумулятор A и флаги вместе называются регистром PSW или словом состояния программы.

Команды, инструкции[править]


Как и во многих других 8-битных процессорах, для простоты все инструкции кодируются в один байт (включая номера регистров, но исключая непосредственные данные). За некоторыми из них может следовать один или два байта данных, которые могут быть непосредственным операндом, адресом памяти или номером порта. Как и более продвинутые процессоры, он имеет инструкции автоматического ВЫЗОВА и RET для многоуровневых вызовов и возвратов процедур (которые даже могут быть условно выполнены, как прыжки) и инструкции для сохранения и восстановления любой 16-битной пары регистров в стеке машины. Восемь однобайтовых инструкций вызова (RST) для подпрограмм существуют по фиксированным адресам 00h, 08h, 10h, ..., 38h. Они предназначены для поставки внешним оборудованием для вызова соответствующей процедуры обслуживания прерываний, но также часто используются в качестве быстрых системных вызовов. Медленнее всего выполняется инструкция is XTHL, которая используется для обмена пары регистров HL со значением, хранящимся по адресу, указанному указателем стека.
8-разрядные инструкции[править]

Все 8-разрядные операции с двумя операндами могут выполняться только на 8-разрядном накопителе (регистре A). Другой операнд может быть либо непосредственным значением, либо другим 8-битным регистром, либо байтом памяти, адресованным 16-битной парой регистров HL. Инкременты и декременты могут выполняться на любом 8-битном регистре или байте памяти с HL-адресом. Прямое копирование поддерживается между любыми двумя 8-битными регистрами и между любым 8-битным регистром и байтом памяти, адресованным HL. Из-за регулярного кодирования MOVинструкции (с использованием четверти доступного пространства кода операции) существуют избыточные коды для копирования регистра в себя (MOV B,Bнапример), которые мало полезны, за исключением задержек. Однако систематический код операции for MOV M,Mвместо этого используется для кодирования инструкции halt (HLT), останавливающей выполнение до тех пор, пока не произойдет внешний сброс или прерывание.
16-разрядные операции[править]

Хотя 8080, как правило, является 8-битным процессором, он имеет ограниченные возможности для выполнения 16-битных операций. Любая из трех 16-битных пар регистров (BC, DE или HL, называемых B, D, H в документах Intel) или SP может быть загружена с немедленным 16-битным значением (using LXI), увеличена или уменьшена (using INXandDCX) или добавлена в HL (using DAD). Добавив к себе HL, можно добиться того же результата, что и 16-битный арифметический сдвиг влево с одной инструкцией. Единственные 16-битные инструкции , которые влияют на любой флагDAD, который устанавливает флаг CY (carry), чтобы позволить запрограммированную 24-битную или 32-битную арифметику (или больше), необходимую для реализации арифметики с плавающей запятой. Кадр стека может быть выделен с помощью DAD SPand SPHL. Ветвь вычисляемого указателя может быть выполнена с PCHLпомощью . LHLDзагружает HL из непосредственно адресованной памяти и SHLDсохраняет HL аналогично. Инструкция XCHG[15] обменивается значениями пар регистров HL и DE. XTHLобменивается последним элементом, помещенным в стек, с HL.

Схема ввода-вывода[править]

Пространство портов ввода-вывода[править]


8080 поддерживает до 256[16] портов ввода-вывода (I/O), доступ к которым осуществляется через выделенные инструкции ввода-вывода, использующие адреса портов в качестве операндов. Эта схема отображения ввода-вывода рассматривается как преимущество, поскольку она освобождает ограниченное адресное пространство процессора. Многие архитектуры процессоров вместо этого используют так называемый ввод-вывод с отображением памяти (MMIO), в котором общее адресное пространство используется как для ОЗУ, так и для периферийных чипов. Это устраняет необходимость в выделенных инструкциях ввода-вывода, хотя недостатком таких конструкций может быть то, что специальное оборудование должно использоваться для вставки состояний ожидания, поскольку периферийные устройства часто медленнее, чем память. Однако в некоторых простых компьютерах 8080 ввод-вывод действительно адресуется так, как если бы они были ячейками памяти, "отображенными в памяти", оставляя команды ввода-вывода неиспользуемыми. Адресация ввода-вывода также может иногда использовать тот факт, что процессор выводит один и тот же 8-битный адрес порта как на нижний, так и на старший байт адреса (т. Е. IN 05hпомещает адрес 0505h на 16-битную адресную шину). Аналогичные схемы портов ввода-вывода используются в обратно совместимых Zilog Z80 и Intel 8085, а также в тесно связанных семействах микропроцессоров x86.

Отдельное пространство стека[править]


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

Слово внутреннего состояния[править]


Для более продвинутых систем во время одной фазы своего рабочего цикла процессор устанавливает свой "байт внутреннего состояния" на шине данных. Этот байт содержит флаги, определяющие, осуществляется ли доступ к памяти или порту ввода-вывода и необходимо ли обрабатывать прерывание.
Состояние системы прерываний (включено или отключено) также выводится на отдельный вывод. Для простых систем, где прерывания не используются, можно найти случаи, когда этот вывод используется в качестве дополнительного одноразрядного выходного порта (например, популярный в Советском Союзе компьютер Радио-86РК).

Пример кода[править]


Следующий исходный код ассемблера 8080/8085 предназначен для подпрограммы с именемmemcpy, которая копирует блок байтов данных заданного размера из одного места в другое. Блок данных копируется по одному байту за раз, а логика перемещения и зацикливания данных использует 16-битные операции.

1000
1000
1000 78
1001 B1
1002 C8
1003 1A
1004 77
1005 13
1006 23
1007 0B
1008 78
1009 B1
100A C2 03 10
100D C9



; memcpy --
; Копирование блока памяти из одного места в другое.
;
; Регистры ввода
; BC - количество байтов для копирования
; DE - адрес исходного блока данных
; HL - адрес целевого блока данных
;
; Регистры возврата
; BC - Ноль


org 1000h ;Origin at 1000h
memcpy public
mova ,b ;Скопировать регистр B в регистр A
или c ;Побитовое ИЛИ из A и C в регистр A
rz ;Возврат, если нулевой флаг установлен высоко.
цикл: ldax d ;Загрузить A с адреса,указанного DE
mov m,a ;Сохранить A в адрес, указанный HL
inx d ;Увеличить DE
inx h ;Увеличить HL
dcx b ;Уменьшить BC (не влияет на флаги)
mov a, b ;Скопировать B в A (чтобысравните BC с нулем)
ora c ;A = A | C (оба B и C равны нулю?)
ret ;Return


Использование Pin-кода[править]



Распиновка 8080
Адресная шина имеет свои собственные 16 контактов, а шина данных имеет 8 контактов, которые можно использовать без какого-либо мультиплексирования. Используя два дополнительных вывода (сигналы чтения и записи), можно очень легко собрать простые микропроцессорные устройства. Только отдельное пространство ввода-вывода, прерывания и DMA нуждаются в дополнительных чипах для декодирования сигналов вывода процессора. Однако емкость нагрузки pin ограничена; даже простые компьютеры часто требуют усилителей шины.
Процессору нужны три источника питания (-5, +5 и +12 В) и два неперекрывающихся высокоамплитудных синхронизирующих сигнала. Однако, по крайней мере, поздняя советская версия5580ВМ80А могла работать с одним источником питания +5 В, вывод +12 В был подключен к +5 В, а вывод -5 В-к земле.
Таблица выводов из сопроводительной документации чипа описывает выводы следующим образом:


Download 368.6 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling