У меня есть задание насчет инструкции по сборке bt
. Я вычитал часть книги, чтобы указать контекст. Пожалуйста, посмотрите последний пример, bt Testme, bx
. Почему эта копия TestMe+8
? Разве он не должен копировать TestMe+65
?
Огромное спасибо за помощь!
6.6.4.2 Инструкция по битовому тестированию: BT, BTS, BTR и BTC
На процессоре 80386 или более поздней версии вы можете использовать bt-инструкцию (bit тест) для проверки одного бита. Его второй операнд задает индекс бита в первый операнд. Bt копирует адресованный бит в переноску флаг. Например, ось
bt, 12
копирует бит двенадцати осей в переносной флаг.
Инструкции bt/bts/btr/btc касаются только 16 или 32-битных операндов. Это не является ограничением инструкции. В конце концов, если вы хотите тестовый бит три из аль-регистра, вы можете так же легко проверить бит. три осевых регистра. С другой стороны, если индекс больше. чем размер регистрационного операнда, результат не определен.
Если первый операнд является ячейкой памяти, команда bt проверяет. бит при заданном смещении в памяти, независимо от значения параметра Индекс. Например, если bx содержит 65, то
bt TestMe, bx
скопирует бит одного из местоположений TestMe+8 в переноску. флаг. И снова, размер оперы не имеет значения. Для всех намерения и цели, операнд памяти является байтом, и вы можете протестировать любой бит после этого байта с соответствующим индексом. Фактический бит bt тесты находятся на уровне битового индекса позиции мод. 8 и при эффективном смещении памяти. адрес + индекс/8.