mov dword ptr [ebp-4], 10h

srt266 2009-06-08 10:47:42
__asm
{
mov dword ptr [ebp-4], 10h
}

今天看到这段代码,从来没有在C++中使用过汇编,也没搜到让我明白的答案;
请各位大虾给兄弟指点一下,谢谢!
...全文
2358 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sbxurui 2011-05-05
  • 打赏
  • 举报
回复
[ebp-4]是不是指向nA应该和系统有关吧(大端还是小端)?
H2SO2H2SO2 2009-06-09
  • 打赏
  • 举报
回复
将10h赋给[ebp-4]这个地址
mymtom 2009-06-09
  • 打赏
  • 举报
回复
一看ebp就明白了了。
nicky_zs 2009-06-09
  • 打赏
  • 举报
回复
依次类推,你函数中的第二句:
int nB = 12323;
应该是这个样子:
mov dword ptr [ebp-8], 3023h
nicky_zs 2009-06-09
  • 打赏
  • 举报
回复 1
那就对了。 你给的那句汇编,对应的正好就是 int nA = 0x10; 这句。

mov dword ptr [ebp-4], 10h

mov 是指令,意思是把数据从“源地址”移动到“目的地址”;
10h 就是“源地址”,只不过这里用了一个常数而不是地址
dword ptr [ebp-4] 就是“目的地址”。其中,ebp你可以理解为一个指针,ebp-4则是向下4的偏移处(刚好就是nA的地址)。dword ptr意思是把刚才那个偏移处解释为双字指针,即指向4个字节的内存空间的指针。
lori227 2009-06-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nicky_zs 的回复:]
大概说来,就是把16赋给当前函数体中定义的第一个整形变量。 要讨论详细的情况就把代码贴全。
[/Quote]


void func ()
{
int nA = 0x10;//就是这句了
int nB = 12323;

//......
}

nicky_zs 2009-06-08
  • 打赏
  • 举报
回复
大概说来,就是把16赋给当前函数体中定义的第一个整形变量。 要讨论详细的情况就把代码贴全。
lingyin55 2009-06-08
  • 打赏
  • 举报
回复
mov dword ptr [ebp-4],10h 也是把2<<3算出来了,为16(10h),放入内存
brookmill 2009-06-08
  • 打赏
  • 举报
回复
把0x10赋值给某个4字节整型的局部变量

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧