第六章子程序设计本章主要内容:子程序调用与返回指令编制子程序的基本要求子程序设计举例DOS功能子程序调用子程序--在一个程序的不同的地方需要多次使用的某个程序段,将其进行独立编制
调用与返回:在主程序中需要使用该功能时,就转移到子程序执行,执行完后又返回原程序继续执行
这样的程序结构称为子程序设计
1调用与返回指令在汇编语言中,子程序是以“过程”的形式表示
根据被调用过程与调用程序是否在同一个段内,可以分为两种情况
主程序与子程序同在一个段内
这时,子程序的调用与返回只需修改指令指针IP
CODEASEGMENT
CALLPROCAAAA:
PROCAPROC
PROCAENDP
CODEAENDS段内调用与返回右图中指令CALLPROCA就是段内调用
下面CODEB段中的CALLFARPTRPROCB就是段间调用
CODEASEGMENTCODEBSEGMENT
PROCBPROC
CALLFARPTRPROCB
RETPROCBENDPCODEBENDS
CODEAENDS段间调用与返回调用指令与子程序分别在不同的段,这时,需要同时修改CS和IP
执行CALL指令时,先将断点压入堆栈中保存,然后转移到目标单元
1、调用指令指令格式:CALL过程名CALL指令的执行对各标志位无影响
前述程序结构图中,AAA和BBB就是两条调用子程序指令的断点
断点是调用子程序指令CALL的下一条指令的地址
汇编指令书写格式为在CALL之后直接书写过程名(1)段内调用(a)段内直接调用例如:CALLSUB1例如:CALLBXCALLCXCALLWORDPTR30H[BX][SI](b)段内间接调用子程序的起始地址(偏移量)由一个通用寄存器或一个字存储单元提供
调用指令提供一个双字存储单元的地址,它