откуда табуляция взялась в консоле?

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

  1. RuAsm

    RuAsm Виктор

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

    out_text db 'text1',13,10,'text2',13,10,'text3',13,10,0

    выводится 4ре пробела, потом text1, а все остальное выводится как положенно, почему так?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    а сорсик не покажете?
     
  3. RuAsm

    RuAsm Виктор

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

    section '.data' data readable writeable
    std_in_text dd ?
    std_out dd ?
    post_data dd ?

    out_text db 'text1',13,10,'text2',13,10,'text3',13,10,0

    section '.code' code readable executable
    start:

    invoke GetStdHandle, STD_INPUT_HANDLE
    invoke ReadConsole, eax, std_in_text , 2, 0, 0

    invoke GetStdHandle, STD_OUTPUT_HANDLE
    mov [std_out], eax
    invoke WriteConsole, eax, post_data, 25, 0, 0

    invoke Sleep, 50000
    invoke ExitProcess, 0

    section '.idata' import data readable writeable

    library kernel32, 'KERNEL32.DLL'
    include 'c:\fasmw\include\api\kernel32.inc'
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    RuAsm
    post_data должен указывать на твой буфер...
     
  5. RuAsm

    RuAsm Виктор

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

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    RuAsm
    invoke WriteConsole, eax, post_data, 25, 0, 0
    А почему post_data, а не offset out_text?
    Ведь ты же как я понял out_text хотел выводить.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    господи, ЭТО как-то работает? Оо....
    мда..

    ReadConsole и WriteConsole надо передать адрес буферов. А ты передаешь адреса каких-то DWORD'ов.. бред полный.

    Правильно так:

    Код (Text):
    1. include 'win32ax.inc'
    2.  
    3. .data
    4. outbuff db 'Hello, World!', 0
    5. outlen dd $-outbuff
    6.  
    7. .code
    8.  
    9. start:
    10.  
    11. ...
    12.         invoke    GetStdHandle, STD_OUTPUT_HANDLE
    13.         invoke    WriteConsole, eax, outbuff, [outlen], 0, 0
    14.  
    15.         invoke    ExitProcess, 0
    16. .end start
     
  8. RuAsm

    RuAsm Виктор

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

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ты неправильные параметры передаешь WriteConsole. при чем тут каркас
     
  10. RuAsm

    RuAsm Виктор

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

    RuAsm Виктор

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

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    потому что в fasm нет оператора offset
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    RuAsm
    Ну вообще по идее ADDR с инвоками использовать надо, но offset по идее тоже должен работать. А что за ошибка?
     
  14. RuAsm

    RuAsm Виктор

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

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ё моё хоть сказал бы какой компилятор используешь -), а то я сразу и не приметил что fasm.
     
  16. RuAsm

    RuAsm Виктор

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

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Зачем? Просто название переменной - адрес. В скобках - значение.
     
  18. RuAsm

    RuAsm Виктор

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

    wasm_test wasm test user

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

    addr equ
    offset equ
     
  20. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Great
    А как быть с кодом на масме, где квадратные скобки - очень большая редкость? :)