Ассемблер команда cmp
Автор Nastya NasNas задал вопрос в разделе Другие языки и технологии
Ассемблер. Команда cmp. и получил лучший ответ
Ответ от
искать нужно полную документацию по intel assembler, например. вот кусок древней:
CMP сравнивает указанное значение с аккумклятором и возвращает результат путем установки CF и ZF. Значения не изменяются.
ZF показывает равенство значений. Если CF не установлен, значит аккумулятор больше, чем указанное значение и наоборот. Кроме того, значение CF инвертируется, когда значения имеют разные знаки или одно из значений "complemented", лень искать перевод.
Ответ от Їебуратор[гуру]
cmp это вычитание то есть sub, с тем отличием, что не воздействует на операнд приемник. CF и OF противоречат друг другу, в том смысле, что OF это переполнение для знаковых, а CF для беззнаковых чисел. Оба примера не имеют смысла, поскольку есть противоречия во флагах. В первом случае CF и OF могут быть равны, но и SF так же будет установлен, так как переполнение будет происходить в положительных числах, во втором случае все наоборот SF обязан быть ноль, поскольку после вычитания получается неотрицательное число, то есть переполнение происходит в отрицательных числах.
cmp это вычитание то есть sub, с тем отличием, что не воздействует на операнд приемник. CF и OF противоречат друг другу, в том смысле, что OF это переполнение для знаковых, а CF для беззнаковых чисел. Оба примера не имеют смысла, поскольку есть противоречия во флагах. В первом случае CF и OF могут быть равны, но и SF так же будет установлен, так как переполнение будет происходить в положительных числах, во втором случае все наоборот SF обязан быть ноль, поскольку после вычитания получается неотрицательное число, то есть переполнение происходит в отрицательных числах.
Ответ от East RX[гуру]
Для чисел со знаком флаги после выполнения "cmp x, y" интерпретируются так:
если SF != OF, то x < y;
если ZF = 1, то x = y;
если ZF = 0 и SF = OF, то x > y.
Для чисел со знаком флаги после выполнения "cmp x, y" интерпретируются так:
если SF != OF, то x < y;
если ZF = 1, то x = y;
если ZF = 0 и SF = OF, то x > y.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Ассемблер. Команда cmp.
спросили в Ассемблер
Ассемблер сдвиги. Как умножить любое число на 13 с помощью сдвигов в ассемблере
13 = (2 + 1) * 4 + 1 - меньше сдвигов (3 против 5), хотя это актуально только для процессоров,
подробнее...
Ассемблер сдвиги. Как умножить любое число на 13 с помощью сдвигов в ассемблере
13 = (2 + 1) * 4 + 1 - меньше сдвигов (3 против 5), хотя это актуально только для процессоров,
подробнее...
спросили в Ассемблер
Условие на ассемблере if
там не if только по флагам
Slava m
Искусственный Интеллект
(126516)
подробнее...
Условие на ассемблере if
там не if только по флагам
Slava m
Искусственный Интеллект
(126516)
подробнее...
assembler tasm - в чем ошибка?
Код программы очень большой, поэтому привожу только фрагменты с ошибками.
...
подробнее...
спросили в Байт код
Помогите ответить на вопрос. Языки программирования. Программы. Виды трансляторов
Поконкретнее бы вопрос.
Компьютер понимает только двоичные коды. Нолики и единицы. И все!
подробнее...
Помогите ответить на вопрос. Языки программирования. Программы. Виды трансляторов
Поконкретнее бы вопрос.
Компьютер понимает только двоичные коды. Нолики и единицы. И все!
подробнее...