powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / ввод с клавиатуры assembler
6 сообщений из 6, страница 1 из 1
ввод с клавиатуры assembler
    #38261092
apostoluga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть программа, которая из заданной строки удаляет заданный символ. Как сделать так, чтобы эта строка и символ вводились из клавиатуры? Заранее спасибо ..


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
...
Рейтинг: 0 / 0
ввод с клавиатуры assembler
    #38261175
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открой описание int 21h и найди там функцию ввода с клавиатуры.
...
Рейтинг: 0 / 0
ввод с клавиатуры assembler
    #38262864
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сегодня как-раз думал на тему похожего вопроса, набрёл на тему, и решил, что видимо судьба. Итак, новую тему создавать не буду...
Суть: как отловить нажатие клавиши в ассемблере в линуксе (точнее в консольном приложении линукса). Пробовал sys_calls (int 0x80 функция sys_read), но это не то, так как данная команда ждёт именно подтверждение ввода (энтер), а надо отловить любое нажатие. Пробовал в порт клавиатуры простучаться, а он ошибкой ругается, видимо как и в винде такие обращения запрещены.
Есть ли что-то несложно, без премудростей.

P.S. Сразу скажу, что не решаю реальную практическую задачу... Просто хочется знать :). Видел какие-то "простыни" кода, но думаю должен быть намного легче способ.
...
Рейтинг: 0 / 0
ввод с клавиатуры assembler
    #38262870
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрP.S. Сразу скажу, что не решаю реальную практическую задачу... Просто хочется знать :). Видел какие-то "простыни" кода, но думаю должен быть намного легче способ.Открываешь файл /dev/con на чтение и наслаждаешься.
...
Рейтинг: 0 / 0
ввод с клавиатуры assembler
    #38262900
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

Заранее благодарен :)
...
Рейтинг: 0 / 0
ввод с клавиатуры assembler
    #38262953
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если /dev/console заменить на /dev/tty или /dev/input - то нажатие клавиш воспринимается, но не так как хотелось, а так, как и при обычном sys_read со стандартного потока ввода (ведь по сути это оно и есть), то есть после энтера :(
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / ввод с клавиатуры assembler
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]