ASSEMBLER LINUX NASM Odczytanie klawisza

0

Witam. Od 4 dni uczę się asm jak i poznaje jądro Linux więc jestem dość zielony.

Mam problem z przerwaniami Linuxa. Nie mogę znaleźć przerwania które przypominało by biosowsie przerwania jak:

MOV AH,10H
INT 16H

Ów przerwanie zapisuje w rejestrze wciśnięty klawisz i dodatkowo nie wypisuje go.

Można prosić was o wskazanie przerwania (czy też zawołania) linuxowego które by przynajmniej zapisywało znak bez konieczności wciskania klawisza enter. Również podziękował bym za wskazanie gdzie szukać (za wskazania google kosa w żebra) i pod jakimi nazwami wyszukiwać bo z terminologią jest u mnie dość słabo.

2

http://sourceforge.net/p/hla-stdlib/mailman/hla-stdlib-talk/thread/[email protected]/

gdzieś w połowie...

jest to trudniejsze niż powinno.

3

W czystym asm to np tak jak mówi @Azarien, albo możesz troche zaczitować i użyć ncurses

section .text
; nasm -f elf main.asm -o main.o 
; gcc -o main main.o -lncurses
global main ; wymagane przez gcc.
extern getch
extern initscr
extern endwin
main:
	; ncurses stuff..
	call initscr
	call getch
	mov byte [key], al
	call endwin
	; wypisz `klawisz:`
	mov eax, 4
	mov ebx, 1
	mov ecx, s
	mov edx, sl
	int 0x80
	; klawisz
	mov eax, 4
	mov ebx, 1
	mov ecx, key
	mov edx, 1
	int 0x80
	; exit
	mov eax, 1
	mov ebx, 13
	int 0x80
section .data
key db 0
s db "Klawisz:",0x0
sl equ $ - s

// edit, może cie zastanawiać skąd klawisz bierze się w EAX, otóż wynika to z konwencji wywołania funkcji cdecl, poczytaj np tu

0

@Proxima, wielkie dzieki.
@Azarien, również dzięki lecz nie czuję się na siłach by skorzystać z twojej pomocy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1