
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.05.2013, 21:48
|
|||
|---|---|---|---|
|
|||
ввод с клавиатуры assembler |
|||
|
#18+
Есть программа, которая из заданной строки удаляет заданный символ. Как сделать так, чтобы эта строка и символ вводились из клавиатуры? Заранее спасибо .. data segment string db 'CHTO TEBE NADO',0ah,'$' ; строка для обработки l dw $ - string data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax lea dx,string ;вывод на экран строки до обработки mov ah,9 int 21h mov dx,30h lea di,string mov cx,l n: cmp byte ptr [di],'T' ;собственно здесь указан искомый символ. jne nn ;если найден искомый символ то перезапишем строку, без этого символа. mov si,di inc si push di push cx inc cx m: mov al,byte ptr [si] mov byte ptr [di],al inc si inc di loop m pop cx pop di nn: inc di loop n lea dx,string ;вывод после обработки mov ah,9 int 21h mov ah,4ch int 21h code ends end start ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.05.2013, 00:21
|
|||
|---|---|---|---|
ввод с клавиатуры assembler |
|||
|
#18+
Открой описание int 21h и найди там функцию ввода с клавиатуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.05.2013, 23:15
|
|||
|---|---|---|---|
ввод с клавиатуры assembler |
|||
|
#18+
Сегодня как-раз думал на тему похожего вопроса, набрёл на тему, и решил, что видимо судьба. Итак, новую тему создавать не буду... Суть: как отловить нажатие клавиши в ассемблере в линуксе (точнее в консольном приложении линукса). Пробовал sys_calls (int 0x80 функция sys_read), но это не то, так как данная команда ждёт именно подтверждение ввода (энтер), а надо отловить любое нажатие. Пробовал в порт клавиатуры простучаться, а он ошибкой ругается, видимо как и в винде такие обращения запрещены. Есть ли что-то несложно, без премудростей. P.S. Сразу скажу, что не решаю реальную практическую задачу... Просто хочется знать :). Видел какие-то "простыни" кода, но думаю должен быть намного легче способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.05.2013, 23:20
|
|||
|---|---|---|---|
ввод с клавиатуры assembler |
|||
|
#18+
ПрограмёрP.S. Сразу скажу, что не решаю реальную практическую задачу... Просто хочется знать :). Видел какие-то "простыни" кода, но думаю должен быть намного легче способ.Открываешь файл /dev/con на чтение и наслаждаешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.05.2013, 23:56
|
|||
|---|---|---|---|
ввод с клавиатуры assembler |
|||
|
#18+
White Owl, Где-то недопонял. подскажите? :) SECTION .data console: db '/dev/console' sym: db 0 sym_count: db 0 SECTION .text global _start _start: ;открываю на чтение /dev/console mov eax, 5 mov ebx, console mov ecx, 0 int 0x80 ;если ошибка - тогда перепрыгиваю "к выходу" cmp eax, -4096 je cikl_out cikl: ;читаю байт, там ведь больше быть не может? mov byte [sym], 0 mov ebx, eax mov eax, 3 mov ecx, sym mov edx, sym_count int 0x80 ;проверяю не равен ли нулю считанный символ ;если не равен - выхожу из цикла test byte [sym], 0xFF jnz cikl_out jmp cikl ; безусловный цикл (пока не будет нажата клавиша) cikl_out: ;закрываю файл mov eax, 6 int 0x80 ;выхожу с программы mov eax, 1 mov ebx, 0 int 0x80 Заранее благодарен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.05.2013, 00:58
|
|||
|---|---|---|---|
ввод с клавиатуры assembler |
|||
|
#18+
если /dev/console заменить на /dev/tty или /dev/input - то нажатие клавиш воспринимается, но не так как хотелось, а так, как и при обычном sys_read со стандартного потока ввода (ведь по сути это оно и есть), то есть после энтера :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&tablet=1&tid=1341803]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 416ms |

| 0 / 0 |
