首页
社区
课程
招聘
[旧帖] [求助]vc内联asm 和 汇编问题 0.00雪花
发表于: 2007-6-13 11:51 5799

[旧帖] [求助]vc内联asm 和 汇编问题 0.00雪花

2007-6-13 11:51
5799
初学汇编 希望下面的问题解答详细点 多谢!
问题1、
   MOVZX EAX,BYTE PTR DS:[0x12fd22]和MOVZX EAX,BYTE PTR DS:[0x12fd20+2]有什么区别?执行完后EAX的值是不同的。后边哪个算什么寻址方式?

问题2、
在VC下 这样的函数怎样才能执行不出错,是否是平衡堆栈问题?
dword func(dword* pNum)
{
      _asm
             {
                       MOV ESP, 0x1234567 //说明:只用ESP保存临时变量值,不用其他寄存器
             }  
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
若不是堆栈问题我把我自己卖给你.
2007-6-13 12:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2007-6-14 07:44
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
esp ebp这2个寄存器是不允许使用的
2007-6-14 11:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
MOV ESP, 0x1234567             //改变了堆栈的指向!
应该是这样吧:
mov ss:[esp], 0x1234567

MOVZX EAX,BYTE PTR DS:[0x12fd22]和MOVZX EAX,BYTE PTR DS:[0x12fd20+2]
我觉得上面应该是一样的,不一样就太难想象了!
2007-6-15 16:43
0
雪    币: 202
活跃值: (77)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6

MOV ESP, 0x1234567   
mov ss:[esp], 0x1234567

两个都不行哟
第一个堆栈会溢出的
第二个覆盖了返回地址
2007-6-16 05:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哈哈
区别是一个是[0x12fd22]一个是:[0x12fd20+2]
寻址方式不一样,前面的是直接寻,后面的是相对寻......
2007-6-16 08:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哈 回答都有意思 我如果先push esp,最后再pop esp呢 该怎么作呢
2007-6-21 15:37
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
9
mov ss:[esp], 0x1234567

mov dword ptr[esp],0x1234567
在C里是等价的吗?
我理解的[ESP]空间是很大的哟,要定义一个宽度才可以写东西吧!
2007-6-22 09:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
都是高手,汇编语言都忒厉害了!希望能向大家学习!
2007-6-25 09:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习中............
2007-6-25 15:15
0
游客
登录 | 注册 方可回帖
返回
//