; Barghamadi.ali@gmail.com
org 100h
.model small
.data
menu db 0dah,4 dup (0c4h),0c2h,4 dup (0c4h),0c2h,4 dup (0c4h),0c2h,4 dup (0c4h),0c2h,4 dup (0c4h),0c2h,4 dup (0c4h),0c2h,4 dup (0c4h),0c2h,4 dup (0c4h),0bfh,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c3h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0b4h,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c3h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0b4h,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c3h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0b4h,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c3h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0b4h,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c3h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0b4h,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c3h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0b4h,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c3h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0c5h,4 dup (0c4h),0b4h,0dh,0ah,
db 2 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,4 dup (' '),0b3h,0dh,0ah
db 2 dup (' '),0c0h,4 dup (0c4h),0c1h,4 dup (0c4h),0c1h,4 dup (0c4h),0c1h,4 dup (0c4h),0c1h,4 dup (0c4h),0c1h,4 dup (0c4h),0c1h,4 dup (0c4h),0c1h,4 dup (0c4h),0d9h,"$"
countf db 0
countr db 0
countv db 0
counta db 0
s db 0
chr db ?
sat db 2
sot db 5
x dw ?
y dw ?
.code
main proc far
mov ax,@data
mov ds,ax
;;;;;;;;;;;;;;;;;;; Sarbaz
mov dh,1
mov dl,2
mov bh,0
mov ah,2
int 10h
mov ah,09h
lea dx,menu
int 21h
mov dh,20
mov dl,22
mov bh,0
mov ah,2
int 10h
; nove mohre
mov ah,1
int 21h
mov chr,al
mov ah,1
int 21h
sub al,48
mov ah,0
mov x,ax
mov si,ax
mov ah,1
int 21h
sub al,48
mov ah,0
mov y,ax
mov di,ax
;;;;;;;;;;;;;;;;;
cmp x,1
jl exit1
cmp x,8
jg exit1
cmp y,8
jg exit1
cmp y,1
jl exit1
mov ax,x
mul sat
mov dh,al
mov ax,y
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,04h
mov ah,2
int 21h
mov si,x
mov di,y
;;;;;;;;;;;;;;;;;; sarbaz
cmp chr,'s'
jne l40
cmp si,8
jge l40
cmp si,1
je l40
cmp si,2
je l39
inc si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
jmp l37
l39:
add si,2
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
;jmp l40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
l37:
mov si,x
mov di,y
cmp si,8
jge l44
cmp di,8
jge l44
inc si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
;;;;;;;;;;;;;;;;;;;;;;
l44:
mov si,x
mov di,y
cmp si,8
jge l40
cmp di,1
jle l40
dec di
inc si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l40:
;;;;;;;;;;;;;;;;;;;; fil right high
mov cx,8
cmp chr,'f'
jne exf
righth:
inc countf
cmp si,8
jge l3
cmp di,8
jge l3
inc si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop righth
l3:
;;;;;;;;;;;;;;;;;;;;;;;;;; fil right low
mov si,x
mov di,y
mov cx,8
cmp chr,'f'
jne exf
rightl:
inc countf
cmp si,1
jle l4
cmp di,8
jge l4
dec si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop rightl
l4:
;;;;;;;;;;;;;;;;;;;;;;;fil left high
mov si,x
mov di,y
mov cx,8
cmp chr,'f'
jne exf
lefth:
inc countf
cmp si,8
jge l5
cmp di,1
jle l5
inc si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop lefth
l5:
;;;;;;;;;;;;;;;;;;;;;;;;;;fil left low
mov si,x
mov di,y
mov cx,8
cmp chr,'f'
jne exf
leftl:
inc countf
cmp si,1
jle l6
cmp di,1
jle l6
dec si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop leftl
l6:cmp countf,4
jge exit1
exf:
;;;;;;;;;;;;;;;;;;; End fil
;;;;;;;;;;;;;;;;;;;;;;; rokh high
mov si,x
mov di,y
mov cx,8
cmp chr,'r'
jne exr
rokhhigh:
inc countr
cmp si,8
jge l7
inc si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop rokhhigh
l7:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; rokh down
mov si,x
mov di,y
mov cx,8
cmp chr,'r'
jne exr
rokhdown:
inc countr
cmp si,1
jle l8
dec si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop rokhdown
l8:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; rokh right
mov si,x
mov di,y
mov cx,8
cmp chr,'r'
jne exr
rokhright:
inc countr
cmp di,8
jge l9
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop rokhright
l9:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; rokh left
mov si,x
mov di,y
mov cx,8
cmp chr,'r'
jne exr
rokhleft:
inc countr
cmp di,1
jle l10
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop rokhleft
l10:
cmp countr,4
jge exit1
exr:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; vazir zarb right high
mov si,x
mov di,y
mov cx,8
cmp chr,'v'
jne exv
zhigh:
inc countv
cmp si,8
jge l11
cmp di,8
jge l11
inc si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop zhigh
l11:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; vazir zarb right down
mov si,x
mov di,y
mov cx,8
zdown:
inc countv
cmp si,1
jle l12
cmp di,8
jge l12
dec si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop zdown
l12:
;;;;;;;;;;;;;;;;;;;;;;;;;; vazir zarb left high
mov si,x
mov di,y
mov cx,8
zlefth:
inc countv
cmp si,8
jge l13
cmp di,1
jle l13
inc si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop zlefth
l13:
;;;;;;;;;;;;;;;;;;;;;;;; vazir zarb left low
mov si,x
mov di,y
mov cx,8
zleftl:
inc countv
cmp si,1
jle l14
cmp di,1
jle l14
dec si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop zleftl
l14:
;;;;;;;;;;;;;;;;;;;;;;; vazir high
mov si,x
mov di,y
mov cx,8
vrhigh:
inc countv
cmp si,8
jge l15
inc si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop vrhigh
l15:
;:::::::::::::::::::::::::: Vazir Down
mov si,x
mov di,y
mov cx,8
vrdown:
inc countv
cmp si,1
jle l16
dec si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop vrdown
l16:
;;;;;;;;;;;;;;;;;;; Vazir Right
mov si,x
mov di,y
mov cx,8
vrright:
inc countv
cmp di,8
jge l17
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop vrright
l17:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Vazir left
mov si,x
mov di,y
mov cx,8
vrleft:
inc countv
cmp di,1
jle l18
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
loop vrleft
l18:
cmp countv,8
jge exit1
exv:
;;;;;;;;;;;;;;;;;;;;;;;;;;;; asb (row)si+2 (col)di+1
cmp chr,'a'
jne exa
cmp si,7
jge l21
cmp di,7
jg l21
inc counta
inc si
inc si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l21:
;;;;;;;;;;;;;;;;;;;;; asb (row)si+1 (col)di+2
mov si,x
mov di,y
cmp si,7
jg l22
cmp di,7
jge l22
inc counta
inc si
inc di
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l22:
;;;;;;;;;;;;;;;;;;;;;;;;;;; asb (row)si+2 (col)di-1
mov si,x
mov di,y
cmp si,7
jge l23
cmp di,1
jle l23
inc counta
inc si
inc si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l23:
;;;;;;;;;;;;;;;;;;;;;;;;; asb (row)si+1 (col)di-2
mov si,x
mov di,y
cmp si,7
jg l24
cmp di,2
jle l24
inc counta
inc si
dec di
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l24:
;;;;;;;;;;;;;;;;;;;;;;;;;;;; asb (row)si-2 (col)di+1
mov si,x
mov di,y
cmp si,2
jle l25
cmp di,7
jg l25
inc counta
dec si
dec si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l25:
;;;;;;;;;;;;;;;;;;;;; asb (row)si-1 (col)di+2
mov si,x
mov di,y
cmp si,1
jle l26
cmp di,7
jge l26
inc counta
dec si
inc di
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l26:
;;;;;;;;;;;;;;;;;;;;;;;;;;; asb (row)si-2 (col)di-1
mov si,x
mov di,y
cmp si,2
jle l27
cmp di,1
jle l27
inc counta
dec si
dec si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l27:
;;;;;;;;;;;;;;;;;;;;;;;;; asb (row)si-1 (col)di-2
mov si,x
mov di,y
cmp si,1
jle l28
cmp di,2
jle l28
inc counta
dec si
dec di
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l28:
cmp counta,8
je exit1
exa:
;:::::::::::::::::::::: Shah High
cmp chr,'h'
jne exh
cmp si,8
jge l29
inc si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l29:
;;;;;;;;;;;;;;;;;;;;;;;;; Shah down
mov si,x
mov di,y
cmp si,1
jle l30
dec si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l30:
;;;;;;;;;;;;;;;;;;;;;;;;; Shah Right
mov si,x
mov di,y
cmp di,8
jge l31
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l31:
;;;;;;;;;;;;;;;;;;;;;;;;; Shah Left
mov si,x
mov di,y
cmp di,1
jle l32
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l32:
;;;;;;;;;;;;;;;;;;;;;;;;; Shah high-z-right
mov si,x
mov di,y
cmp si,8
jge l33
cmp di,8
jge l33
inc si
inc di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l33:
;;;;;;;;;;;;;;;;;;;;;;;;; Shah high-z-Left
mov si,x
mov di,y
cmp si,8
jge l34
cmp di,1
jle l34
inc si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l34:
;;;;;;;;;;;;;;;;;;;;;;;;; Shah down-z-Left
mov si,x
mov di,y
cmp si,1
jle l35
cmp di,1
jle l35
dec si
dec di
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l35:
;;;;;;;;;;;;;;;;;;;;;;;;; Shah Down-z-Right
mov si,x
mov di,y
cmp si,1
jle l36
cmp di,8
jge l36
inc di
dec si
mov ax,si
mul sat
mov dh,al
mov ax,di
mul sot
mov dl,al
mov bh,0
mov ah,2
int 10h
mov dl,'*'
mov ah,2
int 21h
l36:
exh:
exit1:
mov ax,4c00h
int 21h
ret