или я дурак или bsr не работает

Тема в разделе "WASM.ASSEMBLER", создана пользователем Ra!N, 9 июл 2008.

  1. Ra!N

    Ra!N New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2006
    Сообщения:
    111
    bsr ecx,eax - сканирует eax начиная со старшего бита и сохраняет в ecx (если eax != 0) номер первого найденного еденичного бита, считая от нуля - это из Зубкова.
    Т.е. если eax равен 2, то в ecx должно быть 30. Я запускаю под Олей и bsr пишет в ecx 1! Как 1? 1 должен давать bsf, он это и дает. с ним проблем нет, но почему bsr тоже дает 1?
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    В двоичном представлении числа 2 всего один единичный бит под номером 1, поэтому bsf и bsr и выдают одно и тоже значение 1. Если возьмешь число 3, то bsf выдаст 1 (младший ед.бит), а bsr - 2 (старший ед.бит)
     
  3. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    BSR поступает правильно. И документация тоже говорит правильные вещи: отсчёт идёт ОТ НУЛЯ, а не наоборот, чтобы от 31.

    Чёрт, не успел :)

    Просто БСР сканирует число с "конца", а БСФ - с "начала".
     
  4. Ra!N

    Ra!N New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2006
    Сообщения:
    111
    тогда вопрос: ax=2, что будет в cx после bsr cx,ax?
    1? если да, то почему в Зубкове написано 14, как будто бы мы считаем биты с конца (всмысле 31-й -- 0, 30 - 1, ...)
    [​IMG]
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    у мя зубков 1999года бумажный.
    стр. 55, "...ного 1. Команда BSR сканирует источник, начиная с самого старшего бита, и возвращает номер первого встретившегося ненулевого бита, считая от нуля, то есть, если источник равен 0100 0000 0000 0010b, то BSF возвратит 1, а BSR - 14."
    источник нимного другой....
     
  6. Ra!N

    Ra!N New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2006
    Сообщения:
    111
    блин, лишний 0-лик и меня сложилось неправильное представление о bsr...
    странно,потому что у меня 2000.

    спасибо всем за ответы,разобрался :)