汇编指令中的 dword ptr ss ds 请教~~

BlueanGel 2004-08-24 03:02:51
0046EFCF . 8B85 88FEFFFF mov eax,dword ptr ss:[ebp-178]
0046EFD5 . 8B40 04 mov eax,dword ptr ds:[eax+4]

这两句指令中

第一句是将 ebp-178 位置存放的 内存地址指针指向的内容 赋值给 eax

第二句是将 eax 保存的内存地址 +4 ,并取指针指向的值 重新赋予 eax

可是两句中 一个用到 ss ,一个用到 ds ,有什么区别呢?
...全文
4241 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
saiterlz 2004-08-26
  • 打赏
  • 举报
回复
我也应该从头开始学 汇编啦.
south_river 2004-08-24
  • 打赏
  • 举报
回复
这个是基础知识,楼上的两位朋友说的很明白了

我也是刚刚接触汇编 莫于浮沙筑高台 --- 与楼主互勉
dunkel 2004-08-24
  • 打赏
  • 举报
回复
这两条指令实际上并没有使用到段前缀, 因为不需要的, ebp 缺省就是以 SS 为段址, eax 确实是以 DS 为段址的. 这个, 可以从机器码也看得出来, 两个指令中并没有 36h(SS:) 和 3Eh(DS:) 的. 反汇编程序只是为了看的人的方便, 把缺省的段给写上了.
Leoparder 2004-08-24
  • 打赏
  • 举报
回复
看來你是新學彙編的
使用段超越前缀可以指定操作不同的段,獲得不同的物理地址空間
例如:DS中的值為2140,SS中的值為3100
則再運行你的兩條指令時對應的物理地址為2140<<16+[ebp-178],3100<<16+[eax+4]
dodont 2004-08-24
  • 打赏
  • 举报
回复 1
晕了,ss是栈的段寄存器,指示了栈的地址,ds表示数据的段寄存器,指示了数据区的地址啊。

21,494

社区成员

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

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