汇编语言(2)--过程

堆栈操作

ESP:堆栈指针寄存器。总是指向栈顶。
入栈操作:运行时堆栈在内存中是向下生长的,即从高地址向低地址扩展。
出栈操作:ESP之下的堆栈域在逻辑上是空白的,当前程序下一次执行任何数值入栈操作指令都可以覆盖这个区域。
堆栈应用:

  1. 当寄存器用于多个目的时,堆栈可以作为寄存器的一个方便的临时保存区。在寄存器被修改后,还可以恢复其初始值。
  2. 执行call指令时,cpu在堆栈中保存当前过程的返回地址。
  3. 调用过程中,输入数值也被称作参数,通过将其压入堆栈实现参数传递。
  4. 堆栈也为局部变量提供了临时存储 ————————————————————————————————————————————————————————
    PUSHFD:把32位EFLAGS寄存器内容压入堆栈
    POPFD:把栈顶单元内容弹出到EFLAGS寄存器中。
    通常会用这两个封闭一段代码:
pushfd    ;保存标志寄存器
;
;
;
popfd     ; 恢复标志寄存器

PUSHAD:指令按照EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI将所有32位寄存器压入堆栈。
POPAD:指令按照相反的顺序将同样的寄存器弹出堆栈。
PUSHA:应用于16位
POPA:应用于16位
————————————————————————————————————————————————————————

定义并使用过程

PROC伪指令:过程用proc和endp来定义,并且为其分配一个名字,ret强制cpu反返回到该过程被调用的位置

main PROC
.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值