18.06.2018, 09:04 [+3 UTC]
в нашей команде: 2 848 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
18.06.2018, 08:55

Последний вопрос:
17.06.2018, 23:52

Последний ответ:
18.06.2018, 07:35

Последняя рассылка:
17.06.2018, 11:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.08.2016, 07:45 »
Telemetrist
Спасибо за подробный и содержательный ответ, он действительно помог мне найти неисправность. Проблема и правда оказалась в цепи ОС, пробило конденсатор С15 который я совсем недавно заменил в блоке регулировок. [вопрос № 189663, ответ № 273992]
16.01.2016, 21:22 »
galet06
Спасибо, узнала кое-что новое, из ГК РФ особенно. Меня удивляет, что все цитируют Постановление №745. А я высмотрела в ЗОЗПППравилах торговли кону о Защите прав потребителей, в котором четко сказано, что цена товара и полная стоимость являются обязательными в информации о товаре. [вопрос № 188646, ответ № 273232]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 275
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 0
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 64791
Раздел: • Assembler
Автор вопроса: Logoff_
Отправлена: 29.11.2006, 18:13
Поступило ответов: 1

Уважаемые эксперты у меня такая проблема:
Требуется написать резидент который бы через определенный промежуток времени блокировал работу до указания пароля. У меня все готово только когда я пытаюсь вводить пароль (через 0ah) в обработчике 1ch или что-то считывать с клавиатуры компьютер просто напросто зависает. Немного поискав информацию, я увидел следующее:
"Поскольку программа INT 1cH выполняется во время низкоуровневого аппаратного прерывания, вы должны помнить, что система еще не сбросила контроллер прерываний и потому другие аппаратные прерывания, в том числе прерывание от клавиатуры, не будут происходить при работе INT 1cH (т.е. вы не получите ввода пользователя)"
Вопрос: Как же это преодолеть?
PS: Стек точно уравнен, и прерывания нигде не запрещаются

Состояние: Консультация закрыта

Ответ # 129366 от IceWolf

Здравствуйте, Logoff_!
Могу предложить следующее:
1)Использовать вместо 1Ch прерывание 8 :см. справочник helpassm(TECH help) http://www.kalashnikoff.ru/Assembler/prog/helpassm.exe
2)Раз нельзя работать с превываниями, сделаем вот что: После вызова 1Ch в стеке лежит адрес возврата(CS и IP и ещё flags register). Сохраняем его в памяти, подменяем на адрес своего кода(выполняется не в обработке 1Ch). Теперь после iret из 1Ch попадаем в наш код(вместо программы где произошло прерывание), делаем свои чёрные дела, восстанавливаем флаги, регистры и делаем jmp на ранее сохранённый адрес. Всё, вернулись в программу. Код, про который я сказал, можно поместить в том же обработчике 1Ch после iret.
Идею я изложил, надеюсь теперь справитесь.
С уважением, IceW0|f.

Приложение:


Консультировал: IceWolf
Дата отправки: 30.11.2006, 23:31

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 64791

Посетитель

ID: 388

# 1

= общий = | 30.11.2006, 00:41 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Вешаешь дополнительный обработчик на 28h прерывание. В 1сh ставишь флаг. В 28h проверяешь флаг. Если стоит, сбрасываешь флаг, и запрашиваешь пароль.


Посетитель

ID: 27363

# 2

= общий = | 30.11.2006, 18:56 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Спасибо, попробую.


Посетитель

ID: 27363

# 3

= общий = | 02.12.2006, 16:08 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

2Стас Извините, я могу ошибаться но насколько мне известно int 28h вызывается когда ДОС ничего не делает, точнее ждет вода пользователя. Внутри него нельзя использовать функции до 0сН включительно. Я не понимаю как мне запрашивать пароль. Прямым считыванием с буфера клавиатуры? мне не удалось это реализовать... Не могли бы Вы подробнее объяснить. Заранее спасибо


Посетитель

ID: 27363

# 4

= общий = | 02.12.2006, 16:41 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

2IceWolf Спасибо за совет. Но почему-то у меня не выходит это сделать.. Вот код обработчика int 1ch: Int_1Ch_proc proc pop _ip push _ip ;pop _cs ;pop _fl ;push _fl ;push _cs pushf call cs:[int_1ch_vect] finit fstcw Dat or Dat,0c00h fldcw Dat fld num1 fild result fmul frndint FILD count fcom fstsw ax sahf jz CheckPass mov ax,count inc ax mov Count,ax jmp @exit1c CheckPass: pop _tmp mov ax, offset @x push ax @exit1c: iret @x: mov ah,2 mov dl,'#' int 21h jmp cs:[_ip] Int_1Ch_vect dd ? count dw 0 num1 dd 18.2 Dat dw ? result dw ? _fl dw ? _cs dw ? _ip dw ? _tmp dw ? Int_1Ch_proc endp Код после метки @x почему-то не выполняется... при попытке заставить эту процедуру обрабатывать 08h при первом прохождении в некоторых местах экрана появляются разноцветные квадратики... Помогите пожалуйста разобраться.


Посетитель

ID: 388

# 5

= общий = | 04.12.2006, 00:48 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Клавиатурное прерывание int10h

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15124 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018