过程设计有关问题

 
 

过程定义语句PROCENDP必须有名字,两者成对出现.

procedure_name    PROC    [ NEAR | FAR ]        ;要说明是NEAR过程或FAR过程.

...

RET        ;RET 返回指令必须与[ NEAR  |  FAR ] 对应

procedure_name    ENDP

注:主程序和所调用的过程在同一代码段中,则定义说明为NEAR属性

    主程序和所调用的过程不在同一代码段中,则定义说明为FAR属性

 

过程文档说明

1.过程名

2.功能说明

3.占用寄存器、工作单元说明

4.输入参数说明

5.输出参数说明

 

现场保护及现场恢复的两种方法

1.利用PUSH指令将过程要占用的寄存器的内容保存在堆栈中,恢复时用POP指令从栈中取出.

如果在主程序用PUSH指令保护寄存器,则要在主程序中用POP指令恢复寄存器.

如果在过程中用PUSH指令保护寄存器,则要在过程中用POP指令恢复寄存器.

SUB1    PROC    NEAR   ;本例在过程中使用PUSHPOP

        PUSH    AX        ;入栈保护 [into stack to protect]

        PUSH    BX

        PUSH    DX

        ...

        POP    DX        ;出栈恢复 [out  stack  to restore]

        POP    BX

        POP    AX

        RET

SUB1    ENDP

2.利用数据传送指令将过程要占用的寄存器的内容保存到指定的内存单元,恢复时再取回到相应的寄存器中.

BUFFER    DW    10    DUP(?)        ;指定的内存单元 [specified  memory block]

...

SUB1    PROC    NEAR

        MOV    DI , OFFSET BUFFER  ;将寄存器存入到内存单元保护 [save memory block to protecte register]

        MOV    [DI] , AX

        MOV    [DI+2] , BX

        MOV    [DI+4] , DX

        ...

        MOV    SI , OFFSET  BUFFER  ;从内存单元取回到相应的寄存器[restored register from memory block]

        MOV    AX , [SI]

        MOV    BX , [SI+2]

        MOV    DX , [SI+4]

        RET

SUB1    ENDP

 

主程序和过程间参数传递的三种方法寄存器传递、堆栈传递、存储器传递

调用过程前,必须把操作中的加工处理数据传送给过程,这些加工处理数据称为输入参数.

返回主程序前,把本次操作的最终结果传递给主程序,这些加工处理所得的结果称为输出参数.

A:寄存器传递  <详细信息>

 

B:堆栈传递   <详细信息>

  

C:存储器传递   <详细信息>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值