|
|
|
Помогите_с_Ассемблером
|
|||
|---|---|---|---|
|
#18+
Всем привет:) Помогите пжста с задачей по ассемблеру, всё почти в задаче получилось, только работает коряво, т.к. я плохо ещё в этом "машинном" языке освоился и не знаю как удалить по нажатию клавиши буквы из строки. Вывожу я красными буквами произвольную строку, допустим слово "privet", через каждые пол-секунды, т.е. у меня получается privet privet privet и так далее, а как вот удалить при нажатии конкретной клавиши один символ из строки, чтобы получилось rivet rivet rivet, я не знаю, поэтому прошу вашей помощи. Для наглядности выкладываю код своей задачки: Код: 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. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2008, 17:38 |
|
||
|
Помогите_с_Ассемблером
|
|||
|---|---|---|---|
|
#18+
почитай в techhelp про порт [60H] , прямой обработчик клавиатуры. int 16 - говешка. Continue_Prog: ; Keyb: IN AX, 60h CMP AL, 01h JZ Exit CMP AL, 1Ch JZ Exit JMP Continue_Prog ;or goto Keyb Exit: MOV AX, 4C00h INT 21h ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2008, 21:08 |
|
||
|
Помогите_с_Ассемблером
|
|||
|---|---|---|---|
|
#18+
Что то всё равно ничего не получается...у кого нить есть хорошая ссылка на проверенные доки ассемблера, а то в инете смарю, одна бяка неполноценная. P.S. Ban Me , поясни пжста приведённый тобой скрипт и как он вяжется в моём случае...Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2008, 22:41 |
|
||
|
Помогите_с_Ассемблером
|
|||
|---|---|---|---|
|
#18+
автор;макрос консольной приостановки до нажатия клавиши ;после нажатия клавиши два байта поступают в регистр АХ; ;макрос может использоваться для очистки консольного буфера stop macro mov ah,0 int 16h endm замени в макросе обработку через 16ый int на обработку через опрос порта - и обрабатывай клавиши через него, задержек на опрос клавы не будет, делаешь цикл опроса с ответвлениями на действия и возврат обратно к опросу. Твою прогу распутаешь только от обработки клавиатуры. Вобще,прямо скажу, код не красавец. Заводи переменные - плин , ООП же проходили полюбому. Структурно мыслить учись. МАсм в последних версиях даж под дос, реально мощная система для написания нелинейных программ. Насчёт ресурсов - лезь на wasm.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2008, 23:39 |
|
||
|
Помогите_с_Ассемблером
|
|||
|---|---|---|---|
|
#18+
Ban Me , спасибо тебе, что помогаеж от души!:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2008, 13:59 |
|
||
|
Помогите_с_Ассемблером
|
|||
|---|---|---|---|
|
#18+
Vladaoу кого нить есть хорошая ссылка на проверенные доки ассемблера Ban Me уже ж написал - TechHelp - это самое то что тебе нужно. Была 4-я версия на русском, и более полная 6 - на английском По поводу того кода, что он написал - думаю тебе ещё рано с портами разбираться. Лучше всё-таки сначала с 16-м прерыванием разберись Ban MeНасчёт ресурсов - лезь на wasm.ru+1024 Лучше ресурса по асму нет По твоему вопросу: Если ты хочешь чтоб было так: privet, rivet, ivet... то нужно просто передавать адрес строки + смещение. mes + 1, mes +2 и т.д. ну и len соответственно уменьшать Если всё же нужно что было так: Сначала: privet После нажатия: rivet rivet ivet ivet То проще всего очищать строку, ну и выводить несколько раз с правильным смещением. Если же нужно удалять произвольные символы из строки, то нужно выводить посимвольно, а не построчно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2008, 15:54 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35046617&tid=1345581]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 328ms |

| 0 / 0 |
