Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted by NEmo ( 16 years ago )
;On entre 3 lettres comprises entre a-zA-Z
;On affiche les 3 lettres dans l'ordre ALPHABETIQUES, CbA = AbC >>
;Ne joue plus sur la valeur hexa.

assume ss:pile,ds:donnees,cs:code

pile segment stack use16
        db 1024 dup(?)
pile ends

donnees segment use16
        tab DB 3 dup(?),'$'
        stk DB 3 dup(?),'$'
        msg db " --> $"
donnees ends

code segment use16

main:
;-------------------------;
; 1 : Entrées des données ;
;-------------------------;
        mov ax,donnees
        mov ds,ax
        mov tab[3],'$'

        mov ah,01h
        int 21h
        mov tab[0],al

        mov ah,01h
        int 21h
        mov tab[1],al

        mov ah,01h
        int 21h
        mov tab[2],al

;-------------------------------------;
; 1 : Initialisation                  ;
;-------------------------------------;

 mov bx,0
 mov si,0
 mov di,0
 mov cx,0

;-------------------------------------;
; Etape1 : Reperage minuscule         ;
;-------------------------------------;

etape1:
 cmp si,3
 je zero1
 
 cmp tab[si],'Z'
 ja minuscule
 inc si
 jmp etape1

;-------------------------------------------;
; minuscule : stockage et conversion        ;
; Bx contient la limite !!!!     ;
;-------------------------------------------;

minuscule:
 mov ch,tab[si]
 mov stk[bx],ch
    ;on converti
 sub tab[si],20h
 inc si
 inc bx
 jmp etape1
 

;-------------------------------------;
; 2: remise à zero     ;
;-------------------------------------;

zero1:
 mov si,0
 mov di,1
 mov cx,0

;-------------------------------------;
; 3: Verification des majuscules   ;
;-------------------------------------;

majuscule:
 cmp di,3
 je zero2

 mov ch,tab[di]
        cmp tab[si],ch
 ja trimajuscule
 
 inc si
 inc di
 jmp majuscule

zero2:
 mov si,0
 mov di,1
 mov ch,tab[di]
 cmp tab[si],ch
 ja trimajuscule
 jbe zero3

;-------------------------------------;
; 4: triage des majuscules    ;
;-------------------------------------;

trimajuscule:
 mov ch,tab[di]
 mov cl,tab[si]
 mov tab[di],cl
 mov tab[si],ch
 
 inc si
 inc di
 
 jmp majuscule

;-------------------------------------;
; 5: remise à zero     ;
;-------------------------------------;

zero3:
 mov si,0
 mov di,0
 mov cx,0 

 cmp bx,0
 je affichage
 
 mov dx,bx    ;>>> dx contient la limite aussi.
 mov bx,0    ;>>> s'en servir de i.
;-------------------------------------;
; 6: Verification      ;
;-------------------------------------;

retri:
 cmp bx,dx  ;pour quitter la boucle/
 je affichage

 mov ch,stk[bx]
 sub ch,20h  ;pour comparer, retirer 20 afin de placer en maj! 

;-------------------------------------;
; 7: recherche de la lettre coresp.   ;
;-------------------------------------;

Dwhile:
 cmp ch,tab[di]
 je conversion
 inc di
 jmp Dwhile

;-------------------------------------;
; 8: Conversion      ;
;-------------------------------------;

Conversion:
 mov ch,stk[bx]
 mov tab[di],ch
 
 inc bx
 mov di,0
 jmp retri

affichage:

   mov ah,09h
        lea dx,msg
        int 21h

        mov ah,09h
        lea dx,tab
        int 21h

        mov ah,4ch
        int 21h





code ends
end main

 

Revise this Paste

Your Name: Code Language: