|
|
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
Может у ког ониб есть пример как вывести скан код клавиши на assemblere.А то горю с курсовым просто конкретно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2006, 21:27 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
The_answerМожет у ког ониб есть пример как вывести скан код клавиши на assemblere.А то горю с курсовым просто конкретно Резидент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2006, 23:13 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
НУ просто я нажимаю любую клавишу, а на экране появляется ее скан-код. Наверное нужно использовать 21 прерывание , но как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2006, 23:30 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
Вот, наклепал, сложного ничего нет. Результат печатается в виде 16 разрядного числа. Младший байт соответствуют скан-коду клавиши, старший - расширенному скан-коду. Т.е., например 1C0D - соответствует клавише Enter (скан-код = 13 (0D)). Однако, ряд клавиш, которым не назначены отображаемые символы (F1 ... F12, Home, End и т.п.) не имеют скан-кода и при нажатии в буфер засылается расширенный скан-код (обычный скан-код равен 0, => младший байт равен 0). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. P.S. Эх... Если б я так курсовые писал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2006, 23:58 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
The_answerНУ просто я нажимаю любую клавишу, а на экране появляется ее скан-код. Наверное нужно использовать 21 прерывание , но как?21-ое? Ну разве что для вывода на экран. Просто читай байт из 60h порта, приводи прочитаный байт в текстовый вид и выводи на экран. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 18:51 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
White Owl The_answerНУ просто я нажимаю любую клавишу, а на экране появляется ее скан-код. Наверное нужно использовать 21 прерывание , но как?21-ое? Ну разве что для вывода на экран. Просто читай байт из 60h порта, приводи прочитаный байт в текстовый вид и выводи на экран. int 21h - вызов DOS. Для вывода на экран имеется функция 09h и с работой клавиатуры (а тем более с выводом на экран) прерывание не имеет ничего общего. С помощью 21-го прерывания и соответствующей функции считывания скен-кода из буфера ввода, также можно легко решить эту задачу. Чтение из порта - тоже вариант, однако имеет и недостаток и преимущество. Недостаток - более сложная организация программы. Необходим цикл, в котором нужно будет читать значение из порта и заботится о том, чтобы это значение не считать по новой при следующей итерации. Уж пускай BIOS об этом заботится. Преимущество - выше скорость. Как правило, чтение из порта удобно применять в обработчике прерываний от клавиатуры (а прерывание, кстати, генерируется как при нажатии, так и при отпускании клавиши). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 19:06 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarovint 21h - вызов DOS. Для вывода на экран имеется функция 09h и с работой клавиатуры (а тем более с выводом на экран) прерывание не имеет ничего общего. С помощью 21-го прерывания и соответствующей функции считывания скен-кода из буфера ввода, также можно легко решить эту задачу.ээээ... я не понял, ты с чем споришь? :) Ruslan.IsbarovЧтение из порта - тоже вариант, однако имеет и недостаток и преимущество. Недостаток - более сложная организация программы. Необходим цикл, в котором нужно будет читать значение из порта и заботится о том, чтобы это значение не считать по новой при следующей итерации. Уж пускай BIOS об этом заботится. Преимущество - выше скорость. Ну не так уж это и сложно. А в плюсах, самый главный, полный контроль всех клавиш, а не только тех которые имеют ASCII эквивалент :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 19:29 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
White Owl21-ое? Ну разве что для вывода на экран. Вот с этим и спорю. легко решить эту же задачу с помощью 21-го прерывания. White OwlА в плюсах, самый главный, полный контроль всех клавиш, а не только тех которые имеют ASCII эквивалент Не читаешь предыдущие посты. Про клавиши, не имеющие ASCII эквивалента я писал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 19:33 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarov White Owl21-ое? Ну разве что для вывода на экран. Вот с этим и спорю. легко решить эту же задачу с помощью 21-го прерывания.Легко, но только в области ASCII клавиш. Большинство расширеных оно уже не возмет. Ruslan.Isbarov White OwlА в плюсах, самый главный, полный контроль всех клавиш, а не только тех которые имеют ASCII эквивалент Не читаешь предыдущие посты. Про клавиши, не имеющие ASCII эквивалента я писал выше.Это про Int 16h? Неее... оно как раз расширеные клавиши отбрасывает на старых БИОСах и показывает на новых. А работа со смещенными-расширеными вообще зависит от версии БИОСа. В общем использовать это можно на одной машине и нельзя на другой. Из порта читать проще - там идут унифицированые данные напрямую с клавиатуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 19:50 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
White Owlоно как раз расширеные клавиши отбрасывает на старых БИОСах и показывает на новых На старых - это каких? Есть пример времен 80286. Работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 19:57 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
p.s. точнее работал в те времена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 20:04 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
ладно, не будем спорить, думаю имеют место оба способа. Пускай автор выбирает на свое усмотрение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 20:27 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
Ребята, выручили офигено, спасибо огромное. Просто взял выше приведенный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2006, 22:56 |
|
||
|
ЗАдача с скан кодами
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarov White Owlоно как раз расширеные клавиши отбрасывает на старых БИОСах и показывает на новыхНа старых - это каких? Есть пример времен 80286. Работаетээээ.... хм.... Да, действительно... Чувствую себя недовымершим динозавром :) Тех компов на которых приведеный пример не заработает уже пожалуй и не осталось. Впрочем, в институтах еще возможно есть где-нибудь первые XT-шки :) С другой стороны, на современном компе уже никто кроме студентов на ассемблере и не пишет а работать с портами для них все равно полезней чем учить прерывания BIOS'а. Порты и на других платформах есть, а биосы там собственные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2006, 00:06 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=170&tid=1346372]: |
0ms |
get settings: |
13ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
71ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 435ms |

| 0 / 0 |
