这里有一段求n的阶乘的程序,但结果不对,不知错误出在哪,请各位高手指教
data  segment
n  db  4
result dw ?
data  ends
stack  segment  stack
  dw 100 dup(?)
stack  ends
code  segment
  assume  cs:code;ds:data
start: mov  ax,data
       mov  ds,ax
       xor  ax,ax
       mov  al, n
       call  fac
       mov  result,dx
       mov  ah,4ch
       int  21h
fac  proc
      cmp ax,0
      jne next
      mov dx,1
      jmp back
next:push ax
     dec  ax
     call fac
back:pop  ax
     mul  dx
     mov  ax,dx
     ret
fac  endp
    code  ends
     end  start