В общем мне нужно перехватить в DOS особую комбинацию клавиш, допустим Alt-Shift-F1. Собственно это не представляет особой проблемы, но когда я хочу вывести на экран результат(нажата клавиша или нет), выводится какой-то мусор. Хотелось бы узнать где я сделал ошибку, может я что-то напутал с сегментами, оформлением процедур или ещё что-то сделал не так. Код (Text): .model small .stack 100h .data lshift equ 00001010b rshift equ 00001001b f1_scan equ 2 sExit db "Press any key to continue...",'$' keys db "Alt, Shift and F1 pressed",0dh,0ah,'$' rights db "Right shift",0dh,0ah,'$' lefts db "Left shift",0dh,0ah,'$' nokeys db "Right combination havn't been pressed.",0dh,0ah,'$' ctls db 0 .code start: push @data pop ds mov ax,0 int 10h mov ah,0 int 16h mov bx,ax mov ah,22h int 16h mov ctls,ah call compare_proc exit: lea dx,sExit call print_proc mov ah,0 int 16h mov ax,4c00h int 21h print_proc proc mov ah,9 int 21h ret endp compare_proc proc Left: mov cl,ctls and cl,lshift cmp cl,lshift jne Right lea dx,lefts jmp F1_pressed Right: mov cl,ctls and cl,rshift cmp cl,rshift jne exit_proc lea dx,rights F1_pressed: ;cmp bh,f1_scan ;jne exit_proc ;lea dx,keys ;call print_proc exit_proc: ;lea dx,nokeys call print_proc ret endp end start