胡同学 发表于 2019-3-29 21:02:10

视频汇编语言6.2

视频讲解中程序6.2栈空时栈顶指针指向cs:32,但是课本是指向cs:30,哪个是正确的呢

jackz007 发表于 2019-3-29 21:17:07

      首先,堆栈指针指向的是 ss : sp,不是 cs : sp,cs 是代码段。判断 32 还是 30 是正确的栈顶,这要看程序中设计的堆栈段空间是多大。
stack segment stack
    db 32 dup(0)
stack ends
      上面的例子中,为程序设计了 32 个字节的堆栈段,那么,当 sp = 32 时,便是指向栈顶了。

胡同学 发表于 2019-3-30 17:10:41

jackz007 发表于 2019-3-29 21:17
首先,堆栈指针指向的是 ss : sp,不是 cs : sp,cs 是代码段。判断 32 还是 30 是正确的栈顶,这 ...

课本程序6.3中mov sp,30h 设置栈顶ss:sp指向cs:30,但是前面定义的是24个数据一共48个字节,对应16进制是30h,可是栈空时栈顶不应该是30h+2=32h也就是ss:sp不应该是指向cs:32h吗{:10_291:}

jackz007 发表于 2019-3-30 20:17:02

本帖最后由 jackz007 于 2019-3-30 20:22 编辑

胡同学 发表于 2019-3-30 17:10
课本程序6.3中mov sp,30h 设置栈顶ss:sp指向cs:30,但是前面定义的是24个数据一共48个字节,对应16进制是 ...

      再次给你纠正,cs:30 这种提法是严重的概念错误,对一个程序员而言,这个错误是无法容忍的!

      如果堆栈定义了 48 个字节,那么,sp 等于 48 (30h) 时,就是指向了栈顶,这一点不要有任何怀疑,也不要跟我讲任何道理,只要能记住就已经是进步了!

胡同学 发表于 2019-4-2 15:32:49

jackz007 发表于 2019-3-30 20:17
再次给你纠正,cs:30 这种提法是严重的概念错误,对一个程序员而言,这个错误是无法容忍的!
...

我是说堆栈指针指向代码段的地址,课本是这么写的,没和你讲道理

zhenbinhe 发表于 2019-4-6 19:28:51

能不能给我一个汇编视频 的地址呀,我怎么找不到?

胡同学 发表于 2019-4-10 23:02:20

zhenbinhe 发表于 2019-4-6 19:28
能不能给我一个汇编视频 的地址呀,我怎么找不到?

B站就可以看小甲鱼的全部视频{:10_279:}
页: [1]
查看完整版本: 视频汇编语言6.2