Affiche le code ascii d'une touche

Description

Ce prog utilise l'int 16h
entrée ax=0
sorie al=code ascii de la touche.
affiche la registre al

Source / Exemple :


;Turbo Assembler  Version 3.2 
;Turbo Link  Version 5.1
;tasm fichier.asm
;tlink /t fichier.obj

Code Segment
assume cs:code,ds:code,es:code   ;.com
ORG 0100h          ;.com

Start:
;fonction 0 de l'int 16h du bios
;entrée ah = 0
;sortie AL = code ASCII de la touche		
      xor ah,ah ; ah = 00
      int 16h   ;appelle int
      
      ;al == le code ascii
      ;la valeur du registre al (8 bits) peut sécrire sur 2 chiffres en base 16
      ;chaque chiffre en base 16 (héxadécimale) étant codé sur 4 bits
      
      mov bl,al   
      shr al,4    
;sauve bl dans al (bl = al)
;décale de 4 bits vers la droite
;revient a diviser par 16 (car 2^4 = 16)
;exemple: al = 12h   -shr al , 4->  al = 01h

      call  R_AfficheAsciiAL
      
      shl bx,4 
;idem sauf que l'on décale dans l'autre sens
;exemple: bx = 0012h   -shl bl,4-> bx = 0120h

      xor bh, bh   ; bh  = 00
      shl bx,4     
;exemple bx = 0020h  ->  bx = 0200h , bh = 02h

      mov al, bh
      call  R_AfficheAsciiAL
      
Fin:
      int 20h    ;fin du programme (.com)

R_AfficheAsciiAL proc near
      cmp al,10    ;al ?? 10
      jb Chiffre   ;si al < 10 alors saute -> Chiffre

      ;aussi non
      add al,55 
;al peut valoire (0ah, 0bh ,0ch ,0dh ,0eh ,0fh)
;donc il faut afficher une lettre a partire de a
;exemple: al = 0ah alors on met le code ascii "a" dans al
;al = 0ah  -> al + 55h = 5fh = code ascii de "a"

Aff_et_ret:
      mov ah,0eh   
;fonction qui  affiche le caractère représenter dans le code ascii de al
      int 10h
      
      ret

Chiffre:
      add al,30h  ;car "0" = 30h, "1" = 31h, 2 = 32h, ...
                  ;exemple al = 5    al + 30h  =  35h

      jmp Aff_et_ret ; pour ne pas écrir 2x el même code.
      
R_AfficheAsciiAL endp

code ends
end start

Conclusion :


Petit prog prarique :-)
Visite http://www.passionpc.net

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (Supden2000)