版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.,1,六、 子程序,1、过程定义,.,2,六、 子程序,概念:子程序为功能确定、且独立的程序段。 优点: 可以将任何一段独立的程序归整为一个子程序,当需要该段程序时,只需调用子程序即可,调用后会自动返回到调用指令的下一条指令。因此采用子程序设计时,可以简化程序设计。 从调试程序的角度,由于原本在多处出现的程序段,缩减为子程序调用指令,使调试程序更加方便。,.,3,缺点: 采用子程序设计后。由于调用子程序和从子程序中返回需要执行指令,并且为保护某些寄存器的内容,需要进行压入堆栈和弹出堆栈的操作,因此会使程序执行速度受到一定的影响。,六、 子程序,.,4,实现: 子程序调用是通过自动修改(IP)
2、和/或(CS)的内容实现的。 为了确保子程序调用后能够返回到调用指令之后,CALL指令会自动保存返回地址(IP和/或CS),而RET指令会自动返回到CALL指令的下一条指令。,六、 子程序,.,5,2、调用和返回指令,CALL指令:,段内调用 段间调用,段内直接调用 段内间接调用,段间直接调用 段间间接调用,六、 子程序,.,6,IP,CS,.,7,段内调用,子过程与原调用程序在同一代码段,在调用之前会自动把断点的偏移地址压栈(调用指令的下一条指令的地址) 格式: CALL OPR,过程名,断点,入口地址,.,8,段内调用举例,CALL TIMER CALL WORD PTR SI,直接调用,
3、间接调用,.,9,段间调用,子过程与原调用程序不在同一代码段,在调用之前会自动把断点的段基地址和偏移地址压栈。先将断点的CS压栈,再压入IP。,CALL FAR TIMER CALL DWORD PTR SI,.,10,返回指令,从堆栈中弹出断点地址,返回源程序。,.,11,返回指令,格式: RET RETF 近返回:从栈顶弹出两个字节内容送IP, SP内容加2 远返回:从栈顶弹出四个字节内容分别 送IP和CS,SP内容加4,.,12,3、主程序和子程序间的参数传递,入口参数:将主程序给子程序提供的初始数据或获得初始数据的信息称为子程序的入口参数。 出口参数:子程序返回给主程序的结果称为子程序
4、的出口参数。,参数传递可用以下3种方式完成 : *利用寄存器 *利用内存单元(变量) *利用堆栈,六、 子程序,.,13,4、子程序说明文件,六、 子程序,.,14,5、过程的嵌套、递归调用和可重入性。,过程的嵌套,六、 子程序,.,15,递归调用 当子程序嵌套时,若某子程序要调用的子程序就是其本身,则称为递归调用。 过程的重入 当一个公用子程序被某一个程序调用且还未执行完时被另一个程序中断;同时,后一个程序执行时又一次调用该公用子程序,这样公用子程序便被再一次进入。若该公用子程序的设计能保证两次调用都得到正确结果,则称该公用子程序具有可重入性,六、 子程序,.,16,例 子程序设计,编写子程
5、序实现统计一个字(AX)中“1”的个数。 解:利用移位指令或循环移位指令,每次对CF位进行检测位: 当CF=1时,则总个数加1; 当CF=0时,则总个数不变。 这种操作可以采用有条件转移指令来实现,但更方便的方式是采用ADC指令实现。子程序如下:,六、 子程序,.,17,COUNTER1 PROC NEAR PUSH AX MOV CX,16 XOR BL,BL COU1: SHR AX,1 ADC BL,0 LOOP COU1 POP AX RET COUNTER1 ENDP,六、 子程序,.,18,例 子程序应用。利用上例设计的子程序,统计字型变量VAR1中1的个数。 解:在数据段中定义变量VAR1和CounterVar1: VAR1DW1234H CounterVar1 DB ? 则可在代码段中编写程序: MOV AX, VAR1 CALL COUNTER1 MOV CounterVar1,BL 执行后,结果单元CounterVar1的值为5,说明1234H中包含有5个“1”。,六、 子程序,.,19,例 编写程序,完成将一组BCD 数转换成16 位二进制数。(BCD 数转换成16 位二进制数用子程序实现),BCD 数转换成16 位二进制数的算法步骤为: DX=0;(用DX 存放结果) 取要转换的一组BCD 数中的高位(AX) (D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026河南漯河市中医院招聘劳务派遣人员2人考试备考题库及答案解析
- 2026国家税务总局广西壮族自治区税务系统公开招聘事业单位工作人员20人备考考试试题及答案解析
- 2026汉中市汉台区雅居乐南区幼儿园招聘备考考试题库及答案解析
- 2026四川成都市双流区中医医院第一批编外人员招聘医师2人笔试备考试题及答案解析
- 2026云南保山市昌宁县财政局招聘公益性岗位人员5人考试备考试题及答案解析
- 寒假就业活动策划方案(3篇)
- 2026年甘肃省兰州市城关区人民政府雁南街道办事处公益性岗位招聘笔试模拟试题及答案解析
- 2026年上半年浙江杭州市妇产科医院(杭州市妇幼保健院)高层次、紧缺专业人才招聘15人(总)备考考试题库及答案解析
- 2026中华人民共和国打洛海关城镇公益性岗位人员招聘2人(云南)考试参考题库及答案解析
- 2025湖南郴州市永兴县基层医疗卫生单位招聘专业技术人员选岗15人笔试模拟试题及答案解析
- 2026年湖南师大附中双语实验学校(南校区)教师招聘备考题库完整参考答案详解
- 2026年广州市黄埔区穗东街招考编外服务人员易考易错模拟试题(共500题)试卷后附参考答案
- 黑龙江高职单招语文试题附答案
- 高低压配电安装工程施工方案方案
- 2026年中国烟草专业知识考试题含答案
- 2026云南新华书店集团限公司公开招聘34人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年人教版八年级语文上册期末考试卷含答案
- 造纸业五年环保化:2025年竹浆环保再生纸行业报告
- 学校零星维护维修方案
- 网站对历史发布信息进行备份和查阅的相关管理制度及执行情况说明(模板)
- NB-T 47013.1-2015 承压设备无损检测 第1部分-通用要求
评论
0/150
提交评论