J'essaie actuellement d'écrire un système d'exploitation simple et j'ai du mal à obtenir et à retourner l'entrée de l'utilisateur. Fondamentalement parce que c'est OS indépendant je ne peux pas utiliser int21. Le code que je me sers est maintenant ici:Comment obtenir l'entrée et l'afficher sans int 21h
inputChar:
mov ah, 00h
int 16h
mov al, ah
mov ah, 0Eh
int 10h
Il obtient le caractère, mais je suis incapable d'afficher avec succès. Je crois que c'est un problème de conversion d'une forme d'hexagone à une sortie de personnage. La sortie lorsque je saisis un personnage est essentiellement un groupe de caractères aléatoires.
Est-ce que quelqu'un a des idées pour résoudre ce problème?
Un peu de recherche rapide sur le Web montre que int16h dans le bios PC récupère les codes de balayage de clé brutes, plutôt que des caractères d'entrée. Si vous écrivez du code pour convertir une valeur en une série de caractères représentant ceux-ci en hexadécimal ou en décimal, vous pouvez les imprimer. Ou vous pouvez créer une table de recherche pour les convertir en caractères ou en abréviations (soit des chaînes terminées soit une longueur fixe) –
[La liste d'interruption de Ralph Brown] (http://www.ctyme.com/intr/rb-1754.htm) dit que int16h/00h renvoie le code ASCII dans 'AL'. Avez-vous essayé de sortir cela, plutôt que 'AH' (le scancode)? – Michael
Oui, je le pense. À partir du code affiché ne serait-ce pas essayer de produire la valeur al, puisque c'est ce que 0Eh utilisera? – Hirsh