logo search
Кафедра “Системы автоматического управления”

8.3.1 Команды пересылки данных.

Различают четыре типа пересылок: общего назначения, с участием аккумулятора, адреса и флагов.

Пересылки общего назначения задаются с помощью четырех базовых команд: MOV- переслать, PUSH- занести в стек, POP- извлечь из стека, XCHG- обменять.

Описание команд пересылки данных общего назначения и примеры их использования приведены в таблице 8.2.

Таблица 8.2.

Название

Мнемоника и формат

Описание

передать

MOV dst,src

занести в стек

PUSH opr

извлечь из стека

POP opr

обменять

XCHG opr1,opr2

Пересылки с участием аккумулятора состоят из трех команд: IN- ввод, OUT-вывод, передача однобайтового или 2-х байтового элемента строки.

В отличие от рассмотренных выше пересылок общего назначения эти команды обязательно используют аккумулятор в качестве источника или места назначения операнда. Описание команд и примеры их использования приведены в таблице 8.3.

Таблица 8.3.

Название

Мнемоника и формат

Описание

ввод данных

IN reg,opr

вывод данных

OUT opr,reg

В таблице 8.3 приняты обозначения:

(opr) - адрес порта ввода/вывода в reg;

((opr))- данные из порта с адресом в reg.

Команды пересылки однобайтового или двухбайтового элемента строки:

LODS byte/word ptr seg:[SI]

LODSB/LODSW

STOSB/STOSW

Данная команда загружает из памяти один байт в регистр AL или одно слово в регистр AX, которые адресуются регистровой парой DS:SI. После выполнения этой операции содержимое регистра SI увеличивается на один или два, в зависимости от длины операнда, вследствие чего устанавливается адрес следующего элемента. Команда обычно используется при работе с массивами данных.

Из команд пересылки адреса рассмотрим команду

LDS - загрузить указатель в сегментный регистр DS.

Команда имеет формат: LDS reg, addr32

Она инициализирует адрес сегмента данных и адрес регистра смещения содержимым переменной указателя, расположенной по адресу addr32, для обеспечения доступа к данным по адресу в этом указателе. Сегментный адрес помещается в регистр DS, а относительный адрес - в любой из общих или индексных регистров.

Пример команды:

LDS SI,MASPTR

При выполнении этой команды адрес первого элемента массива MAS, на который указывает MASPTR будет храниться в регистрах DS:SI.

Пример:

LDS SI,MASPTR

LODSW

Команды пересылки флагов включают четыре однобайтовые команды: LAHF- загрузить АН флагами; SAHF- запомнить АН в регистре RF; PUSHF- занести F в стек; POPF- извлечь из стека в F.

По команде LAHF осуществляется пересылка младшего байта регистра флагов RF в АН, а по команде SAHF- обратная пересылка.

Команды PUSHF и POPF аналогичны рассмотренным ранее.