Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Команды передачи данных.




Группу команд передачи данных можно условно разделить на четыре части: общие, ввода/вывода, адресные и флагов. Эти команды представлены в таблице 3.1.

Таблица 3.1.

Команды передачи данных.

Мнемокод/Операнды Краткое описание команды  
Общие команды:  
MOV назначение, источник Переслать (скопировать) байт или слово  
XCHG назначение, источник Перестановка байтов или слов  
POP назначение Извлечение слова из стека  
PUSH источник Занесение слова в стек  
XLAT/XLATB таблица Перекодировка таблицы  
Команды ввода/вывода:  
IN сумматор, порт Выборка байта или слова из порта
OUT порт, сумматор Размещение байта или слова в порт
Адресные команды:  
LDS назначение, источник Загрузка регистра сегмента данных  
LEA назначение, источник Загрузка эффективного адреса  
LES назначение, источник Загрузка регистра дополнительного сегмента  
Команды работы с регистром флагов:  
LAHF Загрузка флагов в регистр AH  
SAHF Установка флагов из регистра AH  
POPF Извлечение регистра флагов из стека  
PUSHF Занесение регистра флагов в стек  

Рассмотрим некоторые из них.

Команда пересылки данных MOV (move data) – на место первого операнда пересылается значение второго операнда, флаги не меняет:

MOV dst, src

где dst – оператор получатель, src – операнд отправитель.

Допустимые комбинации операндов:

dst src
r8 i8, r8, m8
m8 i8, r8
r16 i16, r16, sr, m16
sr (кроме CS) i16, m16
m16 i16, r16, sr

Команда обмена данными XCHG (exchange) – меняет местами значения своих операндов (они должны быть либо байтами, либо словами), флаги не меняются:

XCHG dst, src

Допустимые типы операндов команды XCHG:

dst src размер операндов
r8 r8, m8 перестановка байтов
m8 r8
r16 r16, m16 перестановка слов
m16 r16

Examle 3.4. Фрагмент программы использования команды XCHG.

; описание данных

count db 10h, 20h

total dw 1234h

var16 dw?

; фрагмент кода программы

XCHG AX, total;

XCHG AX, BX;

XCHG DL, AL;

XCHG count, AL;

XCHG var16, AX;

Команда PUSH (PUSHed) - включает в стек слово операнда, a команда POP (POPed) - извлекает слово из стека.

PUSH src.

POP dst

В командах PUSH и POP допустимы следующие операнды:

dst - r16, m16, sr (кроме CS) src - r16, m16, sr

Examle 3.5. Фрагмент программы использования команд PUSH и POP.

; описание данных

var16 dw 1234h

; фрагмент кода программы

PUSH BX;

PUSH var16;

POP BX;

POP var16;

; доступ к элементам стека

MOV BP, SP;

MOV AX, [BP];

Команда преобразования XLAT применяется для быстрого преобразования символов из одного кода в другой. Она заменяет содержимое аккумулятора AL на байт из 256-байтовой таблицы, начальный адрес которой находится в регистре BX, а восьмибитовое смещение - в регистре AL. В качестве сегментного используется регистр DS. Некоторые ассемблеры допускают мнемонику XLATB, подчеркивающую, что команда преобразует байты.

XLAT [table]

XLATB [table]

где [table] – необязательный параметр, представляющий собой символическое имя начального адреса таблицы преобразования.

На рисунке 3.1. показан механизм работы команды перекодировки таблиц XLAT.

Examle 3.6. Фрагмент программы использования команды XLAT.

; Преобразование чисел от 0 до 15 в 16-ое число

; описание данных

tablehex db ‘0123456789ABCDEF’; Таблица для преобразования

; фрагмент кода программы

MOV BX, OFFSET tablehex; В BX поместить смещение tablehex

MOV AL, 10; В AL поместить число для преобразования

XLAT; Преобразовать число в 16-ое число

Команда LEA извлекает из памяти 16-битовый адрес и помещает его в один из общих регистров. Практически эта команда дублирует один из вариантов команды MOV, но выполняется быстрее.

Команда LDS извлекает из памяти 32-битовый адрес и помещает первое считанное из памяти слово в заданный общий регистр, а второе - в сегментный регистр DS.

Команда LES извлекает из памяти 32-битовый адрес и помещает первое считанное из памяти слово в заданный общий регистр, а второе - в сегментный регистр ES.

LEA reg, mem

LDS reg, mem

LES reg, mem

Examle 3.7. Фрагмент программы использования команд LES, LDS и LEA.

; описание данных

str_1 DB ‘Hello’; str_1 содержит смещение строки ‘Hello’

str_2 DB 50 DUP (‘ ‘);

str_pnt DD str_1; str_pnt содержит полный указатель переменной str_1

; фрагмент кода программы

LEA SI, str_1;

LEA DI, str_2;

MOV AL, [SI];

MOV [DI], AL;

LES BX, str_pnt;

LDS BX, str_pnt;






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных