Как получить код ASCII в регистре топора вместо кода сканирования - PullRequest
0 голосов
/ 24 января 2019

Я создаю программу, которая печатает клавишу, которая нажата на клавиатуре, с использованием аппаратных прерываний клавиатуры, написанный мною код печатает значение против кода сканирования символа, когда клавиша нажата.при использовании int 16h, ah = 01h программа должна вернуть AH = код сканирования BIOS AL = символ ASCII, но это не так, вот мой код, который я сделал до сих пор ..

коды ASCII отсутствуютгде в al или ah теперь я слышал, что мне нужно получить их из BIOS или что-то делать с платой ISR и PIC ...

[org 100h]
jmp start

kbisr:
push ax
push es
mov ax,0xb800
mov es,ax
in al,0x60

cmp cl, 0
je keypress
jmp keyrelease

keyrelease:
mov cl, 0
jmp nomatch

keypress:
; need changes here i guess..
mov cl, 1
add al,67
and al,01111111b
mov byte[es:3600],al
jmp nomatch

nomatch:
mov al,0x20
out 0x20,al
pop es
pop ax
add di,2
iret

start:
mov di,0
xor ax,ax
mov es,ax
cli
mov word[es:9*4],kbisr
mov [es:9*4+2],cs
sti
l1:
jmp l1

должен напечатать 'a'при нажатии a' b 'при нажатии b и т. д. в настоящее время он установлен на печать' a 'при нажатии a печатает' b 'при нажатии s печатает' c 'при нажатии d и так далее ..потому что это коды сканирования в строке, я думаю,

...