Worker ends
Worker struc
Структуры
Bts pole,ax
Mov ax, 10
Bt bl,3
Mov bl, 10101010b
Bsf bx, al
Логические команды поиска
Jnz m1
…
m1:
1) Сканирование битов вперед
bsf <операнд1>,<операнд2>
Эта команда просматривает биты операнда2 от младшего бита к старшему в поисках первого бита, установленного в единицу, а в первый операнд записывается номер этого бита. Команда действует на состояние флага нуля:
zF=0, если найден бит, равный единице
zF=1, если не найден бит, равный единице
Пример:
jz m1 ;переход, если al=0
…
m1:
2) Сканирование битов в обратном порядке
bsr <операнд1>,< операнд2>
Эта команда находит первый попавшийся бит, находящийся в состоянии единицы. В операнд1 записывается номер найденного бита. Номер отсчитывается от младшего разряда.
3) Проверка состояния бита
bt <операнд>,< смещение>
В смещении указывается номер проверяемого бита, в операнде – байт, слово, двойное слово, в котором проверяется состояние данного бита. Результат записывается во флаг переноса cf.
4) Проверка и установка бита
bts <операнд>,< смещение>
Команда переносит проверяемый бит во флаг cfи устанавливает проверяемый бит в единицу.
Пример:
jc m1 ;переход, если проверяемый бит = 1
…
m1:
5) Проверка и сброс бита
btr <операнд>,< смещение>
Значение проверяемого бита записывается в cf и одновременно этот бит сбрасывается в нулевое состояние.
6) Проверка и инвертирование бита
bts <операнд>,< смещение>
Старое значение записывается в cf и инвертируется в операнде.
Это тип данных, состоящий из фиксированного числа элементов разного типа. Для использования структуры в программе необходимо:
1) Задать шаблон структуры
2) Определить экземпляр структуры
3) Организовать обращение к отдельным полям структуры
Описание шаблона структуры:
name db 30 dup('' '')
position db 30 dup('' '')
В общем случае шаблон выглядит так:
имя_стуктуры struc
<описание полей>