проблема флага переноса!

Предположим AX =FFFE и BX=1234
теперь, если мы пишем cmp ax,bx
(основной обмен будет вычтен из топора, и approprite flages будет обновлен), теперь, двоичным представлением чисел в топоре и основном обмене дают

    AX =    1111    1111    1111    1110
   BX=     0001    0010    0011    0100


Поскольку основной обмен будет вычтен из топора, таким образом, мы должны будем инвертировать основной обмен (как Результат = топор + (-основной-обмен)), таким образом, отрицаемым основным обменом (2's дополнение основного обмена) дают.

BX=    1110    1101    1100    1100

Теперь мы добавляем и топор и основной обмен (поскольку вычитание реализовано дополнением в компьютере),

    AX=   1111    1111    1111    1110
   BX=   1110    1101    1100    1100
    ------------------------------------
      1  1110    1101    1100    1010 

Теперь, поскольку Вы видите, что результат имеет 17 битов теперь, 17-й бит должен войти, несут flage, но когда я проверил его, флаг переноса 0, который является CF=0 почему?

1
задан Zia ur Rahman 24 May 2010 в 19:04
поделиться

2 ответа

Нашел ссылку здесь: http://oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/Chapter_6/CH06-2.html

Все, как я ожидал. Флаг переноса устанавливается, только если требовалось «заимствовать». При выполнении вычитания вы устанавливаете флаг переноса перед выполнением «вычитания», а новый флаг переноса сообщает, приходилось ли вам заимствовать. В вашем примере пропущено добавление 1 для предварительно установленного флага переноса в бите 17, что не приведет к отсутствию переноса в результате.

1
ответ дан 3 September 2019 в 00:19
поделиться

Считайте флаг переноса битом заимствования при выполнении вычитания. Он инициализируется значением 1, поэтому операция a − b − C , то есть a + not (b) + C вместо a + not (b) + 1 , как вы описали. Другими словами, перенос инвертируется для вычитания, поэтому его можно использовать для вычитания с множественной точностью.

1
ответ дан 3 September 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: