汇编—汇编指令

1.汇编指令

复合指令:
lea esp,[esp-4]
mov [esp],eax
使用 vc6 调试观察内存的变化:
这两条指令的组合就是我们学的新指令:push eax。
mov eax,[esp]
lea esp,[esp+4]就是指令 pop eax。

在 80x86CPU 中,eip 寄存器指向的是将要执行代码的位置,
代码本身也是数据,也是由二进制构成。
Intel 指令的长度不同,最短的只占一个字节,最长 15 个字节。

数据包含代码,代码只是数据的一部分,eip 指向的位置才称为代码。
前面提到计算机和数学(算盘)的不同点是计算机是定宽的。
第二个不同点是数学中的算盘只负责存储数据,并是由人操作的,而计算机相当于有两
个算盘,其中一个存储数据,另一个负责操作算盘。
操作和运算本身也是代码,并存在于内存中。但是代码本身不能存放在寄存器,只能放
在内存中,只有数据可以放在寄存器中。但是专门有一个寄存器负责指向执行代码(操作算
盘的人在哪里,在内存中的哪个位置)。eip 是寄存器,所以他的值可以被改变。
计算机取名字是有规则的,以字母、数字或下划线组成,并且不以数字开始。

PUSH:压入堆栈

在这里插入图片描述

esp 指向的堆栈首地址,位置在内存中。由图 2-5 得出,所以当需要往堆栈中添加值
时,堆栈首先要减 4 个字节(因为堆栈增长方向是由高地址到低地址),然后将值填入新位
置。
简化 PUSH eax:
说明:
sub esp,4
mov esp,eax

POP:弹出堆栈

在这里插入图片描述

弹出堆栈与压入堆栈的操作相反。由图 2-7 得出:将要弹出的当前堆栈值赋给寄存器,
然后堆栈加四个字节。POP eax 可以简化成:
mov eax,[esp];
add esp,4;

操作和运算本身也是代码,并存在于内存中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值