fasm+if+registers

Тема в разделе "WASM.BEGINNERS", создана пользователем n1kt0, 24 июн 2009.

  1. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    Почему не работает сей код:
    if eax = 0
    invoke MessageBox,0,addr NotValidPE,addr Caption,MB_ICONERROR
    end if
    xor eax,eax
    ошибка:
    if eax = 0
    error: invalid value.


    как сделать чтобы if мог работать с регистрами ?
    не буду ж я в переменную всовывать значение, чтобы потом его проверить ифом:)
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    n1kt0
    А так
    Код (Text):
    1.             test eax,eax
    2.             jz a1
    3.             xor eax,eax
    4.             ret
    5. a1:            invoke MessageBox,0,addr NotValidPE,addr Caption,MB_ICONERROR
    6.             ret
    :)
     
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    n1kt0
    в masm это пишется так
    Код (Text):
    1.     .IF (eax == 0)
    2.         invoke MessageBox,eax,addr NotValidPE,addr Caption,MB_ICONERROR        
    3.     .ENDIF
    4. xor eax,eax
     
  4. c4m310t

    c4m310t New Member

    Публикаций:
    0
    Регистрация:
    19 дек 2008
    Сообщения:
    237
    n1kt0
    Дельфиец ??? Ну ка С учить идите...
    Оператор равенства это "==" а что такое "=" я тоже ХЗ...
     
  5. c4m310t

    c4m310t New Member

    Публикаций:
    0
    Регистрация:
    19 дек 2008
    Сообщения:
    237
    Mikl___
    Опередили... =)
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    n1kt0
    Извини не внимательно прочел заголовок -- бывает -- в fasm
    Код (Text):
    1. .if eax = 0
    2.             invoke MessageBox,eax,addr NotValidPE,addr Caption,MB_ICONERROR
    3.             .endif
    4.             xor eax,eax
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Не пишу на fasm, но разве там используются addr? IMHO
    invoke MessageBox, eax, NotValidPE, Caption, MB_ICONERROR
     
  8. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    а чем собственно тогда отличается:
    if
    ...
    end if

    от
    .if
    ....
    .end if

    т.е все прекрасно работает, только непонятно то, что выше написал:)
    invoke MapViewOfFile,[hMapping],FILE_MAP_ALL_ACCESS,0,0,0
    mov [hMap],eax
    if hMap = 0
    invoke MessageBox,0,[FileCreateError],,MB_ICONERROR
    end if
    stdcall isValidPE,[hMap] ;Check file
    .if eax = 0
    invoke MessageBox,eax,addr NotValidPE,addr Caption,MB_ICONERROR
    .endif
    xor eax,eax
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
  10. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    n1kt0
    По смыслу не if hMap = 0 а .if [hMap] = 0
    Поищи "Flat assembler 1.67 Programmer's Manual" by Tomasz Grysztar
     
  11. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    if / else / end if - это условное ассемблирование - т.е. по условию во время сборки некоторый код может быть вставлен или нет в код программы.
     
  12. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    n1kt0
    прочитай уже fasm.pdf и не задавай глупых вопросов