Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2014, 19:40   #1
ДЕД_МАЗАЙ
Новичок
Джуниор
 
Аватар для ДЕД_МАЗАЙ
 
Регистрация: 21.11.2014
Сообщений: 3
По умолчанию Нет вывода строки на экран

Всем привет! Вот листинг программы,выводящую на экран строку.
Код:
     .386
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

.data
 stdout DWORD ?
 msg BYTE "ЭТО СТРОКА!",0dh,0ah
 cWritten DWORD ?

.code
 start:

   invoke GetStdHandle,STD_OUTPUT_HANDLE
   mov stdout,eax
   invoke WriteConsole,stdout,ADDR msg,sizeof msg,ADDR cWritten,NULL
   invoke ExitProcess,0

end start
Компилировалась MASM32.Все прошло нормально,но при запуске строка не выводится.OLLY показала,что процедура GetStdHandle не получает дескриптор и естественно ничего не происходит.Подскажите,пожалуйста,по чему так происходит.Всем спасибо.

Последний раз редактировалось Stilet; 22.11.2014 в 19:00.
ДЕД_МАЗАЙ вне форума Ответить с цитированием
Старый 22.11.2014, 12:13   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Скорей всего программа скомпилирована как GUI-приложение.
Есть 2 варианта:
1. Компилировать с ключом SYBSYSTEM:CONSOLE
2. Перед получением хендла консоли делать
Код:
invoke AllocConsole
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 22.11.2014, 17:55   #3
ДЕД_МАЗАЙ
Новичок
Джуниор
 
Аватар для ДЕД_МАЗАЙ
 
Регистрация: 21.11.2014
Сообщений: 3
По умолчанию

Спасибо,дружище,за помощь!Второй вариант сработал нормально.В первом варианте MASM стал непристойно выражаться:"/SUBSYSTEM:unrecognized option name;option ignored.Начались танцы с бубном и в итоге был переписан бантик build.bat с заменой строк /SUBSYSTEM:WINDOWS на /SUBSYSTEM/CONSOLE и случилось чудо.Все поперло!Еще раз спасибо!
ДЕД_МАЗАЙ вне форума Ответить с цитированием
Старый 23.11.2014, 11:09   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

ДЕД_МАЗАЙ,
если компиляция происходит через редактор кода пакета masm32, то достаточно выбрать Project -> Console Build All
Mikl___ вне форума Ответить с цитированием
Старый 23.11.2014, 19:58   #5
ДЕД_МАЗАЙ
Новичок
Джуниор
 
Аватар для ДЕД_МАЗАЙ
 
Регистрация: 21.11.2014
Сообщений: 3
По умолчанию

Привет,MIKL!Спасибо за совет.Все встало на свои места.
ДЕД_МАЗАЙ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
представление вывода на экран tutownik C# (си шарп) 3 24.03.2018 20:35
с++ рекурсивная функция вывода на экран строки в обратном порядке archil Помощь студентам 1 26.05.2014 15:10
Нет вывода=( _Sequence_ Общие вопросы C/C++ 1 18.03.2013 22:22
программа вывода на экран LiLiASAM Помощь студентам 10 29.12.2010 02:18
задержка вывода на экран kirosin PHP 8 01.06.2010 06:27