Вопрос от новичка по си

Тема в разделе "WASM.BEGINNERS", создана пользователем ajak, 1 сен 2008.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Привет!!!
    1)У меня есть переменная 2 байта 0xabcd
    как мне из неё вытащий старщий байт
    2) Как работать с битами, мне нужно узнавать установленные флаги
    Спасибо.
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    ajak
    1)
    WORD 2bytes = 0xABCD;
    2bytes >>= 8;

    2)
    bit0 = 0x1;
    bit1 = 0x2;
    bit2 = 0x4;
    bit3 = 0x8;

    if(var & bit0)
    action_bit0();
    if(var & bit1)
    action_bit1();
    if(var & bit2)
    action_bit2();
    if(var & bit3)
    action_bit3();
     
  3. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    отредактировано: попутал с двордом
    1. HIWORD() / LOWORD()
     
  4. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    ajak
    А чтобы ты еще и третий вопрос не задал, то держи:
    #define BIT0 0x1; // 0000 0000 0000 0001
    #define BIT1 0x2; // 0000 0000 0000 0010
    #define BIT2 0x4; // 0000 0000 0000 0100
    #define BIT3 0x8; // 0000 0000 0000 1000

    WORD Bits;

    bits = BIT0 | BIT2; // Set bit0 and bit2;

    установка битов
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    EvilsInterrupt
    С каких это пор допускаются имена идентификаторов, начинающиеся с цифры?
     
  6. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    ajak

    Может быть, проще будет сделать BASM-вставку?
    __asm {
    ; <---- Извлечение из WORD старшего байта
    MOV AX, ваша_переменная
    MOVZX EAX, AH

    ; <---- Тестирование нужного бита:
    BT EAX, номер_бита(отсчёт начинается с нуля)
    JC @бит_включён
    JNC @бит_сброшен
    }
     
  7. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    асм вставка посреди сишного кода а не в отдельной для этого функции это мда.
    асм вставка в С коде для работы с битами в числе когда в С для этого куча есть встроенных средств это мда
    асм вставка вообще это мда
     
  8. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    А, ну тады простите... в Си я полный дуб =(
     
  9. Ra!N

    Ra!N New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2006
    Сообщения:
    111
  10. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    l_inc
    Млин, не для тебя этот баг допустил, а для чела, который хоть немного должен научиться чему-то )))
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    EvilsInterrupt
    Эм... может стоило, чтобы не привлекать таких любителей выпендриться, как я, оставить пометку вида: "И шоп нихто не вздумал делать мне замечания по поводу этого поста!" ? :)
     
  12. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    l_inc
    Нада каждого новичка получившего ответ на свой вопрос обязать описать понятным языком ответ на свой вопрос! В конечном итоге будет реализован РТФМ для новичков от новичков, т.е на понятном им языке ;)