Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / Курс лекций по микропроцессорам 1999.DOC
Скачиваний:
197
Добавлен:
21.02.2014
Размер:
3.02 Mб
Скачать

Система команд микропроцессора

Команды I8080/8085 в основном одноадресные. Исключение составляют команды регистровых пересылок. Длина команды может изменяться от 1 до 3 байт. Многобайтовые команды располагаются в последовательных ячейках памяти. Первый байт команды всегда содержит код операции , а у однобайтовых команд – и информацию об источниках операндов. В двухбайтовых командах второй байт содержит непосредственный операнд или адрес порта ввода-вывода. В трехбайтовых командах второй и третий байты указывают прямой адрес операнда или непосредственный операнд. Причем второй байт содержит младший байт адреса или операнда, а третий – старший.

Для обращения к операндам используются следующие способы адресации: прямая, прямая регистровая, косвенная регистровая, непосредственная, стековая.

Форматы данных: числовые с фиксированной запятой, представленные в двоичном или двоично-десятичном кодах; логические данные.

Арифметические операции над двоично-десятичными числами поддерживаются только одной командой – командой десятичной коррекции после сложения. Необходимость коррекции обусловлена тем, что сложение двоично-десятичных чисел производится на двоичном сумматоре с использованием кода « с избытком 6». Для выполнения вычитания этих чисел необходимо сформировать дополнительный код, который образуется как ( 99 –вычитаемое +1 ), выполнить двоичное сложение, затем - командуDAA.

Длина формата – 1 или 2 байта. Число команд обработки двухбайтовых данных –12.

Недостатками системы команд являются:

малая мощность команд. Отсутствуют команды умножения, деления двоичных и двоично-десятичных чисел, арифметические и логические сдвиги, очистки регистров и так далее,

ассиметричность : определенные действия закреплены за фиксированными регистрами, различное воздействие однородных команд на флаги регистра признаков,

ограниченное количество способов адресации. Отсутствие индексного, базового, относительного способов адресации существенно усложняет программирование,

ориентация на обработку 8- и 16-разрядных данных.

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

Эти недостатки приводят к увеличению объема памяти, необходимого для хранения программ, и времени их выполнения, так как приходится использовать подпрограммы, последовательно-параллельную обработку, большое количество пересылок.

Коды регистров и регистровых пар представлены на рис.2. В командах

условного перехода, условного обращения к подпрограмме и условного

возврата из подпрограммы используются коды условий CCC (рис.3).

+-------------------------------------------------------+

¦ Регистры ¦ Пары регистров ¦

+-----------------------+-------------------------------¦

¦ Код ¦ Имя ¦ Код ¦ Имя ¦ Регистры пары ¦

¦ (SSS|DDD) ¦ (R|R1|R2) ¦ (RP) ¦ (RP) ¦ ст. - мл. ¦

+-----------+-----------+-------+-------+-------+-------¦

¦ 000 ¦ B ¦ 00 ¦ B ¦ B ¦ C ¦

¦ 001 ¦ C ¦ ¦ ¦ ¦ ¦

¦ 010 ¦ D ¦ 01 ¦ D ¦ D ¦ E ¦

¦ 011 ¦ E ¦ ¦ ¦ ¦ ¦

¦ 100 ¦ H ¦ 10 ¦ H ¦ H ¦ L ¦

¦ 101 ¦ L ¦ ¦ ¦ ¦ ¦

¦ 110 ¦ M' ¦ 11 ¦ SP ¦ - ¦ - ¦

¦ 111 ¦ A" ¦ 11'"¦ PSW ¦ A ¦ F ¦

+-------------------------------------------------------+

') М - ячейка памяти.

") A - аккумулятор.

'") используется только в командах PUSH PSW и POP PSW

Рис. 2. Коды регистров и регистровых пар МП.

+---------------------------------------+

¦ Код ¦ Мнем. ¦ Условие ¦

¦ (CCC) ¦ (CC) ¦ (значение разряда PSW)¦

+-------+-------+-----------------------¦

¦ 000 ¦ NZ ¦ Не нуль : Z=0 ¦

¦ 001 ¦ Z ¦ Нуль : Z=1 ¦

¦ 010 ¦ NC ¦ Нет переноса : C=0 ¦

¦ 011 ¦ C ¦ Перенос : C=1 ¦

¦ 100 ¦ PO ¦ Нечетность : P=0 ¦

¦ 101 ¦ PE ¦ Четность : P=1 ¦

¦ 110 ¦ P ¦ Плюс : S=0 ¦

¦ 111 ¦ M ¦ Минус : S=1 ¦

+---------------------------------------+

Рис. 3. Коды условий для команд условного перехода.

Система команд МП содержит 78 команд, реализующих 111 операций, и

приведена в таблицах 1.1 - 1.3, в которых:

1)в мнемонических изображениях двухадресных команд приемник указывается на первом месте, а источник - на втором;

3) признаки результата (S,Z,P,C и AC) устанавливаются ТОЛЬКО при выполнении большинства арифметических и логических команд, а также команды POP PSW;

4) мнемонические обозначения команд условного перехода, условного обращения к подпрограмме и условного возврата из подпрограммы составляются из символов соответственно J,C и R и необходимой мнемоники CC из рис. 3;

5) число тактов, необходимых для исполнения команд условных перехода, обращения к подпрограмме и возврата из нее, зависит от того, выполнено (знаменатель дроби) или не выполнено (ее числитель) условие, указанное в команде;

6) в описаниях команд для обозначения содержимого аккумулятора, иного регистра или ячейки памяти, на которые указывают SSS или

DDD, используется запись (A),® или (M);

7) при записи мнемоники команды RP обозначает имя регистровой пары, а при записи кода команды - двухбитовый код регистровой пары (см. рис.2).

8) в колонке 'Код' приводится ШЕСТНАДЦАТЕРИЧНОЕ представление кода команды, если оно единственно, и ДВОИЧНОЕ - если под данной мнемоникой объединены несколько различных команд (операций); в последнем случае варьируемые разряды обозначены соответствующими символами (SSS,DDD,RP,CCC).

Список команд передачи данных Таблица 1

----------------------------- =========

+----------------------------------------------------------------------+

¦ Мнемоника ¦ Код ¦ Длина ¦ Число ¦ Выполняемая ¦

¦ ¦ ¦команды ¦ тактов¦ функция ¦

+--------------+----------+--------+-------+---------------------

¦ MOV R1,R2 ¦ 01DDDSSS ¦ 1 ¦ 5 ¦ Пересылка из R1 в R2

¦ MOV R,M ¦ 01DDD110 ¦ 1 ¦ 7 ¦ Пересылка из M в R

¦ MOV M,R ¦ 01110SSS ¦ 1 ¦ 7 ¦ Пересылка из R в M

¦ MVI R,data8 ¦ 00DDD110 ¦ 2 ¦ 7 ¦ Пересылка непосредствен

¦ ¦ ¦ ¦ ¦ ных данных в регистр

¦ MVI M,data8 ¦ 36 ¦ 2 ¦ 10 ¦ Пересылка непосредст-

¦ ¦ ¦ ¦ ¦ венных данных в память

¦ LXI B,data16¦ 01 ¦ 3 ¦ 10 ¦ Загрузка непосредст-

¦ ¦ ¦ ¦ ¦ венных данных в рег.ВС

¦ LXI D,data16¦ 11 ¦ 3 ¦ 10 ¦ Загрузка непосредственных

¦ ¦ ¦ ¦ ¦ данных в рег. пару DE

¦ LXI H,data16¦ 21 ¦ 3 ¦ 10 ¦ Загрузка непосредственных

¦ ¦ ¦ ¦ ¦ данных в рег. пару HL

¦ LXI SP,data16¦ 31 ¦ 3 ¦ 10 ¦ Загрузка непосредственных

¦ ¦ ¦ ¦ ¦ данных в указатель стека

¦ LDAX B ¦ 0A ¦ 1 ¦ 7 ¦ Косвенная загрузка A

¦ ¦ ¦ ¦ ¦ по адресу рег. пары BC

¦ LDAX D ¦ 1A ¦ 1 ¦ 7 ¦ Косвенная загрузка A

¦ ¦ ¦ ¦ ¦ по адресу рег. пары DE

¦ LHLD addr ¦ 2A ¦ 3 ¦ 16 ¦ Прямая загрузка HL

¦ LDA addr ¦ 3A ¦ 3 ¦ 13 ¦ Прямая загрузка A

¦ STAX B ¦ 02 ¦ 1 ¦ 7 ¦ Косвенная запись A в па- ¦ ¦ ¦ мять по адресу пары BC

¦ STAX D ¦ 12 ¦ 1 ¦ 7 ¦ Косвенная запись A в па-

¦ ¦ ¦ ¦ ¦ мять по адресу пары DE

¦ SHLD addr ¦ 22 ¦ 3 ¦ 16 ¦ Прямая запись HL в память

¦ STA addr ¦ 32 ¦ 3 ¦ 13 ¦ Прямая запись A в память

¦ PUSH B ¦ C5 ¦ 1 ¦ 11 ¦ Пересылка BC в стек

¦ PUSH D ¦ D5 ¦ 1 ¦ 11 ¦ Пересылка DE в стек

¦ PUSH H ¦ E5 ¦ 1 ¦ 11 ¦ Пересылка HL в стек

¦ PUSH PSW ¦ F5 ¦ 1 ¦ 11 ¦ Пересылка A и F в стек

¦ POP B ¦ C1 ¦ 1 ¦ 10 ¦ Загрузка BC из стека

¦ POP D ¦ D1 ¦ 1 ¦ 10 ¦ Загрузка DE из стека

¦ POP H ¦ E1 ¦ 1 ¦ 10 ¦ Загрузка HL из стека

¦ POP PSW ¦ F1 ¦ 1 ¦ 10 ¦ Загрузка A и F из стека

¦ XTHL ¦ E3 ¦ 1 ¦ 18 ¦ Обмен между HL и стеком

¦ XCHG ¦ EB ¦ 1 ¦ 4 ¦ Обмен между HL и DE

¦ SPHL ¦ F9 ¦ 1 ¦ 5 ¦ Пересылка HL в SP

+---------------------------------------------------------------------

Список команд управления и ввода-вывода Таблица 2

--------------------------------------- =========

+-------------------------------------------------------------------+

¦ Мнемоника ¦ Код ¦ Длина ¦ Число ¦ Выполняемая ¦

¦ ¦ ¦ команды¦ тактов¦ функция ¦

+--------------+----------+--------+-------+------------------------¦

¦ JMP addr ¦ C3 ¦ 3 ¦ 10 ¦ Безусловный переход ¦

¦ Jcc addr ¦ 11CCC110 ¦ 3 ¦ 5/10 ¦ Условный переход по ¦

¦ ¦ ¦ ¦ ¦ условию cc (рис.3) ¦

¦ PCHL ¦ E9 ¦ 3 ¦ 5 ¦ Косвенный переход по ¦

¦ ¦ ¦ ¦ ¦ адресу из HL ¦

¦ CALL addr ¦ CD ¦ 3 ¦ 17 ¦ Безуслов вызов п/прогр.¦

¦ Ccc addr ¦ 11CCC100 ¦ 3 ¦ 11/17 ¦ Условный вызов п/прогр ¦

¦ RET ¦ C9 ¦ 1 ¦ 10 ¦ Безусл. возврат из п/п ¦

¦ Rcc ¦ 11CCC000 ¦ 1 ¦ 5/11 ¦ Условный возврат из п/п¦

¦ RST n ¦ 11NNN111 ¦ 1 ¦ 11 ¦ Повторный запуск МП с ¦

¦ ¦ ¦ ¦ ¦ адреса NNN*8 ¦

¦ EI ¦ FB ¦ 1 ¦ 4 ¦ Разрешение прерывания ¦

¦ DI ¦ F3 ¦ 1 ¦ 4 ¦ Запрещение прерывания ¦

¦ HLT ¦ 76 ¦ 1 ¦ 7 ¦ Останов ¦

¦ NOP ¦ 00 ¦ 1 ¦ 4 ¦ Нет операции ¦

¦ IN port ¦ DB ¦ 2 ¦ 10 ¦ Ввод данных из порта в A

¦ OUT port ¦ D3 ¦ 2 ¦ 10 ¦ Вывод данных из A в порт

+--------------------------------------------------------------------

Список арифметических команд Таблица 3

---------------------------- =========

+----------------------------------------------------------------------+

¦ Мнемоника ¦ Код ¦ Приз- ¦Длина ¦Число ¦ Выполняемая ¦

¦ ¦ ¦ наки ¦команды¦тактов¦ функция ¦

+-----------+--------+-------+------+------+------------------------¦

¦ INR R ¦00DDD100¦ SZAСP-¦ 1 ¦ 5 ¦ Инкремент регистра R ¦

¦ INR M ¦ 34 ¦ SZAСP-¦ 1 ¦ 10 ¦ Инкремент памяти M ¦

¦ INX RP ¦00RP0011¦ ------¦ 1 ¦ 5 ¦ Инкремент регистровой ¦

¦ ¦ ¦ ¦ ¦ ¦ пары RP ¦

¦ DCR R ¦00DDD101¦ SZAСP-¦ 1 ¦ 5 ¦ Декремент регистра R ¦

¦ DCR M ¦ 25 ¦ SZAСP-¦ 1 ¦ 10 ¦ Декремент памяти M ¦

¦ DCX RP ¦00RP1011¦ ------¦ 1 ¦ 5 ¦ Декремент регистровой ¦

¦ ¦ ¦ ¦ ¦ ¦ пары RP ¦

¦ ADD R ¦10000SSS¦ SZAСPC¦ 1 ¦ 4 ¦ Сложение A и R ¦

¦ ADD M ¦ 86 ¦ SZAСPC¦ 1 ¦ 7 ¦ Сложение A и M ¦

¦ ADI data8¦ C6 ¦ SZAСPC¦ 2 ¦ 7 ¦ Сложение A и непосредст-

¦ ¦ ¦ ¦ ¦ ¦ венных данных ¦

¦ ADC R ¦10001SSS¦ SZAСPC¦ 1 ¦ 4 ¦ Слож. A и R с переносом¦

¦ ADC M ¦ 8E ¦ SZAСPC¦ 1 ¦ 7 ¦ Слож. A и M с переносом¦

¦ ACI data8¦ CE ¦ SZAСPС¦ 2 ¦ 7 ¦ Слож. A и непосредст- ¦

¦ ¦ ¦ ¦ ¦ ¦ венных данных с переносом¦

¦ SUB R ¦10010SSS¦ SZAСPС¦ 1 ¦ 4 ¦ Вычитание R из A ¦

¦ SUB M ¦ 96 ¦ SZAСPC¦ 1 ¦ 7 ¦ Вычитание M из A ¦

¦ SUI data8¦ D6 ¦ SZAСPС¦ 2 ¦ 7 ¦ Вычитание

¦ ¦ ¦ ¦ ¦ ¦ непосредств.данных из A¦

¦ SBB R ¦10011SSS¦ SZAСPC¦ 1 ¦ 4 ¦ Вычитание R из A с заемом

¦ SBB M ¦ 9E ¦ SZAСPC¦ 1 ¦ 7 ¦ Вычитание M из A с заемом

¦ SBI data8¦ DE ¦ SZAСPC¦ 2 ¦ 7 ¦ Вычит. непосредственных

¦ ¦ ¦ ¦ ¦ ¦ данных из A с заемом

¦ DAD RP ¦00RP1001¦ ----C ¦ 1 ¦ 10 ¦ Сложение регистровых пар

¦ ¦ ¦ ¦ ¦ ¦ HL и RP

¦ ANA R ¦10100SSS¦ SZAСP0¦ 1 ¦ 4 ¦ Логическое И A и R

¦ ANA M ¦ A6 ¦ SZAСP0¦ 1 ¦ 7 ¦ Логическое И A и M

¦ ANI data8¦ E6 ¦ SZAСP0¦ 2 ¦ 7 ¦ Логическ.И A и непосред-

¦ ¦ ¦ ¦ ¦ ¦ ственных данных

¦ XRA R ¦10101SSS¦ SZAСP0¦ 1 ¦ 4 ¦ Исключающее ИЛИ A и R

¦ XRA M ¦ AE ¦ SZAСP0¦ 1 ¦ 7 ¦ Исключающее ИЛИ A и M

¦ XRI data8¦ EE ¦ SZAСP0¦ 2 ¦ 7 ¦ Исключающее ИЛИ A и непос

¦ ¦ ¦ ¦ ¦ ¦ редственных данных

¦ ORA R ¦10110SSS¦ SZAСP0¦ 1 ¦ 4 ¦ Логическое ИЛИ A и R

¦ ORA M ¦ B6 ¦ SZAСP0¦ 1 ¦ 7 ¦ Логическое ИЛИ A и M

¦ ORI data8¦ F6 ¦ SZAСP0¦ 2 ¦ 7 ¦ Логическое ИЛИ A и непос

¦ ¦ ¦ ¦ ¦ ¦ редственных данных

¦ CMP R ¦10111SSS¦ SZ0PС ¦ 1 ¦ 4 ¦ Сравнение A и R (A-R)

¦ CMP M ¦ BE ¦ SZ0PС ¦ 1 ¦ 7 ¦ Сравнение A и M (A-M)

¦ CPI data8¦ FE ¦ SZ0PС ¦ 2 ¦ 7 ¦ Сравнение A и непосредст

¦ ¦ ¦ ¦ ¦ ¦ венных данных (A-data8)

¦ RLC ¦ 07 ¦ ----C ¦ 1 ¦ 4 ¦ Циклич. сдвиг A влево

¦ RRC ¦ 0F ¦ ----C ¦ 1 ¦ 4 ¦ Циклич. сдвиг A вправо

¦ RAL ¦ 17 ¦ ----C ¦ 1 ¦ 4 ¦ Циклич. сдвиг A влево

¦ ¦ ¦ ¦ ¦ ¦ через бит C

¦ RAR ¦ 1F ¦ ----C ¦ 1 ¦ 4 ¦ Циклич. сдвиг A вправо

¦ ¦ ¦ ¦ ¦ ¦ через бит C

¦ DAA ¦ 27 ¦ SZAPC ¦ 1 ¦ 4 ¦ Десятичная коррекция A

¦ CMA ¦ 2F ¦ ----- ¦ 1 ¦ 4 ¦ Инвертирование A

¦ STC ¦ 37 ¦ ----1 ¦ 1 ¦ 4 ¦ Установка бита C

¦ CMC ¦ 3F ¦ ----C ¦ 1 ¦ 4 ¦ Инвертирование бита C

+-------------------------------------------------------------------

Опеpации Ввода / Вывода пpоизводятся с содеpжимым аккумулятоpа.

Логические опеpации и аpифметические опеpации один из источников

опеpанда используют аккумулятоp с последующим помещением pезультата

в аккумулятоp.

Соседние файлы в папке лекции