изменить один бит asm

Discussion in 'Болталка' started by awdrg, 19 Oct 2011.

  1. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    как установить отдельный бит регистра в ноль?
    TASM
     
  2. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    используй команды btr,bts
     
  3. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    без этих команд реально сделать? они не поддерживаются тем режимом, что мне нужен.
    Вот кусок задачи: есть какое то число, скажем 50h и есть значение в регистре AX. Задача: если AX больше 50h, установить произвольное значение. Если AX меньше 50h - оставить все как есть. Варианты с cmp и условными переходами не катят, т.к слишком много возни. Реально выполнить мою задачу за 2-3 команды каких нибудь?
     
  4. VERte][

    VERte][ Elder - Старейшина

    Joined:
    17 May 2007
    Messages:
    240
    Likes Received:
    163
    Reputations:
    32
    отдельный, конкретный, бит можно установить в ноль выполнив, например
    and ax, 1111011111111111b
    5й бит ax будет гарантированно нулем, остальное не изменится
     
  5. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    я не выкупаю что значит установить произвольное значение,где?если должно как то оповещаться то прыжок по-любому придется юзать.
     
  6. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    спасибо большое, это именно то, что было нужно
     
  7. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    у бОльшего числа можно занулить первые биты по маске и тогда оно станет гарантировано меньше или равно необходимому. Если же оно изначально меньше, то ничего не изменится, т.к там стояли нули.
    произвольное в смысле любое, лишь бы было меньше.
     
    #7 awdrg, 20 Oct 2011
    Last edited: 20 Oct 2011
  8. VERte][

    VERte][ Elder - Старейшина

    Joined:
    17 May 2007
    Messages:
    240
    Likes Received:
    163
    Reputations:
    32
    такое решение подойдет далеко не для всех чисел, если брать по 49h включительно, то ок, если по 50h включительно, то непонятно, как ты собираешься отсечь числа с 51 по 59