Это похоже на проблему дифференциальных команд.Опять же, флаг условия (CF) является глобальным и изменяется каждый раз, в этом случае выполняется операция сравнения.
В неверном примере инструкция A выполнит сравнение, а CF для равных (=)будет либо правда, либо ложь.Предполагаемый требуемый поток операций заключается в том, что если инструкция A возвращает истину для равных, тогда выполнить инструкцию B, в противном случае перейти к последней ступени.
Однако в случае, когда инструкция A возвращает истину для равных, тогда инструкция Bбудет выполняться, и, в этом случае, подразумевается, что он также выполняет операцию сравнения (предположительно, будет подхвачено на следующей ступени).Однако, если B возвращает false для равных, тогда последняя ветвь текущей ступени будет по-прежнему выполняться, потому что это происходит после сравнения с B - это даже при том, что намерение состоит в том, чтобы выполнить только последнюю ветвь, если A возвращает false - не B!
Второй пример (правильный) показывает, как избежать попадания результатов B в логику A.