Почему вылетает программа?

Написал простую программу, которая висит, ожидая нажатие клавиши, но она не висит, а вылетает

format PE console

entry start

include 'win32a.inc'

section '.code' code readable executable
        start:
                push str1
                call [printf]

                mov ah, 7
                int 21h

                push str2
                call [printf]

                call [getch]

                push NULL
                call [Exit]

section '.data' data readable writable
        str1 db 'Pass', 0
        str2 db 'Out', 0

        NULL = 0


section '.idata' import data readable writable
        library kernel, 'kernel32.dll',\
                msvcrt, 'msvcrt.dll'

        import kernel,\
               Exit, 'ExitProcess'

        import msvcrt,\
               getch, '_getch',\
               printf, 'printf'
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Написал простую программу, которая висит, ожидая нажатие клавиши, но она не висит, а вылетает

format PE console
…
                push str1
                call [printf]

                mov ah, 7
                int 21h

интересная попытка, но почему печать -- вызовом функции, а ввод символа -- вызовом досовского прерывания,
если для печати тоже есть досовское прерывание?
Если серьёзно, нельзя вызывать досовские прерывания из приложения win32. Ищи подходящую функцию win32 API.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы