Поиск нулевого бита

Тема в разделе "WASM.BEGINNERS", создана пользователем framalex, 21 июл 2005.

  1. framalex

    framalex New Member

    Публикаций:
    0
    Регистрация:
    3 июл 2005
    Сообщения:
    3
    Адрес:
    гопомудозадрищенск
    Имеется (мноооого) байтов. Надо вычленить адрес байта, содержащего один или несколько нулевых битов, и номер нулевого бита в этом байте. Придумал уже пару вариантов, как сделать это, но они кажутся неоптимальными. Помогите во имя ДЗЕНА плиз
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257




    И что за варианты ?

    Самый простой - сравнить с -1
     
  3. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Ну, и кол-во нулевых битов будет от 1 до 8, куда девать их номера прикажете?
     
  4. zobot1

    zobot1 New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2005
    Сообщения:
    55
    не ну а например

    двигать через флаг CF

    и пасти - if 0 -> бит сброшен
     
  5. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Лучше уж bsf/bsr с операндом в памяти. Как раз большие битовые строки поддерживает.
     
  6. zobot1

    zobot1 New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2005
    Сообщения:
    55
    ну и в сдвигах поддерживаются 32битные :))

    а для bsf/bsr надо табличку ещё да тактов на пне 7-72

    а rcl\r - 1 - 27, а rcl reg\mem,1 - даже PU.
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    zobot1 Не надо табличку, они всего пару тактов, и сдвигать не надо 30 раз