;程序可能有点长
data segment
value dw 5 ;根据需要计算的范围输入该值
result dw ?
data ends
stack segment stack 'stack'
dw 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
mov bx,value
call fact
mov result,dx
mov ah,4ch
int 21h
fact proc
push ax
and bx,bx
mov cx,0
mov ax,1
mov dx ,0
next:
push bx
push dx
inc cx
mov bx,cx
mul bx
pop dx ;如果没有这一句则到不到累加的目的
add dx ,ax
pop bx ;同上面的匹配
cmp bx,cx
jnz next
pop ax
ret
fact endp
code ends
end start