汇编语言程序设计第5章 子程序设计方法.pptVIP

  • 23
  • 0
  • 约8.76千字
  • 约 50页
  • 2020-02-25 发布于辽宁
  • 举报

汇编语言程序设计第5章 子程序设计方法.ppt

2. 组合类型 是告诉连接程序,装入存储器时各个逻辑段如何进行组合。组合类型有6种NONE、PUBLIC、COMMON、STACK、MEMORY、AT。 (1) NONE。表示本段与其他段无连接关系,是独立段。NONE为缺省组合类型。 (2) PUBLIC。表示将本段与其他(具有PUBLIC类型的)同名段连接在一起,形成参与连接模块所共用的物理段,物理段内的连接顺序由连接命令指定。 (3) COMMON。产生一个覆盖段。即具有该类型的同名段拥有同一起始地址,共享相同的存储区,共享存储区的长度由同名段中最长的段确定。 (4) STACK。表示该段为堆栈段,连接方法同PUBLIC。 (5) MEMORY。表示本段在存储器中应定位在所有其他段的最高地址。 (6) AT 表达式。表示按绝对地址定位,段地址就是表达式的值。 3. ‘类别’ 类别名必须用单引号括起来,它不能再作程序中的标号、变量名或其他定义符号。LINK程序将类别名相同的段依次存放在内存中。若这些段没有选择PUBLIC、COMMON、STACK组合类型,则它们仍是各自独立的段。 例5-4 将以下两个模块连接。程序如下: NAME MK1 STACK1 SEGMENT PARA STACK ‘STACK’ … STACK1 ENDS DATA1 SEGMENT COMMON ‘DATA’ … DATA1 ENDS CODE1 SEGMENT PUBLIC ‘CODE’ ASSUME CS:CODE1,DS:DATA1,SS:STACK1 BEGIN: … CODE1 ENDS END BEGIN NAME MK2 STACK1 SEGMENT PARA STACK ‘STACK’ … STACK1 ENDS DATA1 SEGMENT COMMON ‘DATA’ … DATA1 ENDS CODE1 SEGMENT PUBLIC ‘CODE’ ASSUME CS:CODE1,DS:DATA1,SS:STACK1 BEGIN: … CODE1 ENDS END BEGIN 以上定义的段经过LINK连接后,内存分配情况如图5-4所示。 模块MK1的代码 模块MK2的代码 模块MK1的堆栈 模块MK2的堆栈 CODE1 SEGMENT STACK1 SEGMENT DATA1 SEGMENT(MK2覆盖MK1) 图5-4 模块连接后的段组合 注意:若堆栈段按全参数方式定义: 段名 SEGMENT PARA STACK ‘STACK’ 则不仅可省略在ASSUME中的说明,还可省略对段地址的填入。 机械工业出版社 汇编语言程序设计 第5章 子程序设计方法 汇编语言程序设计 第5章子程序设计方法 第5章子程序设计 5.1 子程序设计 5.2 模块化程序设计 小 结 提示: 在程序设计中,经常会遇到在一个程序的不同地方或在不同的程序中,要求实现某些相同的操作,如输入输出字符、代码转换、数制转换、查找与排序等。为简化程序设计、缩短程序设计的周期和程序长度,便于软件交流和共享软件资源,就把那些频繁使用的基本操作编成相对独立的程序段——子程序。如果需要实现某种操作就可以“调用”这些相应的子程序。另外,在功能复杂的大型软件设计时常采用模块化的程序设计方法,将各项任务分解为相应功能的程序模块实现。 5.1.1 子程序概述 主程序也称为调用程序,即含有CALL子程序调用指令的程序。子程序也称为过程,即被调用的程序,其末尾含有1条RET返回指令。主程序根据需要调用子程序,子程序执行完成后又返回到主程序继续执行。其执行过程如图5-1所示 。 …… …… CALL 子程序入口 下一条指令地址 …… …… 第一条指令 …… …… RET 主程序 子程序 5.1 子程序概述 5.1.2 子程序设计方法及应用举例 1. 子程序的特点 1) 每个子程序都应有唯一的入口(即有唯一的子程序名称)。以便程序正确地调用它;子程序应以RET指令作为结束,以便正确地返回主程序; 2)子程序应具有通用性。为了使子程序具有通用性,子程序的操作对象通常采用寄存器或寄存器间接寻址等寻址方式,而不用立即寻址方式 。 3)子程序应具

文档评论(0)

1亿VIP精品文档

相关文档