You are on page 1of 1

data segment

n db 5
r db 2
data ends
stack_seg segment
dw 40 dup(0)
stack_top label word
stack_seg ends
code segment
assume cs:code,ds:data,ss:stack_seg
start: mov ax,data
mov ds,ax
mov ax,stack_seg
mov ss,ax
lea sp,stack_top
mov bl,n
call fact
mov bh,bl

fact proc near


pushf
push ax
push cx
push dx
mov al,bl
mov ah,1
sub bl,ah
mov dl,bl
loop:mul dl
sub dl,ah
cmp dl,01
jnz loop
mov bl,al
pop dx
pop cx
pop ax
ret
fact endp

You might also like