Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PAGE 70,130
- ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- ; Nom: chaine.asm
- ; Description: Afficher une chaŒne de caractŠres.
- ; Historique
- ; 1999.11.23 Jean-Fran‡ois Nadeau Entr‚e du code.
- ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- ;***********************************
- ; Environnement.
- ;***********************************
- .MODEL SMALL ;Choix du modŠle m‚moire.
- ;***********************************
- ; Segment de pile.
- ;***********************************
- .STACK 256 ;Espace disponible sur la pile.
- ;===================================
- ; D‚claration des constantes.
- ;===================================
- PAS_ERREUR EQU 0 ;Pas d'erreur dans le programme.
- ;Nombre de caractŠres … afficher.
- NB_CAR EQU (MSG_FIN - sMsgBienvenue)
- CR EQU 13 ;Code ASCII du retour de chariot.
- LF EQU 10 ;Code ASCII du changement de ligne.
- ;***********************************
- .DATA ; Segment de donn‚es.
- ;***********************************
- ;===================================
- ; D‚finition des variables.
- ;===================================
- oCodeSortie DB PAS_ERREUR ;Code d'erreur envoy‚
- ;… la proc‚dure appelante.
- sMsgBienvenue DB CR,LF,"Bonjour … tout le monde!",CR,LF
- DB "On s'amuse beaucoup "
- DB "en TSO!",CR,LF,'$'
- MSG_FIN EQU $ ;Adresse de la fin du message.
- ;***********************************
- .CODE ; Segment du code.
- ;***********************************
- ;===================================
- ;Proc‚dure principale.
- ;===================================
- ProcPrinc PROC
- mov ax,@data ;** Initialiser le pointeur sur
- mov ds,ax ;** le segment de donn‚es.
- ;-----------------------------------
- ;Afficher le message de bienvenue.
- ;-----------------------------------
- ;Pointer le message de bienvenue.
- lea si,sMsgBienvenue
- ;[1]
- mov dl,[si] ;Charger le premier caractŠre du message.
- ;[2]
- AfficherCar0:
- cmp dl,'$' ;Tant qu'on n'a pas atteint le caractŠre de fin de chaine
- je FinAfficher0
- mov ah,2 ; Afficher le caractŠre.
- int 21h
- inc si ; Pointer le caractŠre suivant.
- ;[3]
- mov dl,[si] ; Charger le prochain caractŠre … afficher.
- ;[4]
- jmp AfficherCar0
- FinAfficher0: ;Fin du tant que.
- ;-----------------------------------
- ;Afficher le message de bienvenue.
- ;-----------------------------------
- ;Pointer le message de bienvenue.
- lea si,sMsgBienvenue
- mov cx,NB_CAR ;Charger le nombre d'octets du message
- mov dl,[si] ;Charger le premier caractŠre du message.
- AfficherCar1:
- cmp cx,0 ;Tant qu'il reste des caractŠres … afficher
- je FinAfficher1
- mov ah,2 ; Afficher le caractŠre.
- int 21h
- inc si ; Pointer le caractŠre suivant.
- mov dl,[si] ; Charger le prochain caractŠre … afficher.
- dec cx ; D‚cr‚menter le compteur de caractŠres … afficher.
- jmp AfficherCar1
- FinAfficher1: ;Fin du tant que.
- ;-----------------------------------
- ;Retourner au systŠme
- ;d'exploitation.
- ;-----------------------------------
- Sortie:
- mov ah,04Ch ;Retourner au systŠme
- mov al,oCodeSortie ;d'exploitation (DOS) avec le code
- int 21h ;d'erreur.
- ProcPrinc ENDP ;Fin de la proc‚dure
- END ProcPrinc ;Fin du module.
Add Comment
Please, Sign In to add comment