递归子程序.txt
来自「一些小程序,关于汇编语言中程序的中断的使用,例子中包括字符输出」· 文本 代码 · 共 42 行
TXT
42 行
当子程序直接或间接地嵌套调用自身时称为递归调用,含有递归调用的子程序称为递归子程序.
例:求阶乘
.model small
.stack 256
.data
N dw 3
result dw ?
.code
.startup
mov bx,N
push bx ;入口参数:N
call fact ;调用递归子程序
pop result ;出口参数:N!
.exit 0
;计算N!的近过程
;入口参数:压入 N
;出口参数:弹出 N!
fact proc
push ax
push bp
mov bp,sp
mov ax,[bp+6] ;取入口参数 N
cmp ax,0
jne fact1 ;N>0,N!=N×(N-1)!
inc ax ;N=0,N!=1
jmp fact2
fact1: dec ax ;N-1
push ax
call fact ;调用递归子程序求(N-1)!
pop ax
mul word ptr [bp+6] ;求 N×(N-1)!
fact2: mov [bp+6],ax ;存入出口参数 N!
pop bp
pop ax
ret
fact endp
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?