Команда обмена 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.