Команды INS, INSB, INSW, INSD позволяют несколько автоматизировать операции получения данных из порта ввода-вывода. По сути эти команды выполняют команду IN, только результат помещается не в регистр, а в ячейку памяти, адресуемую парой регистров ES:(E)DI, после чего производится сдвиг адреса для записи следующей порции данных в следующую ячейку памяти.
Команды IN и OUT используются для работы с внешними устройствами через порты ввода-вывода. Команда IN принимает данные из порта, а команда OUT записывает данные в порт. Номер порта может задаваться как числом от 0 до 255, так и значением регистра от 0 до 65535. Читать из порта или записывать в порт можно как 8-битные, так и 16- и 32-битные данные.
Команды MUL и IMUL позволяют перемножать два числа. Команда IMUL используется для перемножения чисел со знаком, а команда MUL - для чисел без знака.
Команда HLT останавливает работу процессора до прихода очередного прерывания. Используется для случаев когда программе больше нечего делать и она ждет прерывания от внешнего устройства, чтобы продолжить свою работу. Например программа может ожидать, когда с жесткого диска считается нужная порция данных.
Команды ENTER и LEAVE служат для упрощения работы с процедурами, написанными на языках высокого уровня. В таких языках, как C или Pascal обычно при вызове процедуры параметры передаются через стек. Локальные переменные в процедурах также используют стек для хранения своих значений. Рассмотрим подробнее как происходит вызов таких процедур.
Команды DIV и IDIV позволяют производить целочисленное деление двух чисел. Команда DIV делит числа без знака. Команда IDIV делит числа со знаком.
Команды DEC и INC позволяют увеличивать или уменьшать значение операнда на 1. После выполнения операции флаговый регистр устанавливается в соответствии с результатом.
Команды DAA и DAS осуществляют коррекцию упакованных двоично-десятичных чисел после операцй сложения и вычитания. Упакованные двоично-десятичные числа отличаются от обычных двоично-десятичных чисел тем, что каждая цифра числа хранится не в байте, а в соответствующей половине байта. То есть например число 11 будет в упакованном виде записан не как 0101h, а как 11h.
Команды CMPS, CMPSB, CMPSW и CMPSD позволяют производить сравнение строк байтов, двухбайтных слов или двойных слов между собой. Сравнение работает аналогично команде CMP, но с некоторыми дополнительными действиями для строк.
Команда CMP позволяет сравнивать между собой любые два числа, находящиеся в регистрах или ячейках памяти. В зависимости от результатов сравнения чисел, процессором выставляются определенные значения регистра флагов.