汇编语言call实现计算组合公式(m!/n!)/(m-n)!
data segment
m=8
n=3
res dw ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,m
call jc1;求m!
mov bx,ax;bx=m!
mov cx,n
call jc1 ;求n!ax=n!
xchg ax,bx;要求m!/n!使用除法指令 div 由除法指令 应交换ax bx 此时ax=m! bx=n!
xor dx,dx
div bx;
mov bx,ax;bx=m!/n!
mov cx,m
sub cx,n
call jc1;ax=(m-n)!
xchg ax,bx;ax=m!/n! bx=(m-n)!
xor dx,dx;上一次做完除法之后可能会有余数保存在dx中 该程序不考虑余数,所以清零dx
div bx;ax=(m!/n!)/(m-n)!
mov res,ax
mov ah,4ch
int 21h
jc1 proc;子程序 功能:求阶乘
mov ax,1
L1: mul cx
dec cx
jnz L1
ret
jc1 endp
code ends
end start
原文作者: 赖卓成
原文链接: https://lzcxfz.github.io/2019/04/23/汇编语言call实现计算组合公式/
版权声明: 转载请注明出处(必须保留作者署名及链接)