Guest User

Untitled

a guest
Jun 16th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.                   PAGE 70,130
  2. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  3. ; Nom:            chaine.asm
  4. ; Description:    Afficher une chaŒne de caractŠres.
  5. ; Historique
  6. ;   1999.11.23    Jean-Fran‡ois Nadeau  Entr‚e du code.
  7. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  8.  
  9.                                        ;***********************************
  10.                                        ; Environnement.
  11.                                        ;***********************************
  12.                   .MODEL SMALL         ;Choix du modŠle m‚moire.
  13.  
  14.                                        ;***********************************
  15.                                        ; Segment de pile.
  16.                                        ;***********************************
  17.                   .STACK 256           ;Espace disponible sur la pile.
  18.  
  19.                                        ;===================================
  20.                                        ; D‚claration des constantes.
  21.                                        ;===================================
  22. PAS_ERREUR        EQU   0              ;Pas d'erreur dans le programme.
  23.                                        ;Nombre de caractŠres … afficher.
  24. NB_CAR            EQU   (MSG_FIN - sMsgBienvenue)
  25. CR                EQU   13             ;Code ASCII du retour de chariot.
  26. LF                EQU   10             ;Code ASCII du changement de ligne.
  27.  
  28.                                        ;***********************************
  29.                   .DATA                ; Segment de donn‚es.
  30.                                        ;***********************************
  31.                                        ;===================================
  32.                                        ; D‚finition des variables.
  33.                                        ;===================================
  34. oCodeSortie       DB    PAS_ERREUR     ;Code d'erreur envoy‚
  35.                                        ;… la proc‚dure appelante.
  36. sMsgBienvenue     DB    CR,LF,"Bonjour … tout le monde!",CR,LF
  37.                   DB    "On s'amuse beaucoup "
  38.                   DB    "en TSO!",CR,LF,'$'
  39. MSG_FIN           EQU   $              ;Adresse de la fin du message.
  40.  
  41.                                        ;***********************************
  42.                   .CODE                ; Segment du code.
  43.                                        ;***********************************
  44.  
  45.                                        ;===================================
  46.                                        ;Proc‚dure principale.
  47.                                        ;===================================
  48. ProcPrinc         PROC
  49.                   mov   ax,@data       ;** Initialiser le pointeur sur
  50.                   mov   ds,ax          ;** le segment de donn‚es.
  51.  
  52.                                        ;-----------------------------------
  53.                                        ;Afficher le message de bienvenue.
  54.                                        ;-----------------------------------
  55.                                        ;Pointer le message de bienvenue.
  56.                   lea   si,sMsgBienvenue
  57. ;[1]
  58.                   mov   dl,[si]        ;Charger le premier caractŠre du message.
  59. ;[2]
  60. AfficherCar0:
  61.                   cmp   dl,'$'         ;Tant qu'on n'a pas atteint le caractŠre de fin de chaine
  62.                   je    FinAfficher0
  63.                   mov   ah,2           ;  Afficher le caractŠre.
  64.                   int   21h
  65.                   inc   si             ;  Pointer le caractŠre suivant.
  66. ;[3]
  67.                   mov   dl,[si]        ;  Charger le prochain caractŠre … afficher.
  68. ;[4]
  69.                   jmp   AfficherCar0
  70. FinAfficher0:                          ;Fin du tant que.
  71.  
  72.                                        ;-----------------------------------
  73.                                        ;Afficher le message de bienvenue.
  74.                                        ;-----------------------------------
  75.                                        ;Pointer le message de bienvenue.
  76.                   lea   si,sMsgBienvenue
  77.                   mov   cx,NB_CAR      ;Charger le nombre d'octets du message
  78.                   mov   dl,[si]        ;Charger le premier caractŠre du message.
  79. AfficherCar1:
  80.                   cmp   cx,0           ;Tant qu'il reste des caractŠres … afficher
  81.                   je    FinAfficher1
  82.                   mov   ah,2           ;  Afficher le caractŠre.
  83.                   int   21h
  84.                   inc   si             ;  Pointer le caractŠre suivant.
  85.                   mov   dl,[si]        ;  Charger le prochain caractŠre … afficher.
  86.                   dec   cx             ;  D‚cr‚menter le compteur de caractŠres … afficher.
  87.                   jmp   AfficherCar1
  88. FinAfficher1:                          ;Fin du tant que.
  89.  
  90.                                        ;-----------------------------------
  91.                                        ;Retourner au systŠme
  92.                                        ;d'exploitation.
  93.                                        ;-----------------------------------
  94. Sortie:
  95.                   mov   ah,04Ch        ;Retourner au systŠme
  96.                   mov   al,oCodeSortie ;d'exploitation (DOS) avec le code
  97.                   int   21h            ;d'erreur.
  98.  
  99. ProcPrinc         ENDP                 ;Fin de la proc‚dure
  100.                   END   ProcPrinc      ;Fin du module.
Add Comment
Please, Sign In to add comment