Команды пересылки данных
Выполняют следующие функции:
1) загрузка (запись) содержимого во внутренние регистры процессора;
2) сохранение в памяти содержимого внутренних регистров процессора;
3) копирование содержимого из одной области памяти в другую;
4) запись в УВВ и чтение из УВВ.
В некоторых процессорах эти функции выполняются одной командой MOV (для байтовых пересылок MOV B), но с различными методами адресации операндов. В других процессорах кроме команды MOV имеется еще несколько команд для выполнения перечисленных функций. Например, для загрузки регистров могут использоваться команды загрузки, причем для разных регистров - разные команды. ( Их обозначение обычно строиться с использование слова LOAD) Часто выделяются специальные команды для сохранения в стеке и для извлечения из стека (PUSH сохранить, POP извлечь).
Эти команды выполняют пересылку с автоинкрементной или автодекрементной адресацией.
Иногда в систему команд вводится специальная команда MOVS для строчной( цепочечной) пересылки данных. ОНА ПЕРЕСЫЛАЕТ НЕ 1 СЛОВО ИЛИ БАЙТ, А ЗАДАННОЕ КОЛИЧЕСВО СЛОВ ИЛИ БАЙТ. Т.е. инициирует не один цикл обмена по магистрали, а несколько, при этом адрес памяти, с которым происходит взаимодействие, увеличивается на 1 или 2 после каждого обращения, или же уменьшается 1 или 2 после каждого обращения, т.е. в неявном виде применяется автоинкрементная или автодекрементная адресация.
В некоторых процессорах специально выделяется функция обмена с УВВ.
Иногда в систему команд вводится специальная команда MOV для строчной(цепочечной) пересылки данных. Эта команда пересылает не 1 слово или байт, а заданное количество, то есть она инициирует не 1 цикл обмена по магистрали, а несколько, при этом адрес памяти, с которым происходит взаимодействие увеличивается на 1 или на 2 после каждого обращения или же уменьшается на 1 или на 2 после каждого обращения, то есть в неявном виде применяется автоинкрементная или автодекрементная адресация.
В некоторых процессорах специально выделяется функция обмена с УВВ. Команда IN используется для ввода(чтения) информации с УВВ, а команда OUT используется для вывода(записи) в УВВ. Обмен информации в этом случае производится между регистром аккумулятором и УВВ. В дальнейших МП этого семейства добавлены команды строчного(цепочечного) ввода - INS и строчного вывода - OUTS. Эти команды позволяют пересылать целый массив(строку) из памяти в УВВ или из УВВ в памяти. Адрес памяти после каждого обращения увеличивается или уменьшается( как и в случае с командой MOVS.
К командам пересылки данных так же относятся команды обмена информацией. Может быть предусмотрел обмен информацией между внутренними регистрами или 2 половинами регистра (SWAP), между регистром и ячейкой памяти.
Арифметические команды.
Рассматривают коды операндов, как числовые двоичные или двоично-десятичные коды. Это команды делятся на 5 основных групп:
1. Команды операций с фиксированной запятой (сложение, вычитание, умножение, деление);
2. Команды операций с плавающей запятой;
3. Команды очистки(обнуления);
4. Команды инкремента и декремента;
5. Команды сравнения
Команды операций с фиксированной запятой работают с кодами в регистрах процессора или в памяти, как с обычными двоичными кодами. Команда ADD вычисляет сумму 2 кодов. Команда вычитания SUB вычисляет разность 2 кодов. Команда умножения MUL вычисляет произведение 2 кодов(разрядность результата в двое больше разрядности сомножителей). Команда деления DIV вычисляет частное от деления 1 кода на 2-й. Все эти команды могут работать как с числами со знаком, так и с числами без знака.
Команды операций с плавающей запятой используют формат представления чисел с порядком и мантиссой(обычно эти числа занимают 2 последовательные ячейки памяти).
В современных мощных процессорах набор команд с плавающей запятой кроме 4 арифметических действий содержит и другие более сложные команды.
Команда очистки CLEAR предназначена для записи 0-го кода в регистр или ячейку памяти. Эти команды могут быть заменены командами пересылки 0, но специальные команды очистки обычно выполняется быстрее, чем команды пересылки.
Команды инкремента и декремента так же бывают очень удобны. Их можно заменить командами суммирования с 1 или вычитания 1. Но инкремент и декремент выполняются быстрее, чем суммирование и вычитание. эти команды требуют 1 входного операнда, который одновременно является и выходным.
Команда сравнения CMP предназначена для сравнения 2 входных операндов. Фактически она вычисляет разность 2 входных операндов, но выходного операнда не формирует, а изменяет биты в регистры состояния МП по результату этого вычитания. Следующая за командой сравнения команда(обычно это команда перехода) анализирует биты в регистре состояния процессора и выполняют действия в зависимости от их значений. В некоторых процессорах предусмотрены команды цепочечного сравнения двух последовательностей операндов, находящихся в памяти.
Логические команды выполняют над операндами логические(побитовые) операции. То есть они рассматривают коды операндов не как единое число, а как набор отдельных битов. Этим они отличаются от арифметических команд. Логические выполняют основные операции:
1. Логическое И
2. Логическое ИЛИ
3. Исключающее ИЛИ
4. Логические, арифметические и циклические сдвиги
5. Проверка битов и операндов
6. Установка и очистка битов(флагов) регистра состояния процессора PSW
Команды логических операций позволяют побитно вычислять основные логические функции от 2-х входных операндов.
Команды переходов
Предназначены для организации всевозможных циклов ветвлений, вызовов подпрограмм. Т.е они нарушают последовательный вход выполнения программы. Эти команды записывают в регистр счетчик команд (указатель команд) новое значение и тем самым вызывает переход процессора не к следующей по порядку команде, а к любой программе в памяти программ. Некоторые команды перехода предусматривают в дальнейшем возврат назад, в точку из которой был сделан переход, другие не предусматривают это. Если возврат предусмотрен то текущие параметры процессора сохраняются в стеке, если не предусмотрен, то текущие параметры процессора не сохраняются. Команды перехода без возврата делятся на 2 группы:
1) безусловных переходов
2) условных переходов
В обозначениях этих команд используются слова Branch, Jump. Команды безусловных переходов вызывают переход по новому адресу независимо не от чего. Величина смещения или новое значение адреса указывается в качестве входного операнда. Команда условных переходов, вызывает переход только при выполнении заданных условий. В качестве таких условий обычно выступают значения флагов в регистре состояния процессора, т.е. условием перехода является результат предыдущей операции меняющей значение флагов. Их может быть от 4 до 16.
Примеры команд условных переходов: переход, если есть переполнение, если нет переполнения, если больше 0, если меньше или равно 0. Если условие перехода выполняется, то происходит загрузка в регистр счетчик команд нового значения, если не выполняется счетчик команд просто наращивается и процессор выбирает и выполняет следующую по порядку команду.