Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361

Реализовать прерывание через порты ввода-вывода

30.10.2012, 13:02. Показов 1984. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция задержки пока не будет считана клавиша в ax задержка будет продолжатся.
Assembler
1
2
mov ah,10h
int 16h
Можно ли это как-то реализовать через порты ввода-вывода? Или через что-то еще? У меня дело в том что, идет защищенный режим и поэтому не могу применять прерывания.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2012, 13:02
Ответы с готовыми решениями:

Порты ввода/вывода
Какой номер порта отвечает за контроллер HDD/SSD(SATA). Через какие порты с помощью команды in можно получить информацию о подключенных...

Передача данных через порты ввода вывода
Возникла такая задача, передать информацию от одного МК к другому, причем для передачи информации доступны только порты вода вывода....

Порты ввода/вывода
У меня вопрос:)Бывает два варианта ввода/вывода - через память и в изолированном пространстве, с первым все понятно - порты ввода/вывода...

1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
30.10.2012, 13:25
ElvenDragon,
если процессор старше intel 386 — для организации задержки используй команду rdtsc. Если нужно чтение клавиатуры на уровне портов, то вот фрагмент обработчика прерывания INT 9. Это прерывание вызывается всякий раз при нажатии любой клавиши на клавиатуре. Обработчик этого прерывания должен прочитать скан-код клавиши, подтвердить микропроцессору клавиатуры факт приема скан-кода, преобразовать этот код в соответствии с клавишами-переключателями и поместить преобразованный код в буфер клавиатуры, находящийся в области BIOS. Действия чтения и подтверждения приема скан-кода могут выглядеть, к примеру, так:
Assembler
1
2
3
4
5
6
7
IN AL,60h ;читаем скан-код в порт 60h
PUSH AX ;сохраним его на время
IN AL,61h ;читаем порт 61h
OR AL,80h ;старший бит байта из порта 61h в 1
OUT 61h,AL ;подтверждаем факт приема скан-кода
POP AX
OUT 61h,AL ;восстановили байт в порту 61h
Можно напрямую читать кольцевой буфер клавиатуры. С адреса 400h начинается область памяти, используемая программами BIOS для хранения данных, в том числе для буфера клавиатуры. Буфер начинается с адреса 41Eh и заканчивается адресом 43Dh. Все 32 адреса сгруппированы попарно — один байт для хранения ASCII-кода, выработанного программой INT 09h, а второй — для хранения скан-кода. Смещения первого и последнего байтов буфера указывают на положение самого буфера относительно адреса 400h. Эти смещения хранятся в двух последовательных словах по адресам 480h и 482h. Два дополнительных указателя «голова» и «хвост» используются для отслеживания содержимого буфера. Эти указатели находятся в области данных BIOS, их адреса — 0040:001Ah и 0040:001Ch. «Голова» и «хвост» указывают на позицию справа от возврата каретки (0FFFFh для 101-клавишной клавиатуры). «Хвост» указывает на ту позицию, в которую будут занесены данные о следующем нажатии на клавишу, «голова» указывает на первый введенный символ (логическое начало буфера). Если «голова» равна «хвосту», то INT 09h и INT 16h считают, что буфер пуст.
Assembler
1
2
3
4
5
6
push 0
pop ds
mov al,ds:[41Ah]
mov ah,ds:[41Ch]
cmp ah,al
jne exit
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2012, 13:25
Помогаю со студенческими работами здесь

Порты ввода /вывода
Вопрос такой. Есть устройство. Обращение к нему идет через порты ввода вывода. На днях видел схожий класс устройств, но работа идет не...

AVR Порты ввода/вывода
Кнопка1: Мигание диодов 4/4. Кнопка2: Гаснут все диоды. Кнопка3: Бег в одну сторону. Кнопка4: Бег в другую сторону. #include...

ATtiny2313: порты ввода-вывода
Всем привет! Помогите, пожалуйста, с таким заданием. К порту D микроконтроллера подключены кнопки (7 шт). Нажатие кнопки должно...

GSM модуль SIM900, порты ввода-вывода.
Доброго времени суток. Хочу сделать один девайс с использованием GSM модуля SIM900. Полез искать инфу и нашел, что у него есть GPIO. А...

Реализовать программу файлового ввода-вывода на примере программы A+B.
Привет Форумчанам! возник такой вопрос, пытаюсь реализовать программу файлового ввода-вывода на примере программы A+B. Скажите, почему в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru