Вычисление значения отрицательного числа

Тема в разделе "WASM.ASSEMBLER", создана пользователем Sunzer, 25 май 2008.

  1. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Как вычеслить значение отрицательного числа ?
    SUB EAX,-1
    Опкод будет 83E8FF
    чему будет равнятся опкод
    SUB EAX,-21
    Опкод 83E8 остаеться всегда постаянным , а FF уже измениться на другое значение вот как программно вычеслить чему будет это значение равно?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    -X = (not X) + 1.
     
  3. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Не понял...
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Странный вопрос. Речь про морфер идет, видимо?

    Отрицательные числа представляются в "дополнительном коде" (дополнение до двух). Чтобы вычислить отрицательное значение можно либо просто сделать
    Код (Text):
    1. mov al, 21
    2. neg al ;теперь в al находится 0xEB, что равно -21
    ну, или так:
    Код (Text):
    1. mov al, 21
    2. not al
    3. inc al
    что то же самое, но немного по-другому влияет на флаги.

    Или же можно просто открыть калькулятор, ввести -21 и нажать hex :).
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Ну, вообще-то уметь вручную выполнять все операции двоичной арифметики есть святой долг и обязанность каждого ассемблерщика... Чего сложного-то?