子程序设计1.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
子程序设计1

CMP DX,0 JZ lab2 lab2: INC BYTE PTR [t+1] ;是闰年,把天数加1,设置出口参数 lab1 : POP DX //出栈 POP CX POP BX POP AX RET Jud1: ENDP 6.2.2 用寄存器传递参数 通过寄存器传递数据或数据地址。 通常选择AL、AX、DX:AX(或EAX)传递字节、字或双字。 传递16位偏移地址最好选择SI、DI或BX, 传递32位地址可以用DS:BX、DS:SI、DS:DI、ES:BX、ES:SI或ES:DI等。 【例6.4】用寄存器传递参数,编写例6.3要求的子程序。 【解】 ;功能:判断一个年份是否为闰年 ;入口:AX = 公元年份 ;出口:CF,1表示是闰年,0表示非闰年 ;破坏寄存器:AX jud PROC NEAR PUSH BX PUSH CX PUSH DX MOV CX,AX ;临时保存年份值 MOV DX,0 MOV BX,4 DIV BX ;除以4,为预防溢出,用双字除以字 CMP DX,0 JNZ lab1 ;不能整除4则不是闰年,转 MOV AX,CX ;取回年份值 MOV BX,100 DIV BX ;除以100 CMP DX,0 JNZ lab2 ;不能整除100则是闰年,转 MOV AX,CX MOV BX,400 DIV BX ;除以400 CMP DX,0 JZ lab2 lab1: CLC ;把CF清0表示非闰年,设置出口参数 JMP lab3 lab2: STC ;把CF置1表示是闰年,设置出口参数 lab3: POP DX POP CX POP BX RET jud ENDP 对于DX中存放的年份值,需要先放到AX中,才能调用子程序jud,然后以调用返回后的CF值决定是否把t数组中表示2月份天数的[t+1]加1。程序段如下: MOV AX,DX CALL jud ADC BYTE PTR [t+1],0 ;原值+0+CF 6.2.3 用地址表传递参数 建立一个地址表,存放所有参数的地址,传递地址表的首地址给过程。 这种方法特别适合于参数较多的情况。 6.2.4 用堆栈传递参数 过程从堆栈得到入口参数,返回前将出口参数写入堆栈;调用者通过出栈得到返回参数。 过程从堆栈存取参数时,通常使用BP,因为其隐含的段地址在SS中。 采用堆栈传递参数时,典型的过程结构如下: 的字节数。 StdProc proc near push bp mov bp, sp ; BP指向当前栈顶,用于取入口参数 ... pop bp ret ParmSize ; 返回前从堆栈移出入口参数 StdProc endp 其中,ParmSize是过

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档