首页
社区
课程
招聘
[求助]汇编中字符串传递的问题,大牛们帮忙看下 -__-
发表于: 2007-6-25 04:52 6310

[求助]汇编中字符串传递的问题,大牛们帮忙看下 -__-

2007-6-25 04:52
6310
mov     ecx, ecx
   mov     edi, $00840D56  
   mov     esi, ecx
   mov     ecx, 128h
   rep     movsb

这样做可以把ECX里的字符串传递到内存地址$00840D56中

我定义了一个s:string 的字符串变量在代码里这样写
  mov     ecx, esi
   mov     edi, offset s   //准备写入的地址
  mov     esi, ecx
   mov     ecx, 128h
   rep     movsb
这样程序运行的结果s居然没有被附值 但是运行没报错

后来我又在程序中定义一个 dd 为 dword类型的变量
  mov     ecx, ecx
   mov     edi, dd
   mov     esi, ecx
   mov     ecx, 128h
   rep      movsb
这样写就会报错 经过分析mov     edi, dd 这里dd并不是把自身的地址传给了edi 而是把自身的值传过去了

我的目的是把ECX里的字符串传递到我定义的一个字符串变量里比如s 如果可以直接传递最好了 如果不能的话 就定义一个 dd 的dword变量 然后我再去读这个dd得到这段字符

小弟比较菜 请高手解答一下我应该如何做才可以?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
2
ecx=源字符串地址
s  = 目的字符串地址
128h = 拷贝的字符串长度

mov  esi,ecx
lea  edi, s
push ecx
mov ecx,0128h
cld
rep movsb
pop ecx
2007-6-25 12:28
0
雪    币: 5
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢combojing大哥指点  但是不知道为什么依然报错了 s 是字符串类型吗?
2007-6-25 18:18
0
雪    币: 3758
活跃值: (3337)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
4
要传地址还是地址里面的值, 是由addr/offset修饰符指定的.
2007-7-11 11:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
存的地址就是s的地址吗?你可以定义一个char数组,然后吧数组地址传进去试试
2007-7-16 11:20
0
游客
登录 | 注册 方可回帖
返回
//