Система команд
Дата добавления: 2014-01-11; просмотров: 7; лекция была полезна: 0 студентам(у); не полезна: 0 студентам(у).
Опубликованный материал нарушает авторские права? сообщите нам...
Система команд – набор команд, имеющих двоичные наборы, служащие в качестве кода команды. В конкретной системе команд формируются определенные способы адресации (регистровый, регистрово-косвенный, непосредственный, прямой, стековый).
Данные в МП представляются в виде 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 – вывод листинга программы
MACRO … END MACRO – процедура макроопределения
IF <…> = 0 – то трансляция IF <…> ≠ 0 – пропускается. Заканчивается END IF
END– конец трансляции