Если база адресует память, а смещение — непосредственный операнд, то процессор использует только младшие 5 бит смещения; если же смещение задано регистром общего назначения, то смещение интерпретируется как 32-разрядное число со знаком, которое может принимать значение от -231 до 231-1.
Флаги AF, OF, PF, SF, ZF не определены.
BTS база, смещение проверка и установка бита 80386
BTR база, смещение проверка и сброс бита 80386
BTC база, смещение проверка и инверсия бита 80386
Команды аналогичны BT, но после занесения значения заданного бита в CF соответственно устанавливают, сбрасывают или инвертируют заданный бит.
Примечание. Несмотря на то, что эта команда считывает единственный бит памяти, процессор считывает слово или двойное слово по адресу база+(2´(смещение:16)) или база+(4´(смещение:32)) соответственно режиму адресации, поэтому не следует пользоваться командами типа BT вблизи областей памяти, недоступных для чтения или для записи, если команда предполагает таковую.
BSF приёмник, источник прямой поиск единичного бита 80386
BSR приёмник, источник обратный поиск единичного бита 80386
Команды сканируют источник и записывают в приёмник номер
первого встретившегося бита, равного 1. Команда BSF
сканирует от младшего разряда к старшему, а BSR
— от старшего к младшему, при этом обе команды считают номера битов с нуля.
Например, если источник равен 0000 0000 0000 0001, то BSF
вернёт 0, а BSR
— 15.
Источником может быть:
— 16- или 32-разрядный регистр общего назначения;
— 16- или 32-разрядная область памяти.
Приёмником может быть регистр.
Если источник равен нулю, значение приёмника не определено, а ZF устанавливается. Иначе ZF сбрасывается.
Остальные флаги состояния не определены.
SETxx приёмник установка байта по условию 80386
Команды данного набора устанавливают приёмник в 1 или 0, если соответственно удовлетворяется или не удовлетворяется условие.
xx имеют то же значение, что и в командах условного перехода.
Приёмником может быть:
— 8-битный регистр общего назначения;
— однобайтная область памяти.
JMP операнд безусловный переход 8086
Передаёт управление в другую точку программы, не сохраняя какой-либо информации для возврата. Операнд задаёт адрес перехода.
Операндом может быть:
— непосредственный операнд;
— регистр;
— память.
В программах на языке ассемблера непосредственный операнд задаётся, как правило, именем метки, установленной перед командой, на которую выполняется переход.
Различают следующие виды переходов:
— короткий (short) — адрес перехода находится в пределах -128…+127 байт от команды JMP;
— ближний (near) — адрес перехода находится в том же сегменте памяти, что и команда JMP — только для процессоров 80836 и выше;
— дальний (far) — адрес перехода находится в другом сегменте;
— переход с переключением задачи — передача управления другой задаче в многозадачной среде.
Примечание. Дальний переход будет выполняться в тот же самый сегмент, если в сегментной части операнда указано число, совпадающее с текущим значением CS.
Действие команды при коротких и ближних переходах следующее.
Если операнд — регистр или переменная в памяти, то его
содержимое просто копируется в счётчик команд, как если бы это была команда MOV
.
Если операнд непосредственный, то его значение суммируется с содержимым счётчика команд, приводя к относительному переходу. Если в программе на языке ассемблера в качестве операнда указана метка, то ассемблер вычисляет и записывает именно относительное смещение.
При дальнем переходе в сегмент с теми же привилегиями команда JMP загружает новое значение в счётчик команд и новый селектор сегмента кода в CS, используя старшие 16 бит операнда как новое значение для CS и младшие 16 или 32 бит — как значение для IP или EIP.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.