Страница 1 из 1

Расширенные коды клавиш (ALT, CTRL)

Добавлено: 10 май 2006, 16:16
XGarik
Помогите решить маленькую проблемку.
Есть код:

Код: Выделить всё

	.model small
	.stack 100h
	.386
	.data
mes1	db	'ALT-1 PRESSED'
len1	equ	$-mes1
sim	db	97	;ASCII a

clrscr	macro
	mov	ah, 0
	mov	al, 3
	int	10h
endm

delay 	macro   time
	local	inner,outer
	mov	cx,time
outer:	push	cx
	mov	cx,0
inner:	loop	inner
	pop	cx
	loop	outer
endm

outmes1	macro	mes,len
	mov	ah, 40h
	mov	bx, 1
	mov	cx, len
	mov	dx, offset mes
	int	21h
endm

outchar	macro c
	mov	ah, 2
	mov	dl, c
	int	21h
endm

	.code
	

begin:

	mov 		ax,@data		
	mov 		ds,ax

	clrscr

beg:
	delay		2000

	mov		ah,1	;Асинхронный режим
	int		16h
	jz		nenagato
	mov     	ah,0
	int     	16h
	cmp     	ah,01h ;ESC
	je		exit
	cmp		ah,3bh ;F1
	je		atl1
	cmp		ah,48h ;UP
	je		up

	jmp		nenagato

up:
	inc		sim

nenagato:
	outchar	sim
	jmp		beg
atl1:
	outmes1	mes1,len1
	jmp		beg

	
exit:
	mov	ah,4ch
	int 21h

end begin
Суть вопроса в строчках:

Код: Выделить всё

	cmp     	ah,01h ;ESC
	je		exit
	cmp		ah,3bh ;F1
	je		atl1
Так вот, как заменить ESC на CTRL+Z, а F1 на ALT+1.... Просто никогда не приходилось такое делать, все коды были одиночные...

Добавлено: 10 май 2006, 22:29
XGarik
сделал сам, через прерывание 21h

Код: Выделить всё

mov		AH, 06h	;нoмep функции DOS
mov		DL, 0FFH	;зaпpoc ввoдa c клaвиaтуpы
int		21H    
jz		nenagato
cmp		al, 1Ah	;CTRL+Z
je		exit
cmp     	al, 78h	;ALT+1 
je		alt1
cmp		al, 48h	;UP
je		up
jmp		nenagato
Тема закрыта!