鱼C论坛

 找回密码
 立即注册
查看: 1220|回复: 8

[已解决]汇编:关于栈

[复制链接]
发表于 2022-9-2 19:57:38 | 显示全部楼层 |阅读模式

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

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

x
使用push和pop指令时,一直使用这两个指令,如果超出栈的范围,sp会自己归0,还是会越到别的内存,从而读取不是栈的内容?
最佳答案
2022-9-3 10:07:39
本帖最后由 jackz007 于 2022-9-3 10:12 编辑
温良先生 发表于 2022-9-3 09:54
那那个sp自动变成0了,不是不会越界了吗?
一直使用push或者是一直使用pop,到达栈的界限时,再使用这两 ...


        记住这个公式
  1. 0000H - 0002H = FFFEH
复制代码

        FFFEH 就是 -2
        写代码的时候,你心里必须明白的就是这个式子。
        或者,你可以用 DEBUG 追一追看一看
  1. debug
  2. -a 100
  3. xor ax,ax
  4. sub ax,2
  5. int3

  6. -g
  7. ; 这个时候观察一下 ax 的值
复制代码


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

使用道具 举报

发表于 2022-9-2 20:52:50 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2022-9-2 20:55 编辑

       当 SP = 0 时,堆栈就到底了,这个时候,如果继续 push 那么,SP 会回卷到 SS 段的顶部继续,数据会被存到 SS : FFFE,SP = FFFE,如果这些内存保存有数据,这些数据就会被破坏,所以,堆栈定义必须做到宁大勿小。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-2 20:59:14 | 显示全部楼层
jackz007 发表于 2022-9-2 20:52
当 SP = 0 时,堆栈就到底了,这个时候,如果继续 push 那么,SP 会回卷到 SS 段的顶部继续,数据会 ...

不会出栈吗,内存越界
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-2 21:59:04 From FishC Mobile | 显示全部楼层
温良先生 发表于 2022-9-2 20:59
不会出栈吗,内存越界

       没错,是越界,但是,别忘了,你是在用汇编语言写代码,一切必须了然于胸。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-3 09:36:31 | 显示全部楼层
jackz007 发表于 2022-9-2 21:59
没错,是越界,但是,别忘了,你是在用汇编语言写代码,一切必须了然于胸。

笔记学习链接能发一下吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-3 09:54:18 | 显示全部楼层
jackz007 发表于 2022-9-2 21:59
没错,是越界,但是,别忘了,你是在用汇编语言写代码,一切必须了然于胸。

那那个sp自动变成0了,不是不会越界了吗?
一直使用push或者是一直使用pop,到达栈的界限时,再使用这两个指令,究竟会越界还是不会,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-3 10:05:55 | 显示全部楼层
编程追风梦 发表于 2022-9-3 09:36
笔记学习链接能发一下吗?

         笔记?36 年前手写的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-3 10:07:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-3 10:12 编辑
温良先生 发表于 2022-9-3 09:54
那那个sp自动变成0了,不是不会越界了吗?
一直使用push或者是一直使用pop,到达栈的界限时,再使用这两 ...


        记住这个公式
  1. 0000H - 0002H = FFFEH
复制代码

        FFFEH 就是 -2
        写代码的时候,你心里必须明白的就是这个式子。
        或者,你可以用 DEBUG 追一追看一看
  1. debug
  2. -a 100
  3. xor ax,ax
  4. sub ax,2
  5. int3

  6. -g
  7. ; 这个时候观察一下 ax 的值
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-3 18:47:12 | 显示全部楼层
jackz007 发表于 2022-9-3 10:05
笔记?36 年前手写的。

我还以为你是看的小甲鱼的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 01:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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