汇编语言子程序的设计.pptVIP

  • 18
  • 0
  • 约2.17千字
  • 约 39页
  • 2020-09-02 发布于福建
  • 举报
第7章子程序设计 本章主要教学内容 1.子程序调用与返回指令 2.子程序设计的基本过程和设计方法 本章主要教学目的及要求 1.理解掌握子程序调用与返回指令; 2.掌握子程序设计的基本过程和设计方法; 3.能熟练设计子支程序 第7章子程序设计 7.1概述 7.1.1子程序设计的概念 含义:被独立出来的程序段称为子程序或过程 主程序与子程序之间的关系 主程序 子程序 CALL SUB I SUBI 断点1:) RET CALL SUB2 (断点2:) SUB2 RET 第7章子程序设计 7.1.2子程序的特性 (1)功能独立 (2)通用性 (3)可浮动性 (4)可递归和可重入性 7.1.3子程序的优点 (1)简化了程序设计过程,使程序设计时间大量节省。 (2)缩短了程序的长度,节省了计算机江编源程序的时间和程序的 存储空间 (3)增加了程序的可读性,便于对程序的修改、调试。 (4)方便了程序的模块化、结构化和自顶向下的程序设计。 7.2子程序调用和返回指令 第7章子程序设计 7.2.1子程序调用指令 格式: CALL DST/ NEAR PTR DST 段内直接调用功能:(1)SP←SP-2(SP):IP (2)IP←IP+D16 段内调用 格式:(例 主程序和子穰奭程攣調码鞅PP-2(sP)-IP (2)IP←(EA) 格式例: CALL BX 段间直接调用功CALW0DPR1 (2)IP←子程序偏移地址 段间调用 CS←子程序段地址 王程和子雨所能 CALL FAR PTR MULL 能:(1)SP←SP-2(SP)←CS SP←SP-2(SP)←IP (2)IP←(EA) 例: CALL DWORD PTR[BX] 第7章子程序设计 7.2.2返回指令 含义:实现子程序执行完后要返回主程序的指令 功能:从堆栈的栈顶弹出数据作为返回地址 分类:段内返回和段间返回 从样贵却能为顶弹出将数据分别送入P和(S 段内返回 RETn格式:RETn 功能:IP-(SP)SP←SP+2SP←SP+n RET格式:RET 功能:IP←(SP)sP←SP+2 段间返回 Cs←(sP)SP←sP+2 n格式:RETn 功能:IP←(SP)SP←SP+2 Cs←(SP)SP←SP+2 SP+n 第7章子程序设计 7.3子程序的定义、调用和返回 7.3.1子程序定义 1.子程序定义伪指令 格式 〈子程序名〉 PROC NEAR/FAR 〈子程序名〉ENDP 说明: (1)主程序和子程序在同一代码段中,定义为NEAR型 (2)主程序和子程序不在同一代码段中,定义为FAR型 (3)可将主程序定义为FAR型,看作是D0S调用的一个过程 第7章子程序设计 2.子程序调用方法说明 包括 (1)子程序名; (2)子程序功能; (3)占用寄存器; (4)入口参数; (5)输出参数 (6)子程序调用示例 第7章子程序设计 3.现场保护和现场恢复 现场保护:在子程序的功能实现前把将要用到的寄存器中的原有内 容保存起来 现场恢复:子程序的功能实现后,将数据取出再送回原来的寄存器中 注意:现场德蓓度好相反,D SUBI PROC PUSH A ;现场保护 PUSH BX PUSH CX 子程序功能段 ;现场恢复 POP CX POP BX POP AX RET SUBI ENDP 第7章子程序设计 4.子程序的设计方法 (1)利用过程定义伪指令声明; (2)利用RET指令返回主程序 (3)对堆栈的压入和弹出操作要成对使用 (4)现场保护和现场恢复 (5)应安排在代码段的主程序之外,也可以放在主程序开始之前; (6)允许嵌套和递归 (7)可以与主程序共用一个数据段,也可以使用不同的数据段; (8)编写可以很灵活,但一定要保证堆栈操作的正确性: (9)处理好子程序和主程序间的参数传递问题(见7.4节 (10)提供必要的子程序说明信息。 子程序定义应用举例 第7章子程序设计 【例7-1】求两个数的最大公约数子程序 子程序调用方法说明 子程序名: MCDST 功能:求两个正整数的最大公约数 入口参数:AX和BX中存放两个正整数; 出口参数:CX中存放求得的最大公约数; 寄存器占用:使用AX、BX、CX、DX寄存器,CX中内容被改变 AX、BX、DX中的内容保持不变。 BX:余数不为0更新被除数 CDST PROC NEAR/ FAR MOV BX DX:更新除数 保护现场 ASH BX E

文档评论(0)

1亿VIP精品文档

相关文档