Предположим, что AX = 8FFE и BX = 0FFF
Теперь, если мы напишем
Cmp ax,bx
Теперь в этой точке произойдет то, что источник (bx) будет вычтен из пункта назначения (топор) исоответствующие флаги будут обновлены.Поскольку компьютер представляет каждое число в форме дополнения 2, то 8FFE является дополнением 2 некоторого числа аналогично 0FFF является дополнением некоторого числа 2.
Как и в дополнении 2, вычитание осуществляется путем сложения, поэтому мы добавляем эти два числа какпреобразование их в двоичный файл.
8FFE----------> 1000 1111 1111 1110
0FFF----------> 0000 1111 1111 1111
--------------------------------
1001 1111 1111 1101
Теперь это результат, который равен 9FFD в шестнадцатеричном формате.
Как вы можете видеть, переполнение не произошло, а знаковый бит равен 1 результата.
Вопрос: С этим воображением, что флаг знака должен быть установлен, а флаг переполнения
Должен остаться равным 0, я проверил это в отладчике, но нашел Противоположное ему
, то естьфлаг знака остается 0, а флаг переполнения равен 1. Теперь, пожалуйста, скажите мне, почему
это происходит?