assembly - 确定目的地(寄存器名称或地址)和值
问题描述
mov eax 0x8000
mov ebx 0x10000
lea esp, [ebx+eax*2]
在这里,我知道目的地是 esp。我也知道 LEA(加载有效地址)在这种情况下表现得像移动。但我不确定存储在这个寄存器中的值。我是这样看的:
0x8000 * 2 = 0x80000
0x20000 + 0x10000 = 0x200000
所以价值是:
[0x200000]
我对吗?
解决方案
检查你的算术,但一般来说,你是对的。您正确理解 x86 LEA 指令。
x86 LEA 指令不会取消引用它计算的地址。也就是说,LEA 不去该地址;相反,LEA 只是计算地址以供另一条指令稍后使用。
推荐阅读
- python - 在 django 项目中在哪里编写函数/方法
- c# - Azure VPS 作为 TCP 服务器
- react-native - 旁白 (iOS) 中的 React Native 读出背景不可见的博览会配置文件选项卡
- gimp - 如何从插件运行降噪过滤器?
- html - 如何在 Bootstrap 4 中更改屏幕宽度的同时更改导航栏的颜色
- javascript - html在 Angular 中添加的标签在 Edge 和 IE 中不显示“手”指针
- python-3.x - 调用另一个类中定义的方法
- excel - 如何在 excel 或 OpenOffice 中创建与第三个中的所有值匹配的两列?
- node.js - 第三方重定向到浏览器,而不是后端
- javascript - 当前以 HTML5 结尾时如何播放下一个音轨?