; multi-segment executable file template. data segment ; add your data here! data2 db 10 dup(0) pe db ' be name khoda' po db ' **** barname nevisan: "mahdi bazi" && "mohammad amin ziba"(Ginoo.ir) ****' pea db 'baraye bayneri be dahdahi harfe "b" va baraye dahdahi be bayneri harfe "d" ;joloye adade vorodi "=" gharar dahid :$' dataw db 10 dup(?) datas db 9 dup(?) datat db 10 datay db ? dataf dw ? dataz db 1,2,4,8,16,32,64,128 ;; ; ;; data3 dw ? data1 db 2 data11 dw 2 datad dd ? data4 db 30 dup(0) ends stack segment dw 128 dup(0) ends code segment start: ; set segment registers: mov ax, data mov ds, ax mov es, ax ; ; mov dh,1 mov ah,02h mov cx,18 lea di,pe loo: mov dl,[di] int 21h inc di loop loo ; ; ; call mahdi call mahdi mov dh,1 mov ah,02h mov cx,75 lea di,po loott: mov dl,[di] int 21h inc di loop loott ; ; call mahdi call mahdi call mahdi call mahdi ; mov ah,02h mov cx,115 lea di,pea loor: mov dl,[di] int 21h inc di loop loor ; ; call mahdi call mahdi ; ; mov ah,01H int 21h cmp al,98 jz asdu cmp al,100 jz qwe jmp dfr asdu: call mahdi lea si,datas mov cx,8 amin1: mov ah,01H int 21h cmp al,61 jz asd sub al,48 mov [si],al inc si mov dx,si loop amin1 cmp cx,0 jnz asd mov ah,0eh mov al,61 mov cx,1 mov bh,00h mov bl,07h int 10h asd: dec si mov cx,0 mov dx,0 lea di,dataz mov ax,0 mov dl,8 amin: mov al,[si] dec si mul [di] inc di add dataf,ax mov ax,0 dec dl jnz amin mov ax,0 lea si,dataw lea di,dataw dec di mov ax,dataf mm: div datat mov [si],ah inc si cbw cmp ax,1 jae mm ; ; ; dec si m: mov ah,0eh add al,[si] dec si add al,48 mov cx,1 mov bh,00h mov bl,07h int 10h mov al,0 cmp si,di jnz m jmp dfr qwe: call mahdi lea si,data2 lea di,data2 mov cx,5 mov dx,0 aminj: mov ah,01H int 21h cmp al,61 jz sadaf sub al,48 mov [si],al inc si mov dx,si loop aminj sadaf: cmp dx,4 jz a cmp dx,3 jz b cmp dx,2 jz c cmp dx,1 jz d a: mov cx,0 mov al,100 mul [di] mov al,10 mul [di] inc di add ax,cx mov al,100 mul [di] inc di add cx,ax mov al,10 mul [di] inc di add cx,ax add cx,[di] jmp aaaa b: mov cx,0 mov al,100 mul [di] inc di add cx,ax mov al,10 mul [di] inc di add cx,ax add cx,[di] jmp aaaa c: mov cx,0 mov al,10 mul [di] inc di add cx,ax add cx,[di] jmp aaaa d: mov cx,0 add cx,[di] ; mov data3,cx aaaa: lea si,data4 mov ax,cx cmp ax,511 ja ff sss: div data1 mov [si],ah inc si mov ah,0 cmp al,0 jz afg jmp sss jmp afg ff: mov datad,ax mov ax,word ptr datad mov dx,word ptr datad+2 div data11 mov [si],dx inc si jmp sss afg: dec si lea di,data4 afgh: mov ah,0eh mov al,[si] add al,48 dec si mov cx,1 mov bh,00h mov bl,07h int 10h cmp si,di jnb afgh dfr: mov ah, 1 int 21h mov ax, 4c00h ; exit to operating system. int 21h ends mahdi proc mov ah,02 mov bh,00h inc dh mov dl,0 int 10h ret endp end start ; set entry point and stop the assembler.