Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Программир на ассемблере.doc
Скачиваний:
8
Добавлен:
17.09.2019
Размер:
605.7 Кб
Скачать

7.3. Логические команды

Команда NOT - логическое НЕТ (инверсия), имеет вид:

NOT src

src:= (src)

NOT mem/reg

Команда AND - логическое И (конъюнкция) имеет вид:

AND dst, src

dst:= (dst)  (src)

и форматы:

AND mem, reg

AND reg, mem

AND reg1, reg2

AND mem/reg, data

AND ac, data

Команда OR - логическое ИЛИ (дизъюнкция) имеет вид:

OR dst, src

dst:= (dst)  (src)

и те же форматы, что и AND.

Команда XOR - исключающее ИЛИ - (сложение по модулю два) имеет вид:

XOR dst, src

dst:= (dst)  (src)

и те же форматы что и команда AND.

Команда TEST - проверка битов выполняет конъюнкцию операндов, но не изменяет их значений (неразрушающая проверка) имеет вид:

TEST dst, src

(dst)  (src)

и те же форматы, что и AND.

7.4. Команды сдвигов

Все команды сдвигов имеют формат КОП mem, reg, count,

где count - счетчик числа сдвигов. Этот операнд может быть указан как непосредственный операнд - 1 (статический сдвиг) или как регистр CL. В командах сдвига в коде операции вместо бита d стоит бит c. Если с=0, то осуществляется сдвиг на один разряд. Если с=1, то число сдвигов задано в регистре CL.

В циклических сдвигах выдвигаемый бит помещается на место освобождающегося бита.

Команда RCL - циклический сдвиг влево через перенос:

CF



1

0

________________________

Команда RCR - циклический сдвиг вправо через перенос:

CF



1

0

________________________

Команда ROL - циклический сдвиг влево:

CF



1

0

_______________________

Команда ROR - циклический сдвиг вправо:



1

0

CF

_____________________

Команды SAL, SHL - арифметический и логический сдвиги влево:

CF





1

0

 0

Освобождающийся бит заполняется 0.

Команда SAR - арифметический сдвиг вправо:



1

0

CF

___

Левый освобождающийся бит заполняется значением знакового бита.

Команда SHR - логический сдвиг вправо:

0



1

0



CF

Левый освобождающийся бит заполняется нулем.

Команды арифметических сдвигов удобно применять для умножения (сдвига влево) и деления (сдвига вправо) на степень двух.

7.5. Команды переходов (передачи управления)

Команды передачи управления можно разделить на следующие группы:

7.5.1. Команды безусловных переходов

7.5.2. Команды условных переходов

7.5.3. Команды вызовов

7.5.4. Команды возвратов

7.5.5. Команды управления циклами

7.5.6. Команды прерываний

Сегментная организация памяти определяет две основные разновидности команд передачи управления.

1. Передача управления в пределах текущего сегмента кода называется внутрисегментной - при этом модифицируется только регистр IP и адрес перехода представляется, одним словом.

Такая передача управления называется так же близкой (тип NEAR), а ее вариант с сокращенным диапазоном адресов переходов - короткой (тип SHORT).

2. Передача управления за пределы текущего сегмента кода называется межсегментной - при этом необходимо модифицировать содержимое регистров IP и CS и адрес перехода представляется двумя словами (сегмент: смещение).

Данная передача управления называется так же длинной (тип FAR), так как она позволяет перейти к любой ячейке памяти.