Простой вопросик с ReadConsoleA

Тема в разделе "WASM.BEGINNERS", создана пользователем Linkey, 4 янв 2010.

  1. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Здравствуйте, помощь нужна,

    WrittenCA proto :lol: WORD,:lol: WORD
    ReadingCA proto :lol: WORD,:lol: WORD

    .data
    mesaga byte "Enter: "
    ms byte 128 dup(?)
    .code
    start:

    push 7
    push offset mesaga
    call WrittenCA

    push 8
    push offset ms
    call ReadingCA

    push 8
    push offset ms
    call WrittenCA


    push 0
    call ExitProcess


    ReadingCA proc msg:lol: WORD, col:lol: WORD
    sub esp,8
    push -0ah
    call GetStdHandle
    mov [ebp-4],eax
    push 0
    push [ebp-8]
    push [ebp+12]
    push [ebp+8]
    push [ebp-4]
    call ReadConsoleA
    ret 8
    ReadingCA endp

    WrittenCA proc msg:lol: WORD, col:lol: WORD
    sub esp,8
    push -0bh
    call GetStdHandle
    mov [ebp-4],eax
    push 0
    push [ebp-8]
    push [ebp+12]
    push [ebp+8]
    push [ebp-4]
    call WriteConsoleA
    ret 8
    WrittenCA endp


    Делал по образцу из книги, вот эту процедуру WrittenCA.
    Хотел сделать еще и для ReadConsoleA вот только не получается.
    Данные ввожу, а в память не записывает(Просматривал с Olly). Можете объяснить и исправить, что не так?
    Спасибо!!!
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Linkey
    В обеих подпрограммах (ReadingCA и WrittenCA) есть ошибка.
    Четвертый параметр ReadConsoleA/WriteConsoleA должен быть адрес, по которому будет записано количество введенных/выведенных символов.
    Ты передаешь число, которое хранится по адресу push [ebp-8].
    Можно исправить так
    Код (Text):
    1. ...
    2. push 0
    3. lea eax,[ebp-8]
    4. push eax
    5. push [ebp+12]
    6. push [ebp+8]
    7. push [ebp-4]
    8. call ReadConsoleA
    9. ...
    10. push 0
    11. lea eax,[ebp-8]
    12. push eax
    13. push [ebp+12]
    14. push [ebp+8]
    15. push [ebp-4]
    16. call WriteConsoleA
    17. ...
     
  3. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Большое спасибо за помощь!