Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_kuznetsov_1.doc
Скачиваний:
7
Добавлен:
26.11.2019
Размер:
945.15 Кб
Скачать

Формирование кода команды на примере команд пересылки

MOV – передвижение, MVI – передвижение непосредственных данных

MOV RП, RИ – пересылка из регистра источника в регистр приемник

01

000

001

КОП

RП

RИ

КОП – код операции – пересылка.

Обозначения:

[…] – содержимое

(…) – адрес.

[RИ]  RП

содержимое RИ пересылается в RП

MOV M, RИ – команда, записывающая содержимое RИ в память.

[RИ]  M ([HL])

MVI RП, I

MVI B, 25 – запись 2-го байта в B

[B2]  RП

Система команд

Система команд – набор команд, имеющих двоичные наборы, служащие в качестве кода команды. В конкретной системе команд формируются определенные способы адресации (регистровый, регистрово-косвенный, непосредственный, прямой, стековый).

Данные в МП представляются в виде 1-байтовый двоичных кодов, которые можно трактовать как числа, коды символов, адреса ячеек памяти и т.п. Для выполнения арифметических операций над целыми числами имеются специальные команды.

Для идентификации отдельные биты нумеруют от 0 до 7 и считают расположенными слева направо. Нулевой бит соответствует младшему биту, а седьмой – старшему. Двухбайтовые целые числа должны быть расположены в соседних байтах памяти или в парном регистре.

6 групп команд:

Пересылочные команды, Команды арифметических и логических операций; Команды работы с аккумулятором, Команды передачи управления; Команды работы с парными регистрами, Специальные команды

Команда

Принцип работы

Пояснения

Арифметические и логические операции

INR

[ R ] + 1  R

Инкремент (увеличение на логическую 1 определенного регистра) 1-байтная команда. Регистровый СА

DCR

[ R ] – 1  R

Декремент (уменьшение на 1 определенного регистра)

1 байт. Регистровый СА

ADD B

[ A ] + [ R ]  A

Сложение регистра с аккумулятором. Результат помещается в аккумулятор. Второй и третий байты команды составляют адрес области памяти, в которой находится одно из слагаемых. 1 байт. Регистровый СА.

ADI 25

[ A ] + [ B2 ]  A

Содержимое второго бита команды прибавляется к содержимому аккумулятора. Непосредственный способ адресации. 2 байта, Непосредственный СА

ADC B

[ A ] + [ R ] + [ C ]  A

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

ACI 25

[ A ] + [ B2 ] + [ C ]  A

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

SUB B

[ A ] - [ R ]  A

Команды вычитания выполняются в дополнительном коде. Вычитание происходит путем инвертирования значений всех разрядов вычитаемого, добавления к ним 1 младшего разряда и сложения полученного числа с уменьшаемым. Логическая 1 в старшем разряде является признаком отрицательного числа. 8-разрядный дополнительный код дает возможность представлять числа в диапазоне -128 до +127. Если результат выполнения команды является отрицательным, нулевым или возникает сигнал заема в старший разряд, соответствующие разряды регистра устанавливаются в 1. 1 байт. Регистровый СА.

SUI 25

[ A ] - [ B2 ]  A

Вычитание из аккумулятора непосредственных данных. 2 байта, Непосредственный СА

SBB B

[ A ] - [ R ] - [ C ]  A

Многобайтное вычитание с учетом триггера переполнения. 1 байт. Регистровый СА.

SBI 25

[ A ] - [ B2 ] - [ C ]  A

Многобайтное вычитание непосредственных данных из аккумулятора с учетом триггера переполнения. 2 байта, Непосредственный СА

ANA B

[ A ] ^ [ R ]  A

Команды логических операций выполняются поразрядно (нет переноса в старший разряд). Логическое умножение. 1 байт. Регистровый СА.

ANI 25

[ A ] ^ [ B2 ]  A

Логическое умножение непосредственных данных. 2 байта, Непосредственный СА

XRA B

[ A ]  [ R ]  A

Исключающая ИЛИ. 1 байт. Регистровый СА.

XRI 25

[ A ]  [ B 2 ]  A

2 байта, Непосредственный СА

ORA B

[ A ] V [ R ]  A

Логическая ИЛИ. 1 байт. Регистровый СА.

ORI 25

[ A ] V [ В2 ]  A

Логическая ИЛИ. 2 байта, Непосредственный СА

CMP B

[ A ] - [ R ]

Эта команда влияет только на регистр признаков. Ее используют в алгоритмах, где необходимо исследование флага. 1 байт. Регистровый СА.

CPI 25

[ A ] - [ B2 ]

2 байта, Непосредственный СА

Команды работы с аккумулятором. Вместо ячейки памяти можно адресовать внешнее устройство.

STA

[ A ]  M ( [B2, B3] )

Содержание аккумулятора посылается в ячейку памяти по адресу, который содержится во 2-м и 3-м байте. Прямой способ адресации. 3 байта. Прямой СА

LDA

[ M ( [B2, B3] ) ]  A

Команда загрузки аккумулятора. Содержание ячейки памяти посылается в аккумулятор. 3 байта. Прямой СА

Команды десятичной коррекции

4 случая коррекции: 1) в младшей тетраде появились запрещенные комбинации

2) когда появляется дополнительный перенос из младшей тетрады в старшую

3) в старшей тетраде появляются запрещенные кодовые комбинации

4) когда возникает основной перенос (из старшего разряда)

DAA

Запуск узла десятичной коррекции. Узел ДК предназначен для представления действий АЛУ в двоично-десятичном коде. При прибавлении к любому некорректному коэффициенту кода 6 происходит перенос в старшей тетраде и результат остатка не превзойдет корректных весовых коэффициентов. 1 байт

CMA

[ ]  A

Коррекция аккумулятора. 1 байт

STC

1  C

Установка 1 в код переполнения. 1 байт

CMC

[ ]  C

Инверсия кода переполнения. 1 байт

Команды сдвига

RLC

[ Am ]  Am+1

[ A7 ]  A0

[ A7 ]  C

Каждый разряд аккумулятора выталкиваем в триггер переполнения С. Применяются в команде управления. 1 байтные команды

Циклический сдвиг влево

RAL

[ Am ]  Am+1

[ A7 ]  C

[ C ]  A0

Арифметический сдвиг влево

RRC

[ Am ]  Am-1

[ A0 ]  A7

[ A0 ]  C

Циклический сдвиг вправо

RAR

[ Am ]  Am-1

[ A0 ]  C

[ C ]  A7

Арифметический сдвиг вправо

Команды передачи управления

J/MP/

[ PC ] + 2  PC

Передача управления. Изменяет ход программы.

JMP – передача управления без условия

JNZ – если не 0

JZ – если 0

МП анализирует регистр признаков. МП либо делает эту команду (если условие выполняется) или не делает, если не выполняется. 3 байт. Непосредственный СА

C/ALL/

[ PCH ]  M ( [SP] – 1 )

[ PCL ]  M ( [SP] – 2 )

[ SP ] – 2  SP

[ B3, B2 ]  PC

Команда вызова подпрограммы. Используется для обслуживания запросов на прерывание.

1FC3 – начальная точка подпрограммы. 3 байта, Регистрово-косвенный СА

R/ET/

[ M ( [SP] ) ]  PC

[ M ( [SP] + 1 ) ]  PCH

[ SP ] + 2  SP

Команда возвращения в программу в точку, отстоящую на 2 байта адреса. Возврат из последней точка подпрограммы в основную невозможно, т.к. память стековая и возврат идет через извлечение вершины стека. Возврат происходит последовательно. 1-байтная команда. Чтобы вернуться в основную программу с прежними данными, можно занести все данные в подпрограмме до точки расхождения. 1 байт, Регистрово-косвенный СА.

Команды работы с парными регистрами

LXI B, 1FC3H

[ B3, B2 ]  RP

Загрузка данных парного регистра. 3-байтная команда. Определена для ВС, DE, HL и SP. Непосредственный способ адресации. Вершины стека загружаются при помощи этой команды. 3 байта. Непосредственный СА

STAX B

[ A ]  M ( [RP] )

Содержимое аккумулятора переносится в память. Обозначается только старший регистр пары (например, В, а не ВС). 1 байт. Регистрово-косвенный СА

LDAX B

[M ( [RP] )]  [ A ]

Обратная команда. Используется регистрово-косвенный способ адресации. Индексными регистрами являются BC и DE.1 байт. Регистрово-косвенный СА

INX B

[ RP ] + 1  RP

Инкремент. Определены для пар ВС, DE, HL и SP. 1 байт

DCX B

[ RP ] – 1  RP

Декремент. Определены для пар ВС, DE, HL и SP. 1 байт

DAD H

[ RP ] + [ HL ]  HL

Команда двойного сложения. Если DAD H, то регистр удваивает свое значение. 1 байт

POP B

[M ( [SP] )]  RPL

[M ( [SP]+1 )]  RPH

[SP]+2  SP

Команда работы со стеком. Используется для пар ВС, DE, HL и PCW. Извлечение из стека. С помощью команды CALL заносится сначала старший, затем младший байт, при РОР извлекается сначала младший, затем старший байты. Поэтому в паре ВС запись идет в С. 1 байт. Регистрово-косвенный СА

PUSH

[ PCH ]  M ( [SP] – 1 )

[ PCL ]  M ( [SP] – 2 )

[ SP ] – 2  SP

Команда работы со стеком. Загрузка в стек. Указывается адрес новой вершины стека. 1 байт. Регистрово-косвенный СА

SHLD 1FC3H

[ L ]  M ( [B3, B2] )

[ H ]  M ( [B3, B2]+1 )

Это команды, определенные для регистровой пары HL.

Загрузка содержимого регистровой пары в ячейку памяти. 3 байт. Прямой СА

LHLD 1FC3H

[M ( [B3, B2] )]  L

[M ( [B3,B2] + 1)]  H

Извлечение из памяти данных и занесение их в регистровую память. 3 байт. Прямой СА

PCHL

[ HL ]  PC

Эквивалентно команде JUMP. 1 байт. Регистровый СА

XTHL

[ L ]  M ( [SP] )

[ H ]  M ( [SP] + 1 )

Команда обмена. Меняет содержимое регистровой пары с ячейкой памяти, по адресу указателя стека. 1 байт.

SPHL

[ HL ]  SP

Меняется вершина указателя стека. 1 байт. Регистровый СА

XCHG

[ H ]  [ D ]

[ L ]  [ E ]

Команда обмена между регистровыми парами BC и DE. 1 байт

Специальные команды

IN 2FH

[ВУ ( [B2] )]  A

Команда ввода. Ввод информации по адресу 2F. 2 байт.

OUT 2FH

[ A ]  ВУ ( [B2] )

Команда вывода. 2 байт

NOP

[ PC ] + 1  PC

Команда, обозначающая код операции. Код этой операции 00. Ячейки памяти необходимо обнулить перед началом команды, чтобы МП не выполнял никаких действий. 1 байт

HLT

[ PC ]  PC

Команда остановок. МП останавливается, т.к. нет приращения РС. 1 байт

EI

Разрешить прерывание. Установка в 1 триггер обслуживания прерывания. 1 байт

DI

Запретить прерывание. Установка в 0 триггер обслуживания запроса на прерывание. 1 байт

RST N

[ PCH ]  M ( [SP] – 1 )

[ PCL ]  M ( [SP] – 2 )

[ SP ] – 2  SP

8  N  PC

Стандартная команда для обработки подпрограммы.

N = 0…7. На каждую программу отдается 8 ячеек памяти, начиная с 0-й. По этой команде записываются таблицы переходов. МП выполняет следующие действия:

1) прячется точка возврата в стек

2) смещается указатель стека

3) программный счетчик переходит в точку возврата.

1 байт

ПРИМЕР RST 7

Подпрограмма начинается в 38 ячейке памяти. Для этого вычисляют число 8  7 = 56 в 16-ной системе.

56 : 16 = 3 и 8 в остатке.

RST 7 0038

Псевдокоманды – команды, не имеющие машинного эквивалента. Команды работы с транслятором.

Виды псевдокоманд:

ORG – установить счетчик. Показывает, с какого адреса будет начинаться команда.

DB – определить байт

DW – определить слово

DS – зарезервировать память с текущей ячейки

PW 1FC3; - последние байты переставлять в памяти МП

SET – присвоить значение.

EQV – эквивалентность. Переустановка значения.

LIST – вывод листинга программы

MACROEND MACRO – процедура макроопределения

IF <…> = 0 – то трансляция IF <…> ≠ 0 – пропускается. Заканчивается END IF

END – конец трансляции

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]