2013-08-27 2 views
-1

Я новичок в программировании сборки, и у меня есть сборка (x86), которая принимает входные данные от пользователя. Консоль будет непрерывно (зациклена) попросить пользователя ввести другой символ, пока не будет нажата такая клавиша ввода. Когда нажимается клавиша «Ввод», консоль автоматически перестает запрашивать дополнительные входы.Как обрабатывать Введите событие keydown на языке ассемблера x86?

Как я мог это сделать? Это как-то связано с перерывами? Спасибо за совет ...

+0

Простой поиск Google дал несколько результатов. Один http://www.softwareforeducation.com/sms32v50/sms32v50_manual/150-05keyb-in.htm и лучше один: http://www.programmersheaven.com/mb/x86_asm/300660/300676/re-keyboard-input/ – icbytes

+0

Какая операционная система? – Michael

+0

Возможно, программное прерывание - это то, что вам нужно (инструкция 'int'). См. Ссылки @icbytes. Если вы выполняете поиск в Google на «клавиатурном вводе x86», вы получите несколько очень удачных обращений. – lurker

ответ

0

При работе без операционной системы или под MS-DOS, у вас есть две возможности:

Первый:

  • доступа клавиатуры (порты ввода/вывода) непосредственно (с помощью IN и OUT инструкции)
  • Вы должны поймать или отключить клавиатуру прерывают и потому, что в противном случае BIOS будет «красть» клавиатура просит

Второй:

  • Доступ к клавиатуре с использованием прерывания BIOS "INT 0x16"

При использовании современной операционной системы (Windows, Linux, ...) вы не можете получить прямой доступ клавиатура; Вы должны будете звонить операционной системы API функции - те же самые, что вы назвали бы при программировании в C:

// C example: 
getchar(); 

И:

# Assembler example (Windows: _getchar, Linux: getchar): 
call _getchar 
Смежные вопросы