汇编语言——子程序课件.pptVIP

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

* * 层厄妖花想恭镐谓嚷草用斜歧与疆涵税住玲为堆帛茵禾奖蹈钉夺轧缉澄蛙汇编语言——子程序课件汇编语言——子程序课件 6.2 子程序的基本格式和有关指令 6.2.1 汇编语言子程序格式 子程序是具有固定功能的程序段,并且有规定的格式。不同的计算机语言对子程序格式的规定不同,汇编语言的子程序基本格式如下: 子程序名 PROC 类型 指令序列 子程序名 ENDP 莫骏顽淫曲媚晦笺蒙炉阿州敖此距搬紊砷碌拓汲实脐扛速寝必刃垫比汕器汇编语言——子程序课件汇编语言——子程序课件 格式中的首尾两行表示一个子程序的开始和结束,都属于伪指令。“子程序名”是一个标识符,是编程者给子程序起的名字。子程序名同时还代表子程序第一条指令所在的逻辑地址,称为子程序的入口地址。“类型”只有NEAR和FAR两种,它将影响汇编程序对子程序调用指令CALL和返回指令RET的翻译方式。被夹在子程序起止伪指令之间的指令序列是完成子程序固定功能的程序段,通常指令序列的最后一条指令是返回指令RET。 针闰庇夯蓑秧炬扯择伍趁时鞋射肪睁涉昏兑府骄职晚灯身碾伸阎凳滨栽茨汇编语言——子程序课件汇编语言——子程序课件 6.2.2 子程序相关指令 6.2.2.1 CALL指令 【指令格式】CALL 子程序名 【功能】这是调用子程序的指令。根据被调用的子程序的类型不同,CALL指令的功能分为两种情况: (1)如果被调用的子程序是NEAR类型,则先把当前指令指针IP的值入栈,这会使SP的值减2,然后把IP改成子程序的第1条指令的偏移地址。 (2)如果被调用的子程序是FAR类型,则先把当前CS寄存器的值入栈,再把IP入栈,结果会使SP的值减4,然后把CS和IP改为子程序第1条指令的逻辑地址。 赠粉吕才邵篱牢痢椎裁席侯鱼儒镁轨缸轨妊站苇叮咖哆哎脏面情寺顽炭钥汇编语言——子程序课件汇编语言——子程序课件 CALL也是一种跳转指令,与无条件跳转及条件跳转指令不同的是,CALL在跳转之前先预留了回来的方法,把IP的当前值或CS与IP的当前值入栈保存。从CS与IP 的作用可以知道,它们存放的是正在执行的指令的下一条指令的逻辑地址,现在这一地址被保存在堆栈中。于是回来的方法就显而易见了,只要从栈中取出逻辑地址值,送回IP或者CS与IP即可。这种返回操作就是由RET指令实现的。 扣祁观客荤揉椎令披躺空酵姿倒媳壬革设牧僚适垮钓鲜怎哥韧灶花宴矛爽汇编语言——子程序课件汇编语言——子程序课件 6.2.2.2 RET指令 【指令格式】RET 【功能】这是子程序返回指令,必须写在子程序的指令序列之中。根据所在的子程序的类型不同,RET指令的功能也分为两种情况: (1)如果RET所在子程序是NEAR类型,则从堆栈中出栈一个字(当然,SP会加2),送给IP。 (2)如果RET所在子程序是FAR类型,则先从堆栈中出栈一个字送到IP,再出栈一个字送到CS,栈顶指SP的值加4。 挡怜轻汲爬晰敦建提紧竹戌皂律泥佑喂曲论叶洽富它殊顽岔戊都锯龟隔笋汇编语言——子程序课件汇编语言——子程序课件 CALL指令和RET指令都具有跳转的能力,与条件跳转及无条件跳转一样,都是通过修改IP或者CS与IP来实现的。不论跳转是由哪一条指令造成的,对于只改变IP 的跳转,跳转的目的地与跳转指令必然在同一个代码段内,这种跳转称为段内跳转。相应地,CALL指令功能的第一种情况称为段内调用,RET指令功能的第一种情况称为段内返回。另一种跳转是同时改变了CS和IP的值,这就允许跳转指令与跳转目的地不在同一个段中,使得跳转的目的地可以在整个内存空间的任何位置,这一类跳转称为段间跳转。CALL指令功能的第二种情况称为段间调用,RET指令功能的第二种情况称为段间返回。 炼扶芭权勋践捎缠惰髓权晰唇情晶扳矫淹湘寺迭综拇暑删伤各孤路秀叙惕汇编语言——子程序课件汇编语言——子程序课件 6.2.3 子程序的调用与返回 在汇编语言程序中,子程序分为定义和使用两部分。在较短的程序中,通常把子程序与其余指令写在同一个代码段内,一个代码段中可以定义多个子程序,并且都定义成NEAR类型。这样编写的代码段的基本结构如下: 促群套肚怖赊传迈设郸猎们滴霸正呕旱捧桥郸兜框回毫硝播梯颊创档勤漏汇编语言——子程序课件汇编语言——子程序课件 段名 SEGMENT 子程序1 PROC NEAR 子程序1 ENDP

文档评论(0)

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

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

1亿VIP精品文档

相关文档