汇编程序:递归求年龄

【任务】有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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值