2014-10-18 2 views
0

Я хочу знать о инструкции NEG, это также влияет на флаг переполнения !!! .. я узнал, что это просто отрицает значение переменной, но не может знаете, что это влияет на флаг переполненияделает инструкцию NEG на языке ассемблера устанавливает флаг переполнения

+4

Почему вы не проверяете ссылку на набор инструкций вместо запроса здесь и ожидаете ответа? – Jester

+0

Я посмотрел туда, но его действительно трудно получить оттуда ... нужен только один-два строчных ответа, я просто новичок в этом. –

ответ

2

Если вы хотите узнать, какие инструкции, обратитесь к справочным руководствам.

essential reference, namely the Intel instruction set manual говорит это о инструкции NEG:

Flags Affected 
The CF flag set to 0 if the source operand is 0; otherwise it is set to 1. 
The OF, SF, ZF, AF, and PF flags are set according to the result. 

Так что ясно, что инструкции NEG наборы флаг O; поэтому он влияет на флаг O, который является исходным вопросом OP. И он делает это каждый раз, когда он выполняется. (Люди не должны путать «не изменилось» с «не установлено»).

В этом конкретном справочном руководстве не указан конкретный алгоритм, указывающий, когда O установлен на ноль или один. Однако процессоры Intel являются 2-мя дополнительными машинами. Команда Subtract имеет то же самое словосочетание. NEG X эквивалентен (0 SUBTRACT X). Поэтому NEG должен установить бит O в соответствии с «переполнением» для (0 SUBTRACT X); это установит O, когда X будет 0x8000000.

Проверка Intel Basic Archiecture Manual, мы находим это описание битовых:

OF (bit 11) Overflow flag 
— Set if the integer result is too large a positive number or too small a 
    negative number (excluding the sign-bit) to fit in the destination operand; 
    cleared otherwise. This flag indicates an overflow condition for signed-integer 
(two’s complement) arithmetic 

, подтверждающее наше понимание.

 Смежные вопросы

  • Нет связанных вопросов^_^