Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

2.Команды пересылки данных. Вопросы для проверки усвоения команд пересылки данных.. 3.Команды манипулирования битами




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

Сведения об основных командах пересылки данных были приведены в предыдущей лекции. Сведения о других командах этой группы приведены в таблице 2.

Мнемокод Формат
Команды общего назначения MOV   MOV приемник, источник
PUSH PUSH источник
POP POP приемник
XCHG XCHG приемник, источник
XLAT XLAT таблица_источник
Команды ввода-вывода IN   IN аккумулятор, порт
OUT OUT порт аккумулятор
Команды пересылки адреса LEA   LEA регистр (16), память (16)
LDS LDS регистр (16), память (32)
LES LES регистр (16), память (32)
Команды пересылки флагов LAHF   LAHF
SAHF SAHF
PUSHF PUSHF
POPF POPF

Никакие из этих команд, кроме SAHF и POPF значения флагов не изменяют.

Команды ввода-вывода будем подробнее рассматривать далее.

Относительно команд пересылки адреса следует отметить, что в отличие от MOV они пересылают не значения, а адрес операнда. Эту операцию выполняет LEA. По этой команде в приемник, каковым является 16-разрядный регистр, переносится исполнительный (эффективный) адрес данных (иначе говоря, в регистр загружается смещение адреса памяти относительно начала сегмента данных).

Для загрузки полного адреса ячейки памяти существуют команды LDS и LES. При их выполнении смещение искомого адреса пересылается в указанный командой 16-разрядный РОН, а сегментная составляющая адреса (которая потом смещается на 4 разряда при определении физического адреса) помещается в 1-ой команде в регистр данных DS, а во 2-ой команде – в дополнительный регистр данных ES.

Команды PUSH и POP помещают или извлекают указанные в них данные на вершину стека (более подробно их будем рассматривать на конкретных примерах программ).

 

Вопросы для проверки усвоения команд пересылки данных.

1. Заполните таблицу, считая все команды независимыми. Переменная BYTE определена как DB 05 и описана первой в сегменте данных. Отметьте некорректные инструкции.

Команда Содержимое операнда до выполнения команды Результат выполнения
MOV CX, 25H CX=0000H CX=
MOV CL, 0 CX=FFFFH CX=
MOV AX, BYTE AX=1234H AX=
MOV DL, BYTE DX=0120H DX=
LEA BX, BYTE BX=3456H BX=
XCHG AH, AL AX=1234Y AX=
XCHG CX, CX CX=1234H CX=

2. Чем существенно различаются в исполнении 2 инструкции, записанные одной строкой (обратитесь к теме “Режимы адресации”)? Какой смысл имеют в этих инструкциях квадратные скобки?

A) MOV  DX, AC24H                       MOV DX, [AC24H]

B) MOV  BX, WORDA            MOV BX, [WORDA]

C) MOV  BX, OFFSET WORDA LEA BX, WORDA

3. Укажите, как одной командой поменять содержимое слова WORD и регистра АХ.

4. Укажите команду, загружающую в регистр SI смещение элемента данных с именем RATE.

5. В сегменте данных описан вектор TABL  DB 12, 15, 16, 10, 8, 2, 5, 0. Напишите команды занесения значения четвертого байта (значение 10) в регистр AL

а) с использованием прямой адресации;

б) с использованием косвенной адресации;

в) с использованием прямой адресации с индексированием.

6. Используя описание вектора из пункта 5, заполните пустые места в таблице.

Команда Комментарий или результат выполнения
LEA   BX, TABL Инициализируем ВХ
MOV DI, 4 и DI
MOV CL, [BX] CL=
MOV DL, [BX+3] DL=
MOV AL, [BX+DI] AL=
MOV CH, 2[BX+DI] CH=

 

3. Команды манипулирования битами

Команды этой группы сведены в таблицу 3.

Мнемокод Формат
Логические команды AND   AND приемник, источник
OR OR приемник, источник
ХOR ХOR приемник, источник
NOT NOT приемник
TEST TEST приемник, источник
Команды сдвига SAL, SHL   SAL, SHL приемник, источник
SAR SAR приемник, источник
SHR SHR приемник, источник
Команды циклического сдвига ROL   ROL приемник, источник
ROR ROR приемник, источник
RCL RCL приемник, источник
RCR RCR приемник, источник

 

Логические команды выполняют побитовые операции по приведенным ниже правилам:

Бит источника Бит приемника AND OR XOR NOT TEST

 

Логические операции, кроме NOT, устанавливают флаги SF (знака), ZF (нуля) и PF(четности), флаг переноса устанавливается в 0. Все команды, за исключением TEST, сохраняют результат логической операции в приемнике. Команда TEST выполняет такую же операцию, что и AND. Различие только в том, что результат операции TEST не сохраняется в приемнике, а используется для следующей команды перехода по нулю.

Логические команды хороши тем, что выполняются быстро, быстрее “коротких” команд сложения и вычитания, однако студенты редко ими пользуются в своих программах. Приведу некоторые полезные приемы применения этих команд.

Часто встречающийся в программах прием – использование логической команды “исключающее или” (XOR) для обнуления регистра:

XOR      AX, AX.

Поскольку логические команды устанавливают флаги, их можно применять для проверки значений регистров. Например,

OR DX, DX ; проверить значение в регистре.

Следует отметить, что эта команда не изменит значения в регистре DX, но при этом, если в регистре хранится нулевое значение, будет установлен в 1 флаг ZF, если старший 15-ый бит в регистре единичный (что свидетельствует об отрицательном значении при представлении его как числа со знаком), то будет установлен в 1 флаг знака SF).

При проверки четности или нечетности значения в регистре, можно воспользоваться командой

AND DX, 1H  ; выделить младший бит,

учитывая, что двоичное представление четных чисел имеет нулевой последний бит. Следует отметить, что при использовании команды AND значение в регистре будет этой командой изменено. Если необходимо оставить значение в регистре DX без изменений, то следует воспользоваться командой TEST, например, таким образом:

TEST    DX, 00000001B; проверить младший бит.

В разделе “команды передачи управления” приводится более подробный фрагмент программы с использованием логических команд.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...