- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
N个人输入人数N和第一个人的年龄,输出结果
一、任务书
题目:有五个人坐在一起,问第五个人多少岁?他说比第四个人大2岁。问第四个人岁数,他说比第三个人大2岁。问第三个人,又说比第二个人大2岁。问第二个人,说比第一个人大2岁。最后问第一个人,他说是10岁。请问第五个人多大。用递归调用的方法设计程序完成本题目。
要求:N个人输入人数N和第一个人的年龄,输出结果。十六进制输出即可,如用十进制更好。画出递归调用子程序的框图。
二、程序流程图
子程序框图
三、源程序
ddata segment ;数据段
p1 db 0dh,0ah,input the ren shu: $
d1 db 5 dup(?)
p3 db 0dh,0ah,shuru diyiren nianling: $
d3 db 5 dup(?)
p2 db 0dh,0ah,The result is: $
d2 dw 10 dup(?)
ddata ends
sstack segment stackstack ;堆栈段
sa dw 100h dup(?)
sstack ends
ccode segment ;代码段
main proc far
assume cs:ccode,ds:ddata,ss:sstack
start : push ds ;初始化
xor ax,ax
push ax
mov ax,ddata
mov ds,ax
dd1: lea dx,p1 ;输入字符串P1
mov ah,09h
int 21h
lea dx,d1
mov bx,dx
mov [bx],byte ptr 3
mov ah,0ah
int 21h
dd2: lea dx,p3 ;输入字符串P2
mov ah,09h
int 21h
lea dx,d3
mov bx,dx
mov [bx],byte ptr 3
mov ah,0ah
int 21h
mov ch,0 ;将输入的人数ASCII码转成16进制
mov si,offset d1+2
mov cl,2
xor ax,ax
xor dx,dx
mov bx,10
l1: mul bx
mov dl,[si]
inc si
sub dx,30h
add ax,dx
dec cl
jnz l1
mov bx,offset d2
mov [bx], ax
mov ch,0 ;将输入的最小年龄ASCII码转成16进制
mov si,offset d3+2
mov cl,2
xor ax,ax
xor dx,dx
mov bx,10
l2: mul bx
mov dl,[si]
inc si
sub dx,30h
add ax,dx
dec cl
jnz l2
mov bx,offset [d2+2]
mov [bx],ax
mov cx,0
mov bx,offset d2
mov al, byte ptr [bx]
mov bl,byte ptr [bx+2]
call sum ;调用SUM子程序递归算出最大的年龄
add cl,bl
mo
文档评论(0)