Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




Группу команд передачи данных можно условно разделить на четыре части: общие, ввода/вывода, адресные и флагов. Эти команды представлены в таблице 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;





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 790 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Неосмысленная жизнь не стоит того, чтобы жить. © Сократ
==> читать все изречения...

2335 - | 2044 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.