bomzzz
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору никто не знает такую вешь. делаю программку 16 бит дос для перехвата нажатия клавиш. при нажатии клавиши F1 скажем должна выполниться команда DIR. Цитата: push ax ;надо сохранять все используемые регистры (для начала только ax) in al, 60h ;прочитаем код из клавиатуры cmp al, 3bh ;F1 ? jne to_old_09 ;если не F1, то на старый вектор .............................. mov cx, 'D' int 16h cmp al, 0 jne to_iret mov ah, 5 mov cx, 'I' int 16h cmp al, 0 jne to_iret mov ah, 5 mov cx, 'R' int 16h mov ah, 5 ; ENTER mov cx, 0Dh int 16h | под мс досом и фридосом всегда получается так (под4досом так не получается) что первый символ после выполнения команды появляется в строке после ее выполнения. вот на картинке видно что появляется буква D первая от DIR бороться с этим можно если перед началом ввода в командную строку команды выдержать паузу Цитата: mov cx,0004h mov dx,0000h mov ah,86h int 15h | но пауза это дело не надежное, при cx=2 она например помогает в 50% случаев. в тоже время драйвер ansi.sys обходится без этой паузы в нем команда выполняется вообще быстро. в чем же дело может быть. не могу понять откуда это дублирование первого символа береться | Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:59 29-10-2011 | Исправлено: bomzzz, 14:16 29-10-2011 |
|