子程序设计优秀培训书.pptVIP

  • 1
  • 0
  • 约 28页
  • 2017-02-09 发布于江苏
  • 举报
子程序设计优秀培训书

汇编语言程序设计教程 第6章 子程序设计 6.1 子程序的定义与调用 6.2 子程序的参数传递方法 6.3 子程序的嵌套与递归 子程序 在程序设计过程中,经常会遇到一些功能结构相同,仅是某些值不同的程序段在程序中多次出现,这样的重复编写既繁琐又费时。 为此,在设计程序时,将可以多次调用、能完成特定操作功能的程序段编写成独立的程序模块称为子程序。 调用这些子程序的程序称为主程序。 一个子程序应具备重复性、通用性、可浮动性、可递归性和可重入性。 主程序调用子程序通过调用指令CALL来实现。子程序返回主程序的功能由返回指令RET实现。子程序调用时要注意保护现场,子程序返回时要及时恢复现场。 6.1 子程序的定义与调用 6.1.1 子程序的定义 6.1.2 子程序的调用 子程序定义与调用的结构 子程序的适应范围 多次重复使用的程序段; 具有通用性的程序段; 模块化程序结构中的子模块; 具有特殊功能的程序段; 中断服务程序。 采用子程序结构的优点 简化了程序设计过程,使程序设计时间大量节省。 缩短了程序的长度,节省了计算机汇编源程序的时间和程序的存储空间。 增加了程序的可读性,便于对程序的修改和调试。 方便了程序的模块化、结构化和自顶向下的程序设计。 子程序的定义 子程序是用过程定义伪指令PROC和ENDP来定义的,还应指出过程的类型属性,因此,子程序也可称为过程。 在PROC和ENDP之间是为完成某一特定功能的一连串指令,其最后一条指令是返回指令RET。 子程序定义格式 过程名 PROC [NEAR或FAR] ┇ 过程体语句 RET 过程名 ENDP 其中,“过程名”是子程序入口的符号地址,NEAR或FAR是过程的类型属性,它指出对该过程的调用是段内的调用还是段间调用。NEAR用于段内调用,而FAR用于段间调用。 过程属性的确定原则 调用程序和过程若在同一代码段中,则使用NEAR属性。 调用程序和过程若不在同一代码段中,则使用FAR属性。 主程序应定义为FAR属性。因为程序的主过程被看作是DOS调用的一个子程序,而DOS对主过程的调用和返回都是FAR属性。 子程序的调用格式 子程序的调用和返回是由CALL和RET指令完成。 子程序的正确调用和正确返回是执行子程序的基本保证。 CALL指令的格式为:CALL 过程名 为了使子程序正确地执行,除了正确选择过程的属性外,正确使用堆栈也是非常重要的。 例:段内直接调用,显示P CODE SEGMENT ASSUME CS:CODE START:CALL DISP MOV AH, 4CH INT 21H DISP: MOV DL, ’P’ MOV AH, 2 INT 21H RET CODE ENDS END START DISP PROC MOV DL, ‘P’ MOV AH, 2 INT 21H RET DISP ENDP 例:段内间接调用,显示P CODE SEGMENT ASSUME CS:CODE START:MOV OFFSET DISP CALL BX MOV AH, 4CH INT 21H DISP: MOV DL, ’P’ MOV AH, 2 INT 21H RET CODE ENDS END START 例:段间直接调用,显示P CODE1 SEGMENT ASSUME CS: CODE1 START: CALL FAR PTR DISP MOV AH, 4CH INT 21H DODE1 ENDS CODE2 SEGMENT ASSUME CS:CODE2 DISP PROC FAR MOV DL, ’P’ MOV AH, 2 INT 21H RET DISP ENDP CODE2 ENDS END START 例:段间间接调用 DATA

文档评论(0)

1亿VIP精品文档

相关文档