第五章----过程

控制台窗口:所有windows版本控制台窗口的大小默认是25行乘以80列
可以使用mode命令修改行数和列数(cmd下命令)
  mode con cols=80 lines=80

运行时栈:
  由CPU直接管理使用两个寄存器SS,Esp
PUSH 压栈 -
  过程: PUSH指令首先减少ESP的值,然后把一个16位或者32位的源操作数复制到堆栈上
POP 出栈 +

PUSHFD 压入32位的EFLAGS寄存器的值
POPFD 弹出堆栈的值到EFLAGS寄存器中
PUSHAD 顺序压入所有的32位通用寄存器
POPAD 同上面相反
PUSHA 顺序压入16位寄存器
POPA 同上面相反
过程:
  过程定义:
    main proc
    ...

    main endp
除了启动过程之外的其他过程应以ret指令结束,强制CPU返回到过程被调用的地方
启动过程(main)以exit结束,实际上是调用了 invoke ExitProcess,0
CALL:把返回地址压入堆栈并把被调用过程的地址复制到指令指针寄存器中
RET:弹出程序返回地址,并设置指针寄存器
USES:允许列出被过程修改的所有寄存器,在ret时出栈
  eg. temp proc uses esi eax

  ret
  temp endp

posted @ 2018-03-22 20:46  夏风微凉  阅读(126)  评论(0编辑  收藏  举报