Ich habe diesen Code:ASM Ersetzen Scancodes mit ASCII-Zeichen
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
Es ist für keypressess prüft und jedes Mal wenn ich eine Taste drücken, ich spare es al registrieren und dann wollen ausdrucken.
Aber es ist nur der scancode gespeichert und ich muss es mit ASCII-Zeichen ersetzen, ich mache das mit dem Array "key", aber es funktioniert nicht und druckt nur nur 1 Schlüssel und dann das Programm liegt nur nach.
Natürlich, wenn Sie Tasten drücken sie nicht erkennt. Sie haben nur eine Ausstiegsbedingung: wenn sie eine Übereinstimmung für den Schlüsselcode findet. Wenn nicht, wird es durch die Erinnerung weiter und weiter gehen, bis es eins findet. Und wenn es in diesem Speichersegment keinen gibt, wird es für immer eine Schleife bilden. –
Ich drücke nur a und b .. –
Vielleicht möchten Sie ein Array von Bytes ('db')? –