【任务】有n个人坐在一起,第n个人比第n-1个人大h岁。第n-1个人比第n-2个人大h岁。以此类推,第2个人比第1个人大h岁。第1个人m岁。请问第n个人多大。用递归调用的方法设计程序完成题目。
【参考解答】
assume cs:code, ds:data, ss:sstack
data segment
n db 10 ;人数
m db 7 ;第1个人年龄
h db 3 ;年龄差
a db ? ;第n个人的年龄
data ends ; 定义数据段
sstack segment stack 'stack'
dg db 100h dup(?)
sstack ends ;定义堆栈段
code segment ;定义代码段
start:
mov ax,data
mov ds,ax
mov cl, n ;cl代表人数
mov al, m ;al代表年龄
call renshu ;调用子程序renshu
mov a,al ;保存年龄并返回
mov ah,4ch
int 21h
renshu proc ;子程序,实现递归调用
cmp cl,1 ;人数减1
jne age ;人数不等于1,则转age
ret ;否则直接返回
age: add al,h ;年龄+h
sub cl,1 ;人数—1
call renshu ;递归调用回renshu子程序,继续判断年龄
ret
renshu endp
code ends
end start