call ExitProcess выдаёт ошибку

Тема в разделе "WASM.BEGINNERS", создана пользователем RuAsm, 21 мар 2007.

  1. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    подключаю строчку
    include 'c:\fasmw\include\api\kernel32.inc'

    в ide вываливается вес кернел, и выдаёт ошибку, как это исправить?

    вот код еслу кому пригодится
    format PE console
    entry start
    ;include 'c:\fasmw\include\api\kernel32.inc'
    include 'c:\fasmw\include\macro\import32.inc'

    section '.data' data readable writeable
    h4 db 'баа..)'


    section '.code' code readable executable
    start:
    push 0
    call ExitProcess
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    это - не в beginners, это - в избранное
     
  3. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    блин.. ну как подключить? как правильно подключить?
     
  4. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    а фасл не поддерживает инструкцию call?
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    RuAsm
    Марш читать доки по фасму. И про отсутствие русских док даже не заикайтесь - они есть, причём, на этом сайте.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Код (Text):
    1. call dword [ExitProcess]
    вместо
    Код (Text):
    1. call ExitProcess
     
  7. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    ура)
    format PE console
    entry start
    include 'c:\fasmw\include\WIN32A.inc'

    section '.code' code readable executable
    start:
    invoke ExitProcess, 0


    section '.idata' import data readable writeable

    library kernel32, 'KERNEL32.DLL'

    include 'c:\fasmw\include\api\kernel32.inc'

    работает) правда не все ясно.. call не вызывает макросы, а можно сделать так чтобы вызывать api инструкцией call ?
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Я написал выше.

    Код (Text):
    1. invoke ExitProcess, 0
    превращается при препроцессировании в
    Код (Text):
    1. push 0
    2. call dword [ExitProcess]
    Учись юзать отладчик.
    Почему надо использовать косвенную адресацию [] - так устроена таблица импорта PE файла
     
  9. RuAsm

    RuAsm Виктор

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    125
    Адрес:
    Спасск-D, Приморский край!
    Great тебе как всегда респект!

    [это изъятия адреса] знаю, а вот dword для чего не знаю, разьясни пожалуйста
     
  10. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Лольная темка :)
    дворд не обязательно писать в данном случае, это Great для наглядности так написал ;)
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Нда, товарищ и не подумал что-то почитать..
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    размер адреса в защищенном режиме, если в дескрипторе сегмента CS стоит бит D, равен 32 бита, или 4 байта или один DWORD.