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
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.