首页
社区
课程
招聘
[求助]vc内嵌汇编问题
发表于: 2005-12-23 11:47 4932

[求助]vc内嵌汇编问题

4nil 活跃值
13
2005-12-23 11:47
4932
假设我有一个字符串
char name[]="4nil1234";

这样的话内存 里面就是这样放的
34 6E 69 6C 31 32 33 34

如果我要把
前面4位(34 6E 69 6C)放进EAX
后面4位(31 32 33 34)放进EBX
是不是在内嵌汇编可以这样写?

MOV EAX,[name]
MOV EBX,[name+4]

结果是否是
EAX=6C696E34
EBX=34333231

大哥们看看这样能行吗?

[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
2
why try it ?
u should use dword ptr.
mov eax, dword ptr [name]
mov ebx, dword ptr [name+4]
2005-12-23 12:00
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
3
谢谢!cnbragon
2005-12-23 12:45
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最初由 cnbragon 发布
why try it ?
u should use dword ptr.
mov eax, dword ptr [name]
mov ebx, dword ptr [name+4]


写成"mov eax, [name]"应该没有歧义.
编译器不会转换成"movzx eax, byte ptr[name]"的.
2005-12-23 13:08
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
5
最初由 dwing 发布


写成"mov eax, [name]"应该没有歧义.
编译器不会转换成"movzx eax, byte ptr[name]"的.

应该是的,但用DWORD可能比较稳妥
2005-12-23 13:31
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
6
最初由 dwing 发布


写成"mov eax, [name]"应该没有歧义.
编译器不会转换成"movzx eax, byte ptr[name]"的.

mov eax, [name]
无法编译通过,提示
operand size conflict
意思是说操作数大小不明,编译器为了避免产生歧义,将这个定为error
原因就在于这里,必须要指明是byte or word or dword
2005-12-23 16:53
0
雪    币: 5189
活跃值: (5973)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
7
最初由 cnbragon 发布

你可以用
mov eax, [name]
试试,无法编译通过。
原因就在于这里,必须要指明是byte or word or dword


这个支持。
2005-12-23 16:58
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
最初由 cnbragon 发布

mov eax, [name]
无法编译通过,提示
operand size conflict
意思是说操作数大小不明,编译器为了避免产生歧义,将这个定为error
........


是的.如果name定义为4字节变量就可以了.
看来VC对ASM语句还要详细检查.本来以为最多是个warning
2005-12-23 19:19
0
游客
登录 | 注册 方可回帖
返回