Условное ассемблирование if ... end if

Тема в разделе "WASM.ASSEMBLER", создана пользователем abcd008, 28 окт 2010.

  1. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    народ помогите сделать
    условное ассемблирование

    как сделать так чтобы при установленном бите 1 в константе vid выполнялось условие.
    или просто как в условии написать если бит 1=1 то...

    так компилируется
    vid equ 1111b
    if ...
    сдесь код который должен компилироваться при установленном бите
    end if

    а так пропускается
    vid equ 1110b
    if ...
    сдесь код который должен компилироваться при установленном бите
    end if


    что надо написать вместо точек. не чего не получается.
    остальные биты в vid тоде используются но для других условий.
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Попробуй так:
    Код (Text):
    1. vid = 1111h
    2. if (vid or 1) = 1
    3. ...
    4. end if
    5.  
    6. if (vid or 1) = 0
    7. ...
    8. end if
     
  3. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Не смущает то, что (vid or 1) всегда равно 1111b при заданных условиях, гуру?

    ----8<----
    abcd008,

    Думаю, if vid and 1 поможет.
     
  4. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    пробовал не катит
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    А не проще выделить отдельную переменную, равную 1? А переменную vid объявлять, как сумму какого-то числа и этой волшебной переменной
     
  6. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    выделить можно, но тогда пользователям которые будут собирать программу предется изменять переменных 20,
    а так просто пару биты в одном месте
     
  7. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Кто, куда и что не катит?
    Код (Text):
    1. vid equ 1110b
    2. if (vid) and 1
    3.   display "vid and 1: true"
    4. else
    5.   display "vid and 1: false"
    6. end if
    7. display 13, 10
    8.  
    9. if (vid) and 2
    10.   display "vid and 2: true"
    11. else
    12.   display "vid and 2: false"
    13. end if
    14. display 13, 10
    Если vid — численная а не символическая константа, скобки не нужны.
     
  8. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Надо же!.. OR вместо AND. Заело что-то.
     
  9. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    AsmGuru62,

    Бывает. Кто без греха, пусть ищет камень. :derisive:
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    ... и бросает его в AsmGuru62.
     
  11. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    l_inc,

    Ага, программистская байка. Ходит, значится, программист с фонарём под глазом (т.е. его уже осудили аналогично) и ищет камень. Ибо настоящий киник, как и Диоген.
     
  12. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    странно я пробовал так только без скобок и не фига не работало, ща попробую как у тебя
     
  13. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    работает, наверно скобок не хватало:)
     
  14. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    abcd008,

    Признайся, vid не была просто equ константа? Препроцессор коварен, хоть и прямолинеен.
     
  15. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    нет сначало я писал просто vid equ 1..2..3 ,а потом vid equ 01b..
    но без скобок почему-то не работало.
    может это связано с версией fasm? я сейчас новую скачал и твой пример во всю использую. Спасибо.
     
  16. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    ONE = 1
    FIVE = 5
    SIX equ ONE + FIVE
    EIGHT = 8
    NINE equ EIGHT + ONE
    СМЫСЛ = SIX * NINE ; =42