汇编笔记:通用寄存器及堆栈

通用寄存器

寄存器(32位)主要用途编号
EAX累加器1
ECX计数2
EDXI/O指针3
EBXDS段的数据指针4
ESP堆栈指针(栈底)5
EBPSS段的数据指针(栈顶)6
ESI字符串的源指针;SS段的数据指针7
EDI字符串操作的目标指针;ES段的数据指针8

范围:0–0xFFFFFFFF

通用寄存器模型

堆栈

向堆栈中存入数据

mov [reg],地址编号(栈底)
mov [reg],地址编号(栈顶)
mov dword ptr ds:[reg-4](栈顶-4),立即数
sub [reg]4(将栈顶向上移动四位)

lea [reg],dword ptr ds:[reg-4](先移动栈顶)
mov dword ptr ds:[reg],立即数(将数值存入栈顶)

读取堆栈中的数据

mov [reg],dword ptr ds:[reg(栈底)-立即数]
                        [reg(栈顶)+立即数]

push pop指令

push指令:将数值“压”入栈顶,并将栈顶编号-4/-2;
pop指令:将栈顶中的数值“弹”出到寄存器中,并将栈顶编号+4/+2;
格式:

push 立即数/[reg]
push dword ptr ds:[内存编号]
      word
pop [reg]

注释:
①PUSH指令后 若为立即数或32位寄存器/内存,则栈顶编号-4;若为16位寄存器/内存,则栈顶编号-2(POP指令同理)
②不允许push8位寄存器或内存

pushad popad指令

将八个寄存器中的数值压入/弹出内存

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值