Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_2011.doc
Скачиваний:
64
Добавлен:
09.12.2018
Размер:
1.15 Mб
Скачать
  1. Логические команды

and операнд1,операнд2

or операнд1,операнд2

Xor операнд1,операнд2

test операнд1,операнд2

not операнд

Результат поразрядной логической операции записывается в операнд 1, кроме операции test.

Команда test выполняет поразрядное логическое умножение, но результат не записывается. Эта команда действует на состояние флагов нуля, паритета, знака.

Пример:

or eax, 10b ; установка в единицу первого бита в eax

and al, 11111110b ; установка в ноль нулевого бита al

xor eax, 10b ; инвертирование первого бита в eax

test eax, 10b ; переход на метку m1, если первый бит равен единице

jnz m1

m1:

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

  1. Сканирование битов вперед

bsf <операнд1>,<операнд2>

Эта команда просматривает биты операнда2 от младшего бита к старшему в поисках первого бита, установленного в единицу, а в первый операнд записывается номер этого бита. Команда действует на состояние флага нуля:

zF=0, если найден бит, равный единице

zF=1, если не найден бит, равный единице

Пример:

bsf bx, al

jz m1 ;переход, если al=0

m1:

  1. Сканирование битов в обратном порядке

bsr <операнд1>,< операнд2>

Эта команда находит первый попавшийся бит, находящийся в состоянии единицы. В операнд1 записывается номер найденного бита. Номер отсчитывается от младшего разряда.

  1. Проверка состояния бита

bt <операнд>,< смещение>

В смещении указывается номер проверяемого бита, в операнде – байт, слово, двойное слово, в котором проверяется состояние данного бита. Результат записывается во флаг переноса cf.

mov bl, 10101010b

bt bl,3

  1. Проверка и установка бита

bts <операнд>,< смещение>

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

Пример:

mov ax, 10

bts pole,ax

jc m1 ;переход, если проверяемый бит = 1

m1:

  1. Проверка и сброс бита

btr <операнд>,< смещение>

Значение проверяемого бита записывается в cf и одновременно этот бит сбрасывается в нулевое состояние.

  1. Проверка и инвертирование бита

bts <операнд>,< смещение>

Старое значение записывается в cf и инвертируется в операнде.

  1. Структуры

Это тип данных, состоящий из фиксированного числа элементов разного типа. Для использования структуры в программе необходимо:

  1. Задать шаблон структуры

  2. Определить экземпляр структуры

  3. Организовать обращение к отдельным полям структуры

Описание шаблона структуры:

worker struc

name db 30 dup('' '')

position db 30 dup('' '')

worker ends

В общем случае шаблон выглядит так:

имя_стуктуры struc

<описание полей>

имя_структуры ends

Заполнение шаблона:

sotr1 worker <'Иванов', 'инженер'>

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

victor worker <>

В этом варианте заполнение экземпляра происходит из шаблона.

sotr1 worker <'Петров'>

sotr1 worker <'Петров','1200'>

Поля можно заполнять выборочно, а пропущенные поля выделять запятыми.

  1. Работа с полями структуры

Чтобы сослаться на некоторое поле в структуре, следует использовать специальный оператор – точку. Этот оператор отделяет имя структуры от поля, в котором происходит адресация. Для вычисления адреса необходимо сложить адрес самой структуры и смещение в этой структуре, которое задается именем поля.

Пример:

mov al, byte ptr sotr1.name ; в al загружается одна буква 'и' –

lea bx, sotr1

mov al, byte ptr[bx] name

lea ax, sotr1.name

mov cx, [ax]+1 третий вариант адресации

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]