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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 21:18   #1
Я_и
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 37
По умолчанию Делфи и ассемблер. Не работают прерывания типа Int

Доброго дня суток! Мне нужно совместить API функции с прерываниями контроллера клавиатуры в одной программе, но вот незадача: ни Int, ни Out не работает

Код подключения у меня примерно такой (для примера):

procedure Proc1();
asm
mov Ax,4C00h
int 21h
end;


На строчке Int21h выдает ошибку EAccessViolation Read on address FFFFFFFF.
Подскажите, что не так в даном использовании прерываний в Delphi? Спасибо

Последний раз редактировалось Я_и; 10.12.2010 в 21:20.
Я_и вне форума
Старый 10.12.2010, 21:25   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Я может чего то путаю, но разве прерывания работают/разрешены вне ring0 в Windows?
BOBAH13 вне форума
Старый 10.12.2010, 22:12   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нет не работают, роль прерываний вообще другая в защищенном режиме.
первые 32 это исключения, а дальше ОС решает как их применять.
пишите под ДОС тогда.
(порты тоже запрещены)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 11.12.2010, 06:46   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

С чего вы взяли, что они будут работать?

Книжку для начала в руки возьмите. А лучше не одну. Вроде Рихтера и Руссиновича.

А если вы расскажете, что сделать хотите, вам подскажут способ.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума
Старый 11.12.2010, 09:21   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Я_и
Если хочешь работать с прерываниями, возьми Турбо Паскаль. Его еще можно настрополить на прерывания (правда на их эмуляцию, но все же)
I'm learning to live...
Stilet вне форума
Старый 11.12.2010, 12:31   #6
Я_и
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 37
По умолчанию

Мда(( Печально(( Мне просто нужно работать с таблицей векторов прерываний... И очень было бы неплохо подключить к программе библиотеку классов Delphi (как мед, так и ложкой).
Может лучше создать два приложения (на ассемблере и на делфи)?
Я_и вне форума
Старый 11.12.2010, 12:54   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Может лучше создать два приложения (на ассемблере и на делфи)?
Может. Пиши службу, или драйвер. И его функционал используй в программе на Делфи.
I'm learning to live...
Stilet вне форума
Старый 11.12.2010, 13:00   #8
Я_и
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 37
Радость

Спасибо) Может и правда проще драйвер написать)

Тема закрыта!

Последний раз редактировалось Я_и; 11.12.2010 в 13:06.
Я_и вне форума
Старый 11.12.2010, 13:13   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Мне просто нужно работать с таблицей векторов прерываний...
IDT или та которая по адресу 0000:0000?
(я просто хочу быть уверенным что вы знаете что делаете)

21h прерывание...хм, а вы уверены что оно будет именно тем что вам надо?
я так не думаю, ибо это прерывание DOS, в винде оно не имеет того же смысла.

вам судя по всему под ДОС писать надо.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функциями(передача масива в функцию типа int) sekator Общие вопросы C/C++ 4 27.07.2010 22:13
Преобразования типа LPCSTR -> int без потери данных coNsept Общие вопросы C/C++ 2 20.05.2010 20:49
Ассемблер в делфи danekne Помощь студентам 1 24.11.2009 13:48
Конвертация типа string в int Mixasik Общие вопросы C/C++ 10 25.04.2009 02:58