汇编初步学习

本文详细解释了x86汇编中的关键指令,如如何使用`Movdwordptr`存储和加载内存,`标志位EFL`的作用,`STOSdwordptr`的内存写入,以及堆栈操作如`Pushpop`、`Call`和`Ret`的原理。同时强调堆栈平衡的重要性,包括清理局部变量和正确处理函数调用参数。
摘要由CSDN通过智能技术生成

Mov dword ptr ds:[内存地址],eax

把寄存器存入内存,

 

Movs 可以操作把内存的值存入内存

 

标志位EFL有32位,每一位的1或0标志不同的作用

八个十六进制位,每一位的数字代表一组bcd码的四位值。DF位也就是从后往前的第10位,当为0时在movs操作是会自动把内存地址相应自动加位,而为1时则为减。

 

STOS dword ptr ds:[]将al/ax/eax中的值传入【】中的内存地址,默认用edi存。

 

REP 用于 重复之后紧跟的操作 按ecx中指定的次数重复。

 

执行之后被传入的地址会自动加1.

 

Push pop 操作堆栈

相当于一次mov进入栈,再移动esp寄存器指针的位置。

 

不能直接用mov操作eip,可以用jmp等效于 mov eip

 

Call 调用函数,将下一行  地址压入栈中,并将eip+4字节,也就是指向当前的返回地址

 

Ret 弹出栈顶,回到存的地址

 

利用push pop使用堆栈传参,当想要操作例如add mov时直接用dword ptr ds:[]调用栈中的相应地址

 

堆栈平衡 :操作堆栈时要有放有取

1.堆栈内部使用堆栈存变量时,要在返回前,将变量清除,不然eip指向变量的地址则会报错

2.压入栈中的子函数的变量,要在函数过程结束后pop掉,否则会在栈顶留下垃圾

Ret x相当于结合两个操作 ret 和pop掉变量

 

 

 

 

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值