请教个汇编语言的问题

jy251 2019-09-17 06:04:21
win32 asm 在某个函数中,有个byte数组的指针比如ptr1,首地址存在edi中 操作 add edi,2 //应该是指针右偏移了2byte mov ebx,[eax] mov ebp,edi mov ecx,[eax] 这mov是不是将栈底与这个指针对齐了? 如果是这样的话,那么ebx和ecx是不是同一个数据? 再就是 mov eax,[ffae] add ebp,2 mov ebx,[ffae] ebx是不是数组中,eax偏移了两位后的数据?
...全文
270 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2019-09-19
  • 打赏
  • 举报
回复
ebp 只是在用它来进行函数的参数和局部变量时才起到栈基的意义,其余时候和普通寄存器无异,所以,对 ds:[eax] 的访问没有影响。至于 [ffae] 若是 #4 说的是直接地址(定义在 .data 或 .data? 里),当然也无影响,若是在子程里用 local 定义,通常实际是通过 [ebp-??] 来访问的,ebp 的变化就直接相关了。
jy251 2019-09-19
  • 打赏
  • 举报
回复
引用 7 楼 zara的回复:
ebp 只是在用它来进行函数的参数和局部变量时才起到栈基的意义,其余时候和普通寄存器无异,所以,对 ds:[eax] 的访问没有影响。至于 [ffae] 若是 #4 说的是直接地址(定义在 .data 或 .data? 里),当然也无影响,若是在子程里用 local 定义,通常实际是通过 [ebp-??] 来访问的,ebp 的变化就直接相关了。
好的,谢谢大佬,明白了
zara 2019-09-18
  • 打赏
  • 举报
回复
晕,竟然没看出来罗列的指令和说的问题有什么关系
jy251 2019-09-18
  • 打赏
  • 举报
回复
引用 2 楼 zara的回复:
晕,竟然没看出来罗列的指令和说的问题有什么关系
额。。。 我主要是想问问栈基与ds的取值有没有太大关系
jy251 2019-09-18
  • 打赏
  • 举报
回复
引用 3 楼 早打大打打核战争的回复:
mov ebx,[eax]
mov ecx,[eax]
mov eax,[ffae]
mov ebx,[ffae]
这都是基于DS的访问,和栈没什么关系,虽然win32架构中SS和DS指向同一段,但是段限制不一样
呵呵,大神,我主要是想问问ebp这个栈基如果被修改了,那么[ffae]这同一个取值方式,在ebp被修改前后是否是一样的
jy251 2019-09-18
  • 打赏
  • 举报
回复
引用 1 楼 SuperDay的回复:
ebx和ecx跟栈并没有直接关系吧?它们数据是同样的[eax]指向的内存空间 ebp就是指向ptr1+2 [ffae]是直接寻址的,它是不是就是ptr1呢?你这个前提要说明的,而且ebx寻址跟eax没什么关系吧?
抱歉,没说清楚,我主要是想问ebp作为栈基本指针的寄存器,没有被修改前ds:[eax]的值,是否与mov ebp,edi栈基被修改后的再次取值ds:[eax]相同,期间eax没有任何变化 ffae只是我随便打的一个地址,可以视同直接寻址,其实也就是想问,栈基变化后,ds的取值是否会跟着变化
  • 打赏
  • 举报
回复
mov ebx,[eax]
mov ecx,[eax]
mov eax,[ffae]
mov ebx,[ffae]
这都是基于DS的访问,和栈没什么关系,虽然win32架构中SS和DS指向同一段,但是段限制不一样
铖邑 2019-09-17
  • 打赏
  • 举报
回复
ebx和ecx跟栈并没有直接关系吧?它们数据是同样的[eax]指向的内存空间 ebp就是指向ptr1+2 [ffae]是直接寻址的,它是不是就是ptr1呢?你这个前提要说明的,而且ebx寻址跟eax没什么关系吧?

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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