bt assembly instruction

У меня есть задание насчет инструкции по сборке 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.

6
задан Peter Cordes 1 November 2019 в 00:55
поделиться