首页
社区
课程
招聘
一个非常奇怪的问题,高手请求
发表于: 2012-11-28 20:52 3581

一个非常奇怪的问题,高手请求

2012-11-28 20:52
3581
我在VC中嵌入汇编代码,大致如下:
        char ch = -16;
        __asm
        {
                movsx eax, ch // 为什么eax不等于0xFFFFFFF0,而等于其它值
                }
请教各位高手帮忙解答一下?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 219
活跃值: (848)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
2
不能那么写 应该
mov eax,ch =mov eax ,[ebp+8]
mov  sta,eax
或者
leave
retn
打印的都是 0xFFFFFFFFFFFFFFF0
你测试一下吧
2012-11-28 21:04
0
雪    币: 2242
活跃值: (488)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
3
因为ch是x86寄存器。
2012-11-28 21:12
0
雪    币: 7673
活跃值: (5497)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
因为ch是x86寄存器。
把ch改了
2012-11-29 07:15
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
写错了,应该是0ch,而不是ch,一般编译器都很严格

不信你用Nasm编译一下,绝对编译不了
2012-11-29 10:05
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼上几位 正解了
2012-11-29 15:32
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
多谢楼上各位兄弟,搞明白了,主要是我以前写测试代码,习惯把char 变量定义成ch,在汇编中正好ch和16位汇编对上了。
2012-11-30 20:49
0
游客
登录 | 注册 方可回帖
返回
//