Голосование за лучший ответ
Daniel Bovet
Мыслитель
(5189)
8 лет назад
искать нужно полную документацию по intel assembler, например. вот кусок древней:
CMP сравнивает указанное значение с аккумклятором и возвращает результат путем установки CF и ZF. Значения не изменяются.
ZF показывает равенство значений. Если CF не установлен, значит аккумулятор больше, чем указанное значение и наоборот. Кроме того, значение CF инвертируется, когда значения имеют разные знаки или одно из значений "complemented", лень искать перевод.
Чебуратор
Мыслитель
(8449)
8 лет назад
cmp это вычитание то есть sub, с тем отличием, что не воздействует на операнд приемник. CF и OF противоречат друг другу, в том смысле, что OF это переполнение для знаковых, а CF для беззнаковых чисел. Оба примера не имеют смысла, поскольку есть противоречия во флагах. В первом случае CF и OF могут быть равны, но и SF так же будет установлен, так как переполнение будет происходить в положительных числах, во втором случае все наоборот SF обязан быть ноль, поскольку после вычитания получается неотрицательное число, то есть переполнение происходит в отрицательных числах.
1)Известно, что при использовании команды CMP получились флаги SF=0, OF=1, CF=1. Если операнды – числа со знаком, то можем ли мы точно сказать, что один из них меньше другого и который именно?
2)Известно, что при использовании команды CMP получились флаги SF=1, OF=1, CF=0. Если операнды – числа со знаком, то можем ли мы точно сказать, что один из них меньше другого и который именно?
Перечитала кучу инфыв про перенос и переполнение, но не могу подобрать ни 1 примера чисел, которые бы помогли ответить на эти вопросы.
Хотя предполагаю, что в 1 случае точно сказать нельзя, а во 2 получатель больше источника.
Но возможно кто-то подскажет примеры чисел для команды cmp,чтобы устанавливались флаги именно так, как описано в задании