饭后温柔

汉堡与老干妈同嚼 有可乐味
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

汇编知识点-过程

Posted on 2013-08-06 15:25  饭后温柔  阅读(229)  评论(0编辑  收藏  举报

非正式定义为以返回语句结束的命名语句块.

使用PROC和ENDP伪指令声明,必须制定一个有效的名字(标识符).

如:

  sample PROC

  ...

  ret

  sample ENDP

程序启动过程之外的其他过程应以RET指令结束.强制CPU返回过程被调用的地方. 

启动过程(main)是特例.必须调用终止程序运行的系统函数.

  main PROC

  ...

  INVOKE ExitProcess, 0

  main ENDP  

 

CALL和RET指令

  CALL指令把返回地址压入堆栈并把被调用过程的地址复制到指令指针寄存器EIP.

  RET总堆栈中弹出返回地址并送到EIP.

 

保存和恢复寄存器

USES操作符

  调用过程,可能因为参数及返回值,改变寄存器的内容.USES可以指定被过程修改的所有寄存器.调用过程时保存这些

  寄存器的值,返回时恢复这些寄存器的值.

  USES应紧跟PROC伪指令.

  arraySum PROC USES esi ecx

  ...

  ret

  arraySum ENDP