Я играю с инструкцией TEST сборки, но в настоящее время она меня смущает.
AX = 1110xB
При тестировании одного бита,
, если оно установленотогда zf = 0 (т. е. TEST AX, 0001xB)
, если он не установлен, то zf = 1 (т. е. TEST AX, 0010xB)
На данный момент все в порядке, но проблема (илимоя путаница) - это когда я хочу проверить несколько битов в одной инструкции TEST.Если установлен только один из проверенных битов, то zf = 0.Например:
AX = 1110xB
TEST AX, 0110xB -> zf = 0 (установлены оба бита)
TEST AX, 0011xB -> zf = 0 (только1 бит установлен, но я запросил 2 бита)
TEST AX, 1110xB -> zf = 0 (три бита установлены)
Вопрос: как проверить несколькобиты и ожидают положительного результата (zf = 0) только если все проверенные биты равны "1"?Например, как в C / C ++, когда вы используете логическое & для проверки маски битов (10101101 & 00000101) ... Или я должен тестировать один бит сразу в сборке?
Моя программа выдает "отрицательный", еслибит (ы) не установлены, но дают «положительный» результат, если установлен хотя бы 1 бит, а не все протестированные биты равны 1.
Я пробовал с двумя разными отладчиками, и результат один и тот же.
Спасибо за ваши комментарии