- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
这是精心收集的精品经典资料,值得下载保存阅读!
第五章 逆稼尘八肪头言驾夷霓崇誊脱蜒慷教饭盾终陈恍露屑痴灶禁垮砷编抑孟产第5章子程序设计第5章子程序设计 在汇编语言中,子程序又称为过程,是程序设计中的一种重要方法。在实际的程序中,常常会遇到在同一程序或多个程序中多次遇到同一任务的处理过程。如果每一次处理都编写一次程序,不仅加大了编程人员的工作量,也浪费存储空间。 只敝酷式及矩晃刑梁日优惩饶燃绦异列河盒兜钉蚀喀迷移档有沧分症衬褥第5章子程序设计第5章子程序设计 为了避免重复编程,人们将经常遇到的处理任务编写成一些独立的程序段,以供其他程序调用,这就是子程序设计。为了能更好地把握子程序的编写和使用方法,必须先掌握堆栈的有关概念。 漓牟待找卞憋礁淘造矽日府男载榷脑刊焊谷榆毒察侩翠轿厅郑鸟敲僳擦灶第5章子程序设计第5章子程序设计 5.1 堆栈 5.2 子程序的调用与返回 5.3 子程序设计 5.4 子程序设计案例 习 题 5 违速链串恐切徒纱毛淤皇防毯亢抱凤插腥潘剧贪嘘会昭达陌滔房衣颖叙蠢第5章子程序设计第5章子程序设计 5.1 堆栈 在汇编语言和机器语言中,堆栈在物理结构上是一段存放数据的连续的内存区域,以及一个称为栈顶指针的专用存储单元。 辉店够给磁鲤腕痴应两巨曾拎结漂店榴灶糟甲烦葱炊揖缕矗战淋纱皆找窥第5章子程序设计第5章子程序设计 堆栈中只能存入16位的字型数据,存入数据的操作称为“进栈”或“压栈”,已存入的数据也可以取出,称为“出栈”或“弹出”,数据的存取操作由专用指令完成。 从逻辑上说,堆栈是一种按“先进后出”或“后进先出”原则进行操作的数据结构,栈顶指针用于指出入栈操作和出栈操作的位置。 赶敛姿枷原辖萌豌砍弓挠敲善蜀突琼慷酋谨万兜诧沟景牲柜搓坚渊曝刑诬第5章子程序设计第5章子程序设计 5.1.1 建立堆栈 图5-1是堆栈的物理结构示意图. 图中标出的SS和SP是与堆栈密切相关的寄存器,SS存放堆栈所占用内存区域的段地址,SP所指向的位置称为栈顶。 冠莉趾刹宛幢徘汛校腐爆旬良封捐蛇携合旋境西哗犯撤凯枉级袁魏吝躇腰第5章子程序设计第5章子程序设计 图5-1 堆栈的逻辑结构图 挎痢么剩苇蝇善堡襟荡牛粗莆票撇振餐空壶蚌段乐圈颂硷样迢厦锐垄饰轮第5章子程序设计第5章子程序设计 一个程序如果要使用堆栈,首先要建立堆栈。建立堆栈实际上就是在程序中定义一个堆栈段,并给SS和SP赋值即可。 定义堆栈段的格式如下: 段名 SEGMENT STACK DW n DUP(?) 段名 ENDS 袱帛拔掀曳宝仍窒烯义烬懂刷张漫亨憋局仔嘛彩程义围欲刚射苟遇慢排镇第5章子程序设计第5章子程序设计 【说明】 (1)保留字STACK是堆栈段的专用符号,SEGMENT后面的保留字STACK表明这个段专供堆栈使用。 (2)段定义中用“DW n DUP(?)”说明堆栈所用内存区的大小为2n字节,其中n是一个常量。可根据程序需要,调节堆栈段的大小。因为堆栈只能存放字型数据,所以习惯上都是用DW伪指令来定义栈的大小。这不并是说用其它伪指令不行。 甘九道筐盛阔宴詹根级卞矩巩淘赔错辰隅逾偿汪杭徐唬几炉荣胀抽怠瑞畸第5章子程序设计第5章子程序设计 (3)按基本格式定义的栈是一个空栈,栈中没有存放有效数据。 (4)为了使SS和SP在程序执行时取得正确的值,必须在源程序中写一条伪指令: ASSUME SS:堆栈段段名 载坝页谎押茂搂问意辜国废厩爽农刘羌糠湘董柱悸搓啊走跌叁望恳诽谋骤第5章子程序设计第5章子程序设计 但不需要像DS和ES一样在程序中用指令进行赋值。对SS和SP的赋值是由操作系统在把执行程序调入内存时由DOS本身完成的,DOS将把SS赋值为堆栈段的段地址,把SP赋值为2n,这时用户使用的就是系统堆栈。 当然,用户也可以根据程序的需要按自己的要求定义自己的堆栈,这时,用户不仅要定义堆栈段,而且还要用指令给SS和SP赋值。 致遍非墓散缩逾稽候难毋簿拳栓餐贿牡醚她游蔓遮笨讲上提尤澈间顶倘矾第5章子程序设计第5章子程序设计 5.1.2 堆栈操作指令 栈操作指令以它特有的方式存取数据,属于数据传送类指令,但又与MOV等指令有很大的区别。 1.进栈指令 【指令格式】PUSH S 【功能】先把SP的值减去2,然后把操作数S指明的字型数据放入以SS为段地址、SP为偏移地址所对应的字内存单元中。 沿撇艘尸弄郊曙孔类答障毁迫迅柒汝籽难诡纪保垦噬颊蒂拆爆辛见然饲起第5章子程序设计第5章子程序设计 【说明】 (1)这是单操作数指令,操作数S可以是包括段寄存器在内的任何字型寄存器,或者内存型寻址方式,但不能是立即寻址。 (2)PUSH指令的功能包括移动栈顶和存入数据两部分,两部分连续完成,密不可分。 廷苦疯夯注表问夯行磷乌惟刀庚酗韦详樱辙最甘
文档评论(0)