;*/*/*/*/*/*/*/*/*/* STACK SEGMENT *\*\*\*\*\*\*\*\*\*\

stacksg segment para stack 'stack'
        dw 32 dup('?')
stacksg ends

;*/*/*/*/*/*/*/*/*/* DATA SEGMENT *\*\*\*\*\*\*\*\*\*\

datasg segment para 'data'
msg  db "------------------------------------------------------------",'$'
msg0 db "This program split zoj & fard digits and found sum asci code",'$'
msg1 db "Enter  a String: ",'$'
msg2 db "Sum of Zoj number: ",'$'
msg3 db "Sum of Fard number: ",'$'
msg4 db "Zoj Chars: ",'$'
msg5 db "Fard chars: ",'$'
msg6 db "Made by REZA AKHLAGHY & MOHAMMAD SHERAFAT",'$'
strlist   label  byte
max db 10
len   db ?
input_string db 10 dup(' ')
count db 0
o_char db 10 dup(' '),'$'
e_char  db 10 dup(' '),'$'
e_sum dw ?
o_sum dw ?
e_sum_2_str db  5 dup (?),'$'
o_sum_2_str db  5 dup (?),'$'
datasg ends

;*/*/*/*/*/*/*/*/*/* CODE SEGMENT *\*\*\*\*\*\*\*\*\*\

codesg segment para 'code'

main proc far
assume cs:codesg,ds:datasg,es:codesg  
mov  ax,datasg
mov  ds,ax

;*/*/*/*/*/*/*/*/*/* CLEAR SCREEN *\*\*\*\*\*\*\*\*\*\

mov ax,0600h
        mov bh,28
        mov cx,0000
        mov dx,184fh
        int 10h

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,1
mov dl,8
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE *\*\*\*\*\*\*\*\*\*\

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

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,2
mov dl,8
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE0 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg0
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,3
mov dl,8
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE *\*\*\*\*\*\*\*\*\*\

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

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,5
mov dl,14
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE6 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg6
mov al,0
        mov ah,09h
        int 21h


;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,10
mov dl,30
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE1 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg1
mov ah,9h
int    21h

;*/*/*/*/*/*/*/*/*/* GET THE STRING *\*\*\*\*\*\*\*\*\*\

mov ah,0ah
lea dx,strlist
int 21h
;*/*/*/*/*/*/*/*/*/* -------------MAIN OPRATION----------- *\*\*\*\*\*\*\*\*\*\

lea si,o_char
lea di,e_char
lea bx,input_string
mov cl,0
start_of_loop:
cmp cl,len
je  end_of_program
mov al,[bx]
mov ah,0
mov dl,2
div dl
mov al,[bx]
cmp ah,1
je  case_o
cbw
add e_sum,ax
mov dh,[bx]
mov [di],dh
inc di
;74
inc bx
inc cl
jmp start_of_loop
case_o:
cbw
add o_sum,ax
mov dh,[bx]
mov [si],dh
inc si
inc bx
inc cl
jmp start_of_loop
end_of_program:

;*/*/*/*/*/*/*/*/*/* CONVERT NUMBER 2 STRING _ FARD *\*\*\*\*\*\*\*\*\*\

        lea bx, o_sum_2_str
mov ax, o_sum
mov cx,1000
mov dx,0
div cx
add al,30h
mov [bx],al
mov o_sum,dx
inc bx
;-------
        mov ax, o_sum
mov cl,100
div cl
add al,30h
mov [bx],al
mov al,ah
mov ah,0
mov o_sum,ax
inc bx
;-------
mov ax, o_sum
mov cl, 10
div cl
add al,30h
mov [bx],al
mov al,ah
mov ah,0
inc bx
;-------
add al,30h
mov [bx],al

;*/*/*/*/*/*/*/*/*/* CONVERT NUMBER 2 STRING _ ZOJ *\*\*\*\*\*\*\*\*\*\

        lea bx, e_sum_2_str
mov ax, e_sum
mov cx,1000
mov dx,0
div cx
add al,30h
mov [bx],al
mov e_sum,dx
inc bx
;-------
        mov ax, e_sum
mov cl,100
div cl
add al,30h
mov [bx],al
mov al,ah
mov ah,0
mov e_sum,ax
inc bx
;-------
mov ax, e_sum
mov cl, 10
div cl
add al,30h
mov [bx],al
mov al,ah
mov ah,0
inc bx
;-------
add al,30h
mov [bx],al

;*/*/*/*/*/*/*/*/*/* CLEAR SCREEN *\*\*\*\*\*\*\*\*\*\

        mov ax,0600h
        mov bh,28
        mov cx,0000
        mov dx,184fh
        int 10h

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,10
mov dl,30
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE2 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg2
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* PRINT SUM OF ZOJ *\*\*\*\*\*\*\*\*\*\

lea   dx,e_sum_2_str
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,11
mov dl,30
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE3 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg3
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* PRINT SUM OF FARD *\*\*\*\*\*\*\*\*\*\

lea   dx,o_sum_2_str
        mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,12
mov dl,30
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE4 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg4
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* PRINT ZOJ CHARS *\*\*\*\*\*\*\*\*\*\

lea    dx,e_char
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,13
mov dl,30
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE5 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg5
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* PRINT FARD CHARS *\*\*\*\*\*\*\*\*\*\

lea    dx,o_char
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\

mov ah,2h
mov dh,18
mov dl,14
mov bh,0
int 10h

;*/*/*/*/*/*/*/*/*/* PRINT MASSAGE6 *\*\*\*\*\*\*\*\*\*\

lea    dx,msg6
mov al,0
        mov ah,09h
        int 21h

;*/*/*/*/*/*/*/*/*/* CLOSE PROGRAM *\*\*\*\*\*\*\*\*\*\

;*/*/*/*/*/*/*/*/*/* MOVE CURSOR *\*\*\*\*\*\*\*\*\*\
mov ah,2h
mov dh,23
mov dl,8
mov bh,0
int 10h

mov  ax,4c00h
int     21h

main endp
       codesg ends
    end main