请教,dw 占位部分数据写不进去。

SilentHunter460 2021-04-13 01:21:54
代码运行结果如下,为什么栈段里的数据有一部分,到BBBB以后就不按我代码的数据了。


...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2021-04-13
  • 打赏
  • 举报
回复
单步命令 t 或 p 及运行命令 g 都涉及到中断,就都会使用到堆栈的;看堆栈最后,以 word 为单位向前看,分明是 标记寄存器、返回的段址即当前程序的cs、返回地址的 ip即 ip=0010 那里,这就是标准的中断发生时的压栈现场啊。
SilentHunter460 2021-04-13
  • 打赏
  • 举报
回复
引用 2 楼 zara 的回复:
那是 stack 堆栈段哎,单步以及 g带地址,都会用到的,就是内容被覆盖了。要看,在刚载入程序时看吧,就是要换算下 ss,或者 stack segment stack 这样定义 stack 段,会自动设置 ss:sp 无需程序自己进行赋值。
你好,谢谢回复。 已经把代码段、栈段、数据段分开了,也没有对栈做push,为什么stack会被覆盖内容?从截图中也看到,ds ss cs的段地址相距甚远。
zara 2021-04-13
  • 打赏
  • 举报
回复
那是 stack 堆栈段哎,单步以及 g带地址,都会用到的,就是内容被覆盖了。要看,在刚载入程序时看吧,就是要换算下 ss,或者 stack segment stack 这样定义 stack 段,会自动设置 ss:sp 无需程序自己进行赋值。
SilentHunter460 2021-04-13
  • 打赏
  • 举报
回复
引用 4 楼 zara 的回复:
单步命令 t 或 p 及运行命令 g 都涉及到中断,就都会使用到堆栈的;看堆栈最后,以 word 为单位向前看,分明是 标记寄存器、返回的段址即当前程序的cs、返回地址的 ip即 ip=0010 那里,这就是标准的中断发生时的压栈现场啊。
原来还有这么一个知识点,我还学到。 我以为栈也是一段完全由用户自定义的空间,以为没有push就没有变化,没想到什么中断还会影响栈。
SilentHunter460 2021-04-13
  • 打赏
  • 举报
回复
准确地说是很多数据都没按我写的来记录到内存里,可能大部分记录正确,也可能大部分记录不正确。 难道dw只负责占位,不负责记录准确数据?

21,459

社区成员

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

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