鱼C论坛

 找回密码
 立即注册
查看: 997|回复: 2

关于 8086汇编语言 “栈” 的一点疑惑

[复制链接]
发表于 2022-12-15 17:49:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 孤不冷cing 于 2022-12-15 17:50 编辑
  1. 纯属出于好奇问一下各位,没有答案的话我也不打算深究
  2. 操作环境为dosbox+debug
  3. 大致命令如下(我不知道怎么在dosbox里复制内容,看得清图片的话就看一下图片吧)
  4. a 2000:0
  5. mov ax,6666
  6. push ax
  7. mov ax,8888
  8. push ax

  9. r cs
  10. 2000
  11. r ip
  12. 0

  13. r ss
  14. 1000
  15. r sp
  16. 20

  17. t
  18. t
  19. d 1000:0 1f

  20. t
  21. t
  22. d 1000:0 1f

复制代码


问题:栈顶所指地址的前面大概10字节,总是这样一些数“xx xx 00 00 0n 00 00 20 a3 01”,并且他们会随着栈顶而移动
经过观察,“xx xx”就是上一次入栈的内容,“0n”则是“07”~“09”循环
有知道的大佬可以满足一下小白的好奇心吗(好奇心贼拉拉的浪费时间

1.jpg
2.jpg
3.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-15 21:59:01 | 显示全部楼层
本帖最后由 孤不冷cing 于 2022-12-15 23:06 编辑

有办法删帖吗,我发现书后面有这个问题,是我想太多,想太前了,有点拖慢学习进度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-15 23:05:33 | 显示全部楼层
本帖最后由 孤不冷cing 于 2022-12-15 23:09 编辑

试了一下,发现原本的说法有些错误
目前的发现是这样:
栈顶所指的字节的前10个字节,由低到高,分别为"AL"和"AH"、"BP"、“IP”、“CS”
最高的两字节的内容始终不变,且我多开debug测试,始终是A3、01,这与书上的9D、05不一致,不知道这两字节是什么内容
此外,
用“RIP”修改“IP”,相应内存的内容不会变,只有执行指令时,“IP”发生变化,内存里相应内容才会变化
进行入出栈操作,这些内容会随着栈顶的改变而移动,但是内容不会改变,且入栈时会覆盖低字节原本的内容,出栈时“AX”原本所占的位置的内容会留在原处不变,剩余部分右移
综上,我推测,可能是CPU将这些寄存器的值放在了“SP”所指的栈顶的低10字节,用于调用?查询?
或者说与书中提到的,后面的重点内容“中断”,有联系?
为了保护?应该不是,“IP”的内容一直在修改。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-3 20:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表