Команда обмена XCHG
Команда обмена XCHG (exchange - обменять) меняет между собой значения двух регистров или регистра и ячейки памяти. Однако она не может выполнить обмен значений регистров сегмента.
Приведем несколько примеров команд XCHG:
XCHG AX,BX ;Обменять значения двух регистров (слова
XCHG AL,BH ; или байты
XCHG WRD_LOC,DX ;Обменять значения ячейки памяти
ХСНG DL,BYTE_LOC ; и регистра
Команды ввода-вывода
Команды ввода-вывода используются для взаимодействия с периферийными устройствами системы. Они имеют формат
IN аккумулятор, порт
OUT порт, аккумулятор
где аккумулятор – регистр AL при обмене байтами или регистр АХ при обмене словами. Операндом порт может быть десятичное значение от 0 до 255, что позволяет адресоваться к 256 устройствам.
В качестве операнда порт можно использовать регистр DX, что позволяет легко изменять номер порта, например при необходимости пересылать одни и те же данные в несколько различных портов.
Приведем несколько примеров команд IN и OUT:
IN AL,200 ;Ввести байт из порта 200
IN AL,PORT_VAL ; или из порта, указанного константой
OUT ЗОН,AХ ; Вывести слово в порт ЗОН
OUT DX,AX ; или в порт, указанный в ОХ
Команды пересылки адреса
Команды пересылки адреса передают не содержимое переменных, а их адреса.
Команда загрузки исполнительного адреса
Команда LEA (load effective address — загрузить исполнительный адрес) пересылает смещение ячейки памяти в любой 16-битовый регистр общего назначения, регистр указателя или индексный регистр. Она имеет формат
LEA регистр16,память16
где операнд память16 должен иметь атрибут типа WORD.
Операнд память16 в команде LEA может быть индексирован, что дает возможность осуществить гибкую адресацию. Например, если регистр DI содержит 5, то команда
LEA BX,TABLE[DI]
загрузит смещение адреса TABLE+5 в регистр ВХ.
Команда загрузки указателя и регистра сегмента данных LDS
Команда LDS (load pointer using DS — загрузить указатель с использованием регистра DS) считывает из памяти 32-битовое двойное слово и. загружает первые 16 битов в заданный регистр, а следующие 16 битов - в регистр сегмента данных DS. Она имеет формат
LDS регистр16,память32
где регистр 16 - любой 16-битовый регистр общего назначения, а память32 — ячейка памяти с атрибутом типа DOUBLEWORD.