汇编语言:利用子程序的嵌套和子程序的递归调用,实现N!
题目要求
利用子程序的嵌套和子程序的递归调用,实现N!的运算。
程序代码及运行
data segment
org 3000h
result dw 0000h
org 3100h
n db 8
data ends
code segment
assume cs:code
start:
mov ax,data
mov ds,ax
mov si,3100h
mov ax,[si]
call fact
mov si,offset result
mov [si],dx
mov ax,4c00h
int 21h
;阶乘子程序
;入口参数: al中存放n
;出口参数: dx中存放n!
fact proc near
cmp ax,0
jne cond1
mov dx,1
ret
cond1:
push ax
dec ax
call fact
cond2:
pop cx
call mult
cond3:
mov dx,ax
ret
fact endp
;无符号字节数乘法子程序
;入口参数:cx,dx中的各为一个乘数
;出口参数:ax中的为乘积
mult proc near
mov ax,dx
mul cx
ret
mult endp
code ends
end start
运行结果
1、首先利用反汇编,g=5 12主程序的运行过程
2、运行,默认求8!,观察ax寄存器
3、修改内存中的N