Разрядный микропроцессор
Программная модель 8-разрядного микропроцессора (МП) i8080 (К580ВМ80) включает в себя (Рис. 2.1) программно-доступные объекты МПС, т.е. те объекты, состояние которых можно проанализировать и/или изменить при помощи команд МП. К таким объектам относятся внутренние регистры МП, ячейки памяти и порты ввода/вывода.
Рис. 2.1. МП i8080 - машина пользователя
Микропроцессор включает в себя следующие программно-доступные
¨ 8-разрядные регистры:
¨ A - регистр-аккумулятор;
¨ C, D, E, H, L - регистры общего назначения (РОН);
¨ FLAGS - регистр признаков (флажков);
16-разрядные регистры:
¨ PC - программный счетчик (счетчик команд);
¨ SP - указатель стека;
и одноразрядный регистр (триггер)
¨ I - разрешения прерывания.
Регистр FLAGS имеет следующий формат:
SF | ZF | AF | PF | CF |
где
¨ CF - перенос из старшего (7-го) разряда;
¨ PF - паритет (четность числа единиц в результате);
¨ AF - дополнительный перенос (из 3-го разряда);
¨ ZF - нулевой результат;
¨ SF - отрицательный результат (знак).
В некоторых командах пары регистров BC, DE, HL могут рассматриваться как единые двухбайтовые регистры. К программно-доступным можно отнести фиктивный однобайтовый регистр M, роль которого выполняет ячейка памяти, адрес которой хранится в регистровой паре HL. С регистром М можно проводить все те же операции, что и с любым РОНом.
При анализе системы команд МП i8080 будем классифицировать команды по следующим признакам:
1) по функциям операций:
· арифметико-логические и специальные;
· пересылки и загрузки;
· ввода/вывода;
· передачи управления;
· системные.
(комментарии к классам операций см. ниже)
2) по формату команд:
· однобайтовые;
· двухбайтовые;
· трехбайтовые.
Первый байт всех команд включает код операций, а для некоторых команд еще и адрес (адреса) регистров.
Второй байт двухбайтовых команд содержит непосредственный операнд одинарной длины или адрес устройства ввода/вывода.
Второй и третий байты трехбайтовых команд содержат непосредственный операнд двойной длины или прямой адрес памяти.
3) по способу адресации:
· безадресная;
· прямая регистровая;
· прямая памяти;
· косвенно-регистровая;
· непосредственная.
При безадресном способе адрес операнда в команде подразумевается (принимается “по умолчанию”) и не может быть изменен (чаще всего это аккумулятор) - например, в командах инверсии, сдвигов (NOT, RAR,. ..) или не имеет смысла, например, в командах NOP, HLT.
При прямой регистровой адресации в коде команды предусматривается трехбитовое поле (в команде MOV - два поля), содержащее адрес РОН, или двухбитовое поле для адресации регистровой пары.
Косвенно-регистровая адресация определяет регистровую пару, в которой хранится двухбайтовый адрес операнда, расположенного в памяти. Косвенная адресация через пару HL позволяет выполнять над адресуемой ячейкой памяти (М) те же действия, что и над любым РОН. Косвенная адресация через пары BC и DE обеспечивает только пересылку данных из аккумулятора в память и из памяти в аккумулятор.
Прямая адресация памяти требует трехбайтового формата и обеспечивает пересылку данных между аккумулятором и памятью. Предусмотрена так же пересылка по прямому адресу слов двойной длины между парой HL и памятью, причем в команде (во втором и третьем байте) указывается адрес младшего байта данных, старший байт извлекается из ячейки памяти с адресом, большим на 1.
При непосредственной адресации сам операнд располагается во втором байте команды (длина операнда - 8 бит) или во втором и третьем байтах (16 бит).
4) по длине обрабатываемых слов:
· операции над словами одинарной длины (8 бит);
· операции над словами двойной длины (16 бит).
В представлена система команд 8-разрядного микропроцессора К580ВМ80.
Арифметические операции в системе команд i8080 представлены арифметическими операциями с фиксированной запятой: сложением и сложением с переносом, вычитанием и вычитанием с заемом, инкрементом и декрементом. Последние две операции могут выполняться над содержимым любого регистра (в том числе М) и над содержимым любой регистровой пары РОН (BC, DE, HL). При выполнении сложения и вычитания первый операнд всегда располагается в аккумуляторе, второй адресуется в регистре или непосредственно, а результат помещается в аккумулятор. В системе команд предусмотрена операция сложения содержимого регистровой пары HL с содержимым любой регистровой пары РОН (в том числе и HL). Результат сложения помещается в HL.
Логические операции системы команд - дизъюнкция, конъюнкция и неравнозначность. Один из операндов и результат - в аккумуляторе, второй операнд адресуется в регистре или непосредственно.
К специальным операциям могут быть отнесены безадресные аккумуляторные команды инверсии, десятичной коррекции и сдвигов. Команда десятичной коррекции DAA анализирует величину каждой тетрады аккумулятора, начиная с младшей, и значение флагов переноса из тетрад (AF и CF соответственно). Если значение тетрады превышает 9 (1010..1111) или соответствующий флаг равен 1, то к тетраде добавляется константа 6 (0110). При этом значение возникающего при суммировании переноса фиксируется в соответствующем разряде слова признаков FLAGS.
В системе команд i8080 имеются 4 команды циклических сдвигов аккумулятора, особенности которых иллюстрируются Рис. 2.2.
Команды пересылки и загрузки обеспечивают передачу информации между различными уровнями памяти (ОЗУ - СОЗУ) или между ячейками памяти одного уровня, а так же загрузку регистров или ячеек памяти константами (при использовании непосредственной адресации).
Обмен между ячейкой памяти и регистром осуществляется по косвенному адресу памяти и только аккумулятор может обмениваться с памятью по прямому адресу (трехбайтовыми командами).
В системе команд i8080 предусмотрены команды пересылки и загрузки как байтового регистра, так и регистровой пары, причем роль аккумулятора двойной длины играет пара HL.
Табл. 2.1
Функциональные классы | Прямая регистровая | Косвенно-регистровая | Прямая памяти | Непосредственная | Безадресная | ||||||
1 байт | 2 байта | 1 байт | 2 байта | 1 байт | 2 байта | 1 байт | 2 байта | 1 байт | 2 байта | ||
Арифметико-логические и специальные | (A)*(r)® A (A)±(r)±CF® A (r)±1® r (A) – (r) | (HL) + (R) ® HL (R) + 1® R | (A)*(M)® A (A)±(M)± CF® A (M)±1® M (A) – (M) | (A)*(B2)® A (A)±(B2)± CF® A (A) – (B2) | (A) ® A сдвиги А десятичная коррекция | ||||||
Пересылки | (r) ® r | (r) Û (M) (A) Û ((BC)) (A) Û ((DE)) | (R) Û ((SP)) (PSW) Û ((SP)) | A Û (<B3>.<B2>) | (HL)Û (<B3>.<B2>+1).(<B3>. <B2>) | <B2> ® r | <B3>.<B2> ® R | (DE)↔(HL) ((SP))↔(HL) (SP)(HL) (PC)(HL) | |||
Передачи управления | PC <B3>.<B2> PC® ((SP)) PC <B3>.<B2> | PC ((SP)) | |||||||||
Ввода/ вывода | AÛ(<B2>) | ||||||||||
Системные | (I) 1 (I) 0 (CF) 1 (CF) (CF) NOP HLT | ||||||||||
Условные обозначения
A – аккумулятор; r Î {A,B,C,D,E,H,L) – регистры; RÎ {BC, DE, HL}– регистровые пары; PC – программный счетчик; | SP – указатель стека; ((SP))– верхушка стека; M – ячейка памяти, адрес которой храниться в HL; PSW – слово состояния (A.F); | <B2>, <B3> – второй, третий байт команды; CF – бит (флаг) переноса; F – регистр признаков; | ®, , Û – операции присваивания; ↔ – обмен содержимым; . – операция конкатенации |
Близкими по смыслу и реализации к командам пересылки и загрузки являются команды ввода/вывода, обеспечивающие обмен между аккумулятором и портом ввода/вывода, адрес которого (8 бит) указывается во втором байте двухбайтовой команды.
Рис. 2.2. Выполнение сдвигов
Команды передачи управления изменяют естественный порядок выполнения программы, загружая в счетчик команд PC новый адрес. Эти команды делятся на три группы: переходы, вызовы и возвраты, причем в каждой группе в системе команд МП К580ВМ80 по 9 команд - одна безусловная и восемь условных. В качестве условий передачи управления фигурируют флаги CF, ZF, PF, SF и их инверсии.
Если условие выполнено, то в командах переходов осуществляется загрузка программного счетчика PC вторым и третьим байтами команды. При этом старое значение PC теряется.
В командах вызовов (подпрограмм) старое значение PC помещается предварительно в верхушку стека, после чего PC загружается вторым и третьим байтами команды.
Команды возвратов - однобайтовые, т.к. не содержат адреса памяти. При выполнении условия возврата в программный счетчик переписываются два байта верхушки стека, старое значение PC теряется.
При невыполнении условия все команды передачи управления передают управление следующей по порядку команде.
Формирование признаков. Команды микропроцессора могут сформировать значение всех или некоторых признаков (флажков) по результатам выполнения команды, установить значение признака независимо от результата операции или сохранить значения признаков без изменений. В Табл. 2.2 приведены действия команд МП К580.. на признаки.
Табл. 2.2
Команды | SF | ZF | AF | PF | CF |
Арифметические операции над операндами одинарной длины (кроме INR, DCR), DAA | + | + | + | + | + |
INR, DCR | + | + | + | + | - |
Логические операции | + | + | - | + | |
Сдвиги, установка и инверсия CF | - | - | - | - | + |
Пересылка, загрузка, операции с двойными регистрами, операции со стеком, передача управления, системные операции, инверсия | - | - | - | - | - |
В таблице приняты следующие обозначения:
+ признак формируется по результату операции;
0 признак устанавливается в ноль;
- признак сохраняется.
Особенности архитектуры других 8-разрядных МП
К основным недостаткам рассмотренной выше системы команд МП i8080 можно отнести отсутствие разновидностей относительной адресации и, как следствие - сложности с обработкой нескольких массивов. Микропроцессоры, разработанные несколько позже i8080, включают, как правило, один или несколько индексных регистров.
Так, 8-разрядный МП фирмы Motorola MC6800 имеет, помимо PC и SP, 16-разрядный индексный регистр, регистр признаков и два аккумулятора (A и B), но не имеет РОНов.
Наиболее мощным из 8-разрядных МП является Z80 фирмы Zilog. Рассмотрим структуру программно-доступных объектов этого МП (Рис. 2.3).
Z80 | |||||
15 0 | |||||
IX | 7 0 | 7 0 | |||
IY | Вектор I | Сч.ргнр.R | |||
SP | |||||
PC | |||||
7 0 | 7 0 | 7 0 | 7 0 | ||
A | F | A´ | F´ | ||
B | C | B´ | C´ | ||
D | E | D´ | E´ | ||
H | L | H´ | L´ | ||
Рис. 2.3. МП Z80 - машина пользователя
Z80 включает в себя все программно-доступные объекты i8080. Дополнительно Z80 имеет два 16-разрядных индексных регистра IX, IY и большое число команд, адресующих операнд через индексный регистр и 8-разрядное смещение (второй байт команды).
Дополнительный блок РОН позволяет при переходе к подпрограмме сохранять содержимое регистров не прибегая к длительной процедуре размещения содержимого регистров в стеке.
Два дополнительных 8-разрядных специальных регистра позволяют организовывать регенерацию динамической памяти и управлять размещением таблицы векторов прерываний (см. разделы 5 и 7 соответственно).
Система команд Z80 включает все 78 команд i8080 и 80 дополнительных команд. Список команд расширен за счет команд, использующих индексную адресацию, команд сдвигов, системных команд и др. Значительно расширен набор команд 16-разрядной арифметики и пересылки.
Дата добавления: 2019-02-07; просмотров: 480;