Вопрос № 179143: Здравствуйте, уважаемые эксперты! Моя третья ассемблерная программа (приложение). Ассемблер: NASM 2.03 ОС: Win32 (программа в приложении), Linux Что ожидалось: что программа выведет сообщение, подождёт, пока пользователь нажмёт какую-либо...
Вопрос № 179143:
Здравствуйте, уважаемые эксперты! Моя третья ассемблерная программа (приложение). Ассемблер: NASM 2.03 ОС: Win32 (программа в приложении), Linux Что ожидалось: что программа выведет сообщение, подождёт, пока пользователь нажмёт какую-либо клавишу, и лишь потом завершится. Что происходит: программа выводит сообщение и завершается, не ожидая нажатия на клавишу. Вопрос: Что не так и как поправить? Заранее спасибо.
Как
правильно указал в мини-форуме Airyashov, совершенно лишний ret, который и приводил к преждевременному выходу Допускаю, что простой ret при сборке при помощи gcc корректно завершает программу, но под Windows, мне кажется, необходимо все таки завершать ExitProcess-ом int 16h - так вообще некорректный (у нас 32-битные системы, а не 16-битный ДОС) Функция в masm-овской библиотеке называется __getch (с двумя подчеркиваниями) Сама пр
ограмма:
Код:
global _mainCRTStartup extern _printf extern __getch extern _ExitProcess@4
section .drectve info db '/defaultlib:user32.lib /defaultlib:msvcrt.lib /defaultlib:kernel32.lib'
section
.data message: db 'Нажмите любую клавишу...', 10d, 13d
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.