Инструкции общего назначения
MOV приемник,источник
Пересылка байта или слова. Байт или слово пересылается из источника в приемник.
PUSH источник
Сохранение слова в стеке. Указатель стека (регистр SP) уменьшается на 2, и в вершину стека помещается слово из источника. Часто PUSH используется для занесения в стек параметров процедуры перед ее вызовом. В общем случае это основное средство для сохранения временных данных.
POP приемник
Восстановление слова из стека. Слово данных из текущей вершины стека, адресуемой регистром SP, пересылается в операнд приемник. Регистр SP затем увеличивается на 2 и указывает на новую вершину стека. POP может использоваться для восстановления из стека временных данных.
XCLHG приемник,источник
Обмен байтами или словами. Эта инструкция осуществляет обмен содержимым (байт или слово) между операндами источник и приемник.
При использовании в сочетании с префиксом LOCK XCLHG может проверять и устанавливать семафор, управляющий доступом к разделяемому несколькими процессорами ресурсу.
XLAT таблица-трансляции
Трансляция байта. Байт в регистре AL замещается байтом из созданной пользователем 256-байтной таблицы трансляции. Предполагается, что регистр BX содержит адрес начала этой таблицы. Содержимое AL используется как индекс в таблице и замещается байтом, выбираемом из таблицы со смещением, соответствующим двоичному содержимому регистра AL (первый байт таблицы имеет смещение 0). Инструкция XLAT может использоваться для трансляции символов из одного кода в другой.
Ввод/вывод
IN аккумулятор,порт
Ввод байта или слова из порта. Байт или слово, полученные из указанного порта, помещается в регистр AL или AXсоответственно. Номер порта может задаваться либо непосредственно числом в пределах от 0 до 255, обеспечивающим доступ только к этим портам, либо указанием регистра DX, который предварительно должен быть загружен требуемым значением, что обеспечивает доступ к портам с номерами от 0 до 65535.
OUT порт,аккумулятор
Вывод байта или слова в порт. Байт или слово, предварительно помещенные в регистр AL или AX соответственно, выводится в указанный порт. Номер порта может задаваться либо непосредственно числом в пределах от 0 до 255, обеспечивающим доступ только к этим портам, либо указанием регистра DX, который предварительно должен быть загружен требуемым значением, что обеспечивает доступ к портам с номерами от 0 до 65535.
Адресные операции
Адресные операции работают не с содержимым или значением переменных, а с их адресами. Они наиболее полезны при обработке списков, базированных переменных и в операциях со строками.
LEA приемник,источник
Загрузка исполнительного адреса. Смещение операнда источник помещается в операнд приемник. Источник должен быть операндом памяти, а приемник — 16-битовым регистром. Эта инструкция может использоваться для установки регистров перед XLAT или операциями со строками, которые предполагают, что некоторые регистры загружены адресными значениями.
LDS приемник,источник
Загрузка указателя с DS. Указатель представляет собой 32-битовую адресную переменную, первое слово которой содержит смещение, а второе — базовый адрес (сегмент). Адрес указателя в этой инструкции задается операндом источник, который должен быть операндом памяти. Слово смещения из указателя помещается в операнд приемник, в качестве которого может быть указан 16-битовый регистр. Слово сегмента из указателя помещается в регистр DS. Указание SI в качестве приемника является обычным способом подготовки для строковой операции строки-источника, расположенной вне текущего сегмента данных.
LES приемник,источник
Загрузка указателя с ES. Указатель представляет собой 32-битовую адресную переменную, первое слово которой содержит смещение, а второе — базовый адрес (сегмент). Адрес указателя в этой инструкции задается операндом источник, который должен быть операндом памяти. Слово смещения из указателя помещается в операнд приемник, в качестве которого может быть указан 16-битовый регистр. Слово сегмента из указателя помещается в регистр ES. УказаниеDI в качестве приемника является обычным способом подготовки для строковой операции строки-приемника, расположенной вне текущего экстра сегмента.
Операции с флагами
LAHF
Загрузка флагов в AH. Флаги SF, ZF, AF, PF и CF копируются в биты 7, 6, 4, 2 и 0 соответственно регистра AH. Биты 5, 3 и 1 не определены. Сами флаги не изменяются.
SAHF
Установка флагов из AH. Биты 7, 6, 4, 2 и 0 регистра AH замещают значения флагов SF, ZF, AF, PF и CF соответственно. Значения флагов OF, DF, IF и TF не изменяются.
PUSHF
Сохранение флагов в стеке. По этой инструкции указатель стека SP уменьшается на 2, и в вершину стека помещаются все флаги процессора в формате слова согласно их расположению в регистре флагов.
Сами флаги не изменяются.
POPF
Восстановление флагов из стека. Из вершины стека, адресуемой регистром SP, в регистр флагов процессора помещаются специфичные биты, соответствующие расположению флагов в регистре флагов.
После этого SP увеличивается на 2 и указывает на новую вершину стека.
Комбинации инструкций PUSHF и POPF позволяют процедуре сохранять и восстанавливать флаги вызвавшей ее программы. Кроме того, таким образом можно устанавливать значение флага TF (ловушка), так как специальной инструкции для этого нет.
Для этого следует сохранить флаги в стеке, изменить значение бита 8 и затем восстановить флаги из стека.
Арифметические инструкции