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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2010, 01:20   #1
JoulupukkiI
 
Регистрация: 16.01.2010
Сообщений: 6
Вопрос Паралельная обработка прерываний

Здравствуйте!
Я пишу 16 разрядное приложение под ДОС на чистом С с ассемблерными вставками. Делаю графический интерфейс. Ну кто-нибудь помнит, среда разработки Турбо-Си? Вот, по образу и подобию. Я подключил мышь с помощью прерываний 0х33. Но возникла проблема, мне нужны горячие клавиши, следовательно я должен обрабатывать прерывания и от клавиатуры, а как это сделать параллельно с мышью? Конечно я сделал по другому, опросом 62h,64h портов с помощью in, out. Но мне кажется это вандализм, имеется ли другой способ?
Имеется ещё вопрос.
Для создания графического интерфейса я пользуюсь библиотекой conio.h со всеми вытекающими функциями window и прочие. Сложилась такая ситуация, мне необходимо ввести строку(например путь файла). Я создаю окно в центре экрана с запросом и вызываю cgets(), в этой функции нет ограничения количества введённых символов, поэтому если пользователь введёт большее количество символов то он выйдет за пределы, созданного окна.
Существует ли функция с ограничением количества введенных символов?
Как это можно устранить?
JoulupukkiI вне форума Ответить с цитированием
Старый 19.01.2010, 00:11   #2
JoulupukkiI
 
Регистрация: 16.01.2010
Сообщений: 6
По умолчанию

Возможно, имеет смысл перенести тему в Assembler?
JoulupukkiI вне форума Ответить с цитированием
Старый 20.01.2010, 14:22   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

JoulupukkiI
Возможно, имеет смысл отказаться от написания 16-разрядного приложения под ДОС и начать писать 32-разрядные приложения под Windows?
Mikl___ вне форума Ответить с цитированием
Старый 21.01.2010, 10:24   #4
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Клавиатуру лучше обрабатывать прерыванием 16h
Вот к примеру ф-я, читающая состояние сдвиговых клавиш:
INT 16 - KEYBOARD I/O - GET SHIFT STATUS
AH = 2
AL = SHIFT STATUS BITS
0 = RIGHT SHIFT KEY DEPRESSED
1 = LEFT SHIFT KEY DEPRESSED
2 = CTRL DEPRESSED
3 = ALT DEPRESSED
4 = SCROLL LOCK ACTIVE
5 = NUM LOCK ACTIVE
6 = CAPS LOCK ACTIVE
7 = INSERT STATE ACTIVE

вместо cgets можно использовать cscanf:

cscanf("%20s",path);

ввод ограничивается 20 символами
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 21.01.2010, 11:38   #5
JoulupukkiI
 
Регистрация: 16.01.2010
Сообщений: 6
По умолчанию

Спасибо.
Я фанат scanf(), очень удобная функция, только я тормознул, пытался использовать чистый scanf и у меня не получалось, небыло эхо печати, т.е. не видно что я вводил. Теперь всё работает, спасибо.
//--------------
У меня задача написать 16-разрядное приложение. Не по теме хочу сказать.
Я считаю, что программирование под Windows это халтура, там вообще можно ничего своего не писать, всё и так уже написано в winAPI, только нужные функции вызывай. Многие такие программисты, которые рисуют окошки в билдере даже понятия не имеют как это всё работает, какие там структуры заполняются, какие функции используются, это не правильно.
JoulupukkiI вне форума Ответить с цитированием
Старый 21.01.2010, 12:04   #6
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

JoulupukkiI
Прежде чем словами кидаться -- возьми и напиши простейшее окно на ассемблере... Будут тебе и winAPI, только нужные функции вызывай, и структуры будешь сам заполнять... Можно подумать ты сам компилятор на С написал и на нем же делаешь свои приложения или свою любимую scanf разобрал до байтика...
Mikl___ вне форума Ответить с цитированием
Старый 21.01.2010, 13:38   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Я считаю, что программирование под Windows это халтура, там вообще можно ничего своего не писать, всё и так уже написано в winAPI, только нужные функции вызывай. Многие такие программисты, которые рисуют окошки в билдере даже понятия не имеют как это всё работает, какие там структуры заполняются, какие функции используются, это не правильно.
пробывал(хоть на С) чистое приложение на WinAPI написать?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.01.2010, 15:45   #8
JoulupukkiI
 
Регистрация: 16.01.2010
Сообщений: 6
По умолчанию

Уже офтоп.
Да, я писал чистые приложение для windows. Каюсь, я начинал с уроков Iczelion'а. Вы хотите меня убедить, что это очень трудно? Сколько бы я ни писал, 90% времени уменя уходит на google и msdn, это првильно?
JoulupukkiI вне форума Ответить с цитированием
Старый 21.01.2010, 16:02   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
90% времени уменя уходит на google и msdn, это првильно?
функции плоховато знаете
не в этом суть...да вам дают готовые контролы(BUTTON EDIT и тд)
но они даны для того чтоб был единый дизайн(хотя от него просто отречься)...свои классы писать уже не так просто...
да IDE по типу Делфи, C++ Builder...гораздо проще...накидал...и вот те компоненты...
но не забывай и об одной вещи, главное алгоритмы всетаки...если твоя прога работает хорошо, то придется ей пользоватся(я беру идеальную ситуацию что нет конкурентов)...а если работает криво но у нее шикарный дизайн...то кому она нужна?

ЗЫ: тем более самое важное...винда работает в защищенном режиме процессора...и мы находимся в 3 кольце...а система в 0...у нас просто нет прерываний....тем более у нас многозадачность(чего нет в досе)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.01.2010, 01:03   #10
Doholyan
Форумчанин
 
Регистрация: 26.04.2009
Сообщений: 270
По умолчанию

Пепел Феникса
ЗЫ: так может г-н JoulupukkiI напишит свою операционку переведет адреацию памяти с реального в защещенный, напишит свою дескрипторную таблицу....и, скоро на порге будет не Windos а, какая не будь другая система.....

Откровенно говоря мне тоже больше нравиться "копаться" внизком уровне...как Вы говорить в "0"
Doholyan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка прерываний Журенова Катя Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 11.05.2009 01:55
обработчик прерываний по таймеру Петруха Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 26.03.2009 20:57
Контроллер прерываний smileman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 16.11.2008 14:23
Список функций прерываний Arhe Помощь студентам 5 22.02.2008 01:05
Паралельная форма!!! metamfetamin Помощь студентам 3 19.12.2007 20:44