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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 17:27   #1
Armind
 
Регистрация: 13.12.2010
Сообщений: 5
По умолчанию Ввод текста в консоли

Всем доброго времени суток.
Недавно начали в универе изучать ассемблер. Препод дал программу, которая вызывает окно консоли для ввода данных.
Вот код
Код:
.486
.model      flat,stdcall
includelib   L:\masm32\lib\kernel32.lib
include     L:\masm32\include\kernel32.inc
.data
sTitle  db      "Console App",0
sRead   db      128 dup('q')
n       dd      ?
hStdin  dd      ?
.code
start   proc    
        invoke  SetConsoleTitle, offset sTitle
        invoke  getstdhandle,-10
        mov     hstdin, eax
        invoke  readconsole, hstdin, offset sRead, 20, offset n, 0 
        invoke  sleep, 10000
        invoke  exitprocess,0
start   endp
end start
Но окно консоли не появляется. Подскажите пожалуйста в чем ошибка
Armind вне форума Ответить с цитированием
Старый 10.12.2011, 14:56   #2
zhan313
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Armind Посмотреть сообщение
Всем доброго времени суток.
Недавно начали в универе изучать ассемблер. Препод дал программу, которая вызывает окно консоли для ввода данных.
Вот код
Код:
.486
.model      flat,stdcall
includelib   L:\masm32\lib\kernel32.lib
include     L:\masm32\include\kernel32.inc
.data
sTitle  db      "Console App",0
sRead   db      128 dup('q')
n       dd      ?
hStdin  dd      ?
.code
start   proc    
        invoke  SetConsoleTitle, offset sTitle
        invoke  getstdhandle,-10
        mov     hstdin, eax
        invoke  readconsole, hstdin, offset sRead, 20, offset n, 0 
        invoke  sleep, 10000
        invoke  exitprocess,0
start   endp
end start
Но окно консоли не появляется. Подскажите пожалуйста в чем ошибка
invoke AllocConsole
и
invoke FreeConsole
zhan313 вне форума Ответить с цитированием
Старый 11.12.2011, 11:41   #3
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию

Вот код:
Код:
.486
.model flat,stdcall
option casemap: none
includelib   d:\masm32\lib\kernel32.lib
include     d:\masm32\include\kernel32.inc
.data
sTitle  db      "Console App",0
sRead   db      128 dup('q')
n       dd      ?
hStdin  dd      ?
.code
start   proc    
	invoke AllocConsole
        invoke  SetConsoleTitle, offset sTitle
        invoke  GetStdHandle,-10
        mov     hStdin, eax
        invoke  ReadConsole, hStdin, offset sRead, 20, offset n, 0 
        invoke  Sleep, 10000
        invoke  ExitProcess,0
start   endp
end start
То есть была добавлена одна функций AllocConsole.
P.S. Совет - соблюдай регистр символов. Путаницы меньше будет.
Ibanez Wizard вне форума Ответить с цитированием
Старый 11.12.2011, 12:06   #4
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

если скомпилировать программу как консольную (SUBSYSTEM:CONSOLE), то никакой AllocConsole не нужно
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет на ввод букв в консоли на C++ Артем Ковальчук Общие вопросы C/C++ 6 02.12.2014 21:57
Форматирование текста в консоли Alexsandr Общие вопросы C/C++ 0 07.12.2011 12:48
ввод данных из консоли.. ява Julila Помощь студентам 1 05.10.2011 21:05
Ввод строки из консоли matrasa Общие вопросы C/C++ 4 06.12.2010 12:21
Ввод и вывод русских букв в консоли sde C++ Builder 10 20.05.2010 03:02