Система команд – набор команд, имеющих двоичные наборы, служащие в качестве кода команды. В конкретной системе команд формируются определенные способы адресации (регистровый, регистрово-косвенный, непосредственный, прямой, стековый).
Данные в МП представляются в виде 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 байт. Регистрово-косвенный СА
Команда работы со стеком. Загрузка в стек. Указывается адрес новой вершины стека. 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 – вывод листинга программы
MACRO … END MACRO – процедура макроопределения
IF <…> = 0 – то трансляция IF <…> ≠ 0 – пропускается. Заканчивается END IF
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление