|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,761
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 14.11.2013, 07:16 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ГЛАВА 9 Синтаксис команды:ЛОГИЧЕСКИЕ КОМАНДЫ (часть 2/2) Команды обработки бит Команды сканирования бит Команда BSF (Побитное сканирование вперед = Bit Scan Forward) BSF <DEST>,<SRC> Возможные варианты команды: bsf reg,reg/mem Семантика команды: для проверки наличия единичных битов в операнде SRC. Если первый единичный бит числа находится в N-ой позиции, значит само число кратно 2N-1. Псевдокод: IF SRC=0 THEN ZF ELSE ZF DEST WHILE Bit(SRC,DEST)=0 DO DEST ENDDO ENDIF Алгоритм работы:
Найдем номер крайнего справа бита в регистре EBX, содержащего единицу
Команда BSR Синтаксис команды:(Побитное сканирование назад = Bit Scan Reverse) BSR <DEST>,<SRC> Возможные варианты команды: bsr reg,reg/mem Семантика команды: проверка наличия единичных битов в операнде SRC. Алгоритм работы:
ELSE ZF DEST WHILE Bit(SRC,DEST)=0 DO DEST ENDDO ENDIF Применение: команду BSR используют при работе на битовом уровне для определения позиции крайних слева единичных битов. Найдем номер крайнего слева бита в регистре EBX содержащего единицу.
Команды проверки и модификации бит Синтаксис команды:Команда BT (Проверка битов = Bit Test) BT <SRC>,<Index> Возможные варианты команды: bt reg/mem,reg bt reg/mem,imm Семантика команды: извлечение значения заданного бита в флаг CF. Алгоритм работы:
CF Применение: команду BT используют для определения значения конкретного бита в операнде SRC. Номер проверяемого бита задается содержимым операнда Index (значение числом из диапазона 0...31). После выполнения команды, флаг CF устанавливается в соответствии со значением проверяемого бита.
Команда BTC Синтаксис команды:(Проверка бита и его инверсия = Bit Test and Complement) BTC <SRC>,<Index> Возможные варианты команды: btc reg/mem,reg btc reg/mem,imm Семантика команды: извлечение значения заданного бита в флаг CF и изменение его значения в операнде SRC на обратное. Псевдокод: CF Bit(SRC, Index) Алгоритм работы:
Инвертирование 8-го бита регистра EBX:
Команда BTR Синтаксис команды:(Проверка бита с его сбросом в 0 = Bit Test and Reset) BTR <SRC >,<Index > Возможные варианты команды: btr reg/mem,reg btr reg/mem,imm Семантика команды: извлечение значения заданного бита в флаг CF и изменение его значения на нулевое. Псевдокод: CF Bit(SRC, Index) Алгоритм работы:
Проверка состояния бита 8 регистра EBX и его сброс
Команда BTS Синтаксис команды:(Проверка бита с его установкой в 1 = Bit Test and Set) BTS <SRC>,<Index> Возможные варианты команды: bts reg/mem, reg bts reg/mem, imm Семантика команды: извлечение значения заданного бита операнда SRC в флаг CF и установка этого бита в единицу. Псевдокод: CF Bit(SRC, Index) Алгоритм работы:
Номер проверяемого бита задается содержимым операнда Index (значение из диапазона 0...31). После выполнения команды флаг CF устанавливается в соответствии со значением исходного бита, то есть тем, что было до выполнения операции. Проверка состояния 0-го бита регистра EBX и его установка в 1
Работа с битами Для обнуления крайнего справа единичного бита (например, 01011000X AND(X – 1) Установка крайнего справа нулевого бита (01011100X OR(X+1) Для выделения крайнего справа единичного бита (01011000X AND(-X) Для выделения крайнего справа нулевого бита (10100111 (NOT X)AND(X+1) Для выделения завершающих нулевых битов (например, 01011000
X XOR(X-1) Распространение вправо крайнего правого единичного бита (например 01011000 X OR(X-1) Обнуление крайней справа непрерывной подстроки единичных битов (01011100((X OR(X-1))+1)AND X Синтаксис команды:Команды управления флагами микропроцессора Установка флага CF STC (SET Carry flag) Семантика команды: установка флага переноса CF. Псевдокод:[CEnter]EFLAGS.CF[bit 0] Сброс флага CF Синтаксис команды:CLC (CLEAR Carry flag) Семантика команды: сброс флага переноса CF Псевдокод: EFLAGS.CF[bit 0] Синтаксис команды:Инвертировать флаг CF CMC (COMPLEMENT Carry flag) Семантика команды: инвертирование флага переноса CF Псевдокод: EFLAGS.CF[bit 0] Алгоритм работы: Если CF=1, то после команды CMC флага переноса CF сбросится в ноль, если CF=0, то после команды CMC флага переноса CF установится в 1.Применение: команды STC, CLC, CMC применяют, как правило, для установления признака успешного или не успешного выполнения подпрограмм. Установка флага DF Синтаксис команды:STD (SET Direct flag) Семантика команды: установка флага направления DF в единицу. Псевдокод: EFLAGS.DF[bit 10] Синтаксис команды:Сброс флага DF CLD (CLEAR Direct flag) Семантика команды: сброс флага направления DF. Псевдокод: EFLAGS.DF[bit 10] Применение: в процессе циклического выполнения команд, значения в регистрах ESI и EDI автоматически модифицируются (уменьшаются или увеличиваются) в зависимости от длины элемента строки и значения флага направления DF. Если DF=0, значения в регистрах ESI и EDI увеличиваются (строка символов обрабатывается со стороны меньших адресов в сторону больших адресов). Если DF=1, значения в регистрах ESI и EDI уменьшаются (строка символов обрабатывается со стороны больших адресов в сторону меньших адресов).Установка флага IF Синтаксис команды:STI (SET Interrupt flag) Семантика команды: установка флага разрешения прерывания IF в единицу, разрешая процессору распознавать маскированные прерывания. Немаскированные прерывания распознаются процессором всегда, независимо от значения флага прерывания IF. Псевдокод: EFLAGS.IF[bit 9] Синтаксис команды:Сброс флага IF CLI (CLEAR Direct flag) Семантика команды: сброс флага разрешения прерывания IF. Псевдокод: EFLAGS.IF[bit 9] Применение: организация обработки критических участков программы, в которых прервать работу микропроцессора невозможно. Однако этим не стоит злоупотреблять, так как аппаратные прерывания использует и операционная система.Установка флага ZF Синтаксис команды: XOR AX,AX, или SUB AX, AX, либо любая другая команда, которая даст нулевой результат. Семантика команды: установка флага ZF. Псевдокод: EFLAGS.ZF[bit 6] Установка флага TF Синтаксис команды: INT 3 Семантика команды: установка флага TF в единицу.Псевдокод: EFLAGS.TF[bit 8] Применение: пошаговое выполнение программы с целью ее выявления ошибок.Одновременное изменение значения нескольких флагов Если необходимо изменить значения других флагов или одновременно изменить значения нескольких флагов используют следующие схемы:
Обобщаем. Как изменить (установить/сбросить) Нумеровать биты принято с нуля, причем младший бит (нулевой) имеет маску 1, первый – 2, второй – 4, третий – 8 и т.д, т.е. маска = 2n (или 1 shl n), где n – номер бита. Управлять битами можно с помощью инструкций and, or, xor, btr, bts и btc:определенный бит в байте?
Определить состояние бита можно с помощью инструкций test и shr (ror, rcr, sar) и инструкции bt (с помощью инструкций btr, bts и btc тоже можно определить состояние изменяемого бита):
Контрольные вопросы и упражнения
6
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|