У меня есть этот код:ASM Замена сканкоды с ASCII-символов
bits 16
org 0x7C00
start: jmp main
key: dw 0x1e, 'a', 0x30, 'b'
print:
mov ah, 0x0E
int 0x10
keyboard:
cli
in al, 0x64
test al, 1
jz return
test al, 0x20
jnz return
in al, 0x60
call convert
call print
sti
convert:
mov bx, 0
.LOOP:
cmp al, [key+bx]
je .conv
add bx, 2
jmp .LOOP
.conv:
mov al, [key+bx+1]
ret
return:
ret
main:
call keyboard
jmp main
times 510 - ($-$$) db 0
dw 0xAA55
Он проверяет keypressess и каждый раз, когда я нажимаю кнопку, я сохранить его зарегистрировать Аль, а затем хотите распечатать его.
Но это только scancode, который сохраняется, и мне нужно заменить его символом ASCII, я делаю это с помощью «ключа» массива, но он не работает и выводит только 1 ключ, а затем программу просто лагает.
Конечно, если нажать клавиши не распознают. У вас есть только одно условие выхода: когда он находит соответствие для кода ключа. Если это не так, он будет продолжать и продолжать через память, пока не найдет ее. И если в этом сегменте памяти не будет ни одного, он будет зацикливаться навсегда. –
Я только нажимаю a и b .. –
Возможно, вам нужен массив байтов ('db')? –