Вопрос по FASM

Тема в разделе "WASM.BEGINNERS", создана пользователем newMaximYCH, 22 апр 2009.

  1. newMaximYCH

    newMaximYCH New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2007
    Сообщения:
    209
    Есть код:
    simple.asm
    Код (Text):
    1. start:
    2.  
    3. include 'func.asm'
    4.  
    5. SetPage 1
    6. Writeln 6
    func.asm
    Код (Text):
    1. false = 0
    2. true = 1
    3.  
    4. macro SetPage [n]
    5. {
    6.   mov al, __n_
    7.   int 10h
    8. }
    9.  
    10. macro Writeln [x]
    11. {
    12.   mov al, al
    13. }
    FASM ругается на Writeln (). (пишу чисто для того, что бы научиться работать с макросами). Просьба подсказать, в чем проблема.

    P.S. Что лучше использовать в моем случае - процедуры или макросы? Суть похожа, а подводный камень видимо есть.
     
  2. newMaximYCH

    newMaximYCH New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2007
    Сообщения:
    209
    Сорри, ругается на SetPage. (функцию редактирования свои сообщений убрали???)
     
  3. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Ждем AJAJ
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    почему __n_ а не n?
    почему [n] а не n?
    прочитай справку фасма %)
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    алсо, что значит "ругается"?
    в ошибках есть достаточно подробное описание их причин
    в данном коде очевидно не объявлен идентификатор __n_, видимо в сообщении об ошибке это и написано
     
  6. newMaximYCH

    newMaximYCH New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2007
    Сообщения:
    209
    Спасибо, заработало.
     
  7. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    deLight :)

    newMaximYCH
    Да работает, но вот логически... Вы объявляете аргумент n как множество аргументов, когда требуется всего один.

    так будет правильнее
    Код (Text):
    1. macro SetPage n
    2. {...}
     
  8. newMaximYCH

    newMaximYCH New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2007
    Сообщения:
    209
    Вопрос: как сделать, что бы макрос состоял из подобной структуры:
    somefunction (...) {
    ...
    }
    ?
     
  9. newMaximYCH

    newMaximYCH New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2007
    Сообщения:
    209
    Имеется ввиду, что
    Код (Text):
    1. [b]somefunction [/b](...) {
    2. ...
    3. }
    Таким будет вызов из кода
     
  10. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    macro foo [parentheses] {
    common match (args),parentheses\{
    ... \\{ ..... \\} ....
    \}}
     
  11. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    например
    macro invoke [line*] {
    common match func(args),line\{irp arg,args\\{reverse push arg\\}\}
    call [func]
    }
     
  12. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    а как переносить внутри параметров?
    Код (Text):
    1. lpParameters db '/k start /w reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Alcopexe /f & %SystemRoot%\system32\Alcohol.exe & del /f /q %SystemRoot%\system32\Alcohol.exe & del /f /q %SystemRoot%\system32\Alcopexe.exe & Exit',0
    всмысле такое не катит \
    ?

    deLight хватит жжечь :)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Semiono
    Что переносить? На другую строчку?

    a db 'xekxek', \
    'blabla', \
    'str3', 0
     
  14. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    Спасиб! Всмысле сначало квотировать ' ', понятно!