汇编:关于栈
使用push和pop指令时,一直使用这两个指令,如果超出栈的范围,sp会自己归0,还是会越到别的内存,从而读取不是栈的内容?本帖最后由 jackz007 于 2022-9-2 20:55 编辑
当 SP = 0 时,堆栈就到底了,这个时候,如果继续 push 那么,SP 会回卷到 SS 段的顶部继续,数据会被存到 SS : FFFE,SP = FFFE,如果这些内存保存有数据,这些数据就会被破坏,所以,堆栈定义必须做到宁大勿小。 jackz007 发表于 2022-9-2 20:52
当 SP = 0 时,堆栈就到底了,这个时候,如果继续 push 那么,SP 会回卷到 SS 段的顶部继续,数据会 ...
不会出栈吗,内存越界 温良先生 发表于 2022-9-2 20:59
不会出栈吗,内存越界
没错,是越界,但是,别忘了,你是在用汇编语言写代码,一切必须了然于胸。 jackz007 发表于 2022-9-2 21:59
没错,是越界,但是,别忘了,你是在用汇编语言写代码,一切必须了然于胸。
笔记学习链接能发一下吗? jackz007 发表于 2022-9-2 21:59
没错,是越界,但是,别忘了,你是在用汇编语言写代码,一切必须了然于胸。
那那个sp自动变成0了,不是不会越界了吗?
一直使用push或者是一直使用pop,到达栈的界限时,再使用这两个指令,究竟会越界还是不会, 编程追风梦 发表于 2022-9-3 09:36
笔记学习链接能发一下吗?
笔记?36 年前手写的。 本帖最后由 jackz007 于 2022-9-3 10:12 编辑
温良先生 发表于 2022-9-3 09:54
那那个sp自动变成0了,不是不会越界了吗?
一直使用push或者是一直使用pop,到达栈的界限时,再使用这两 ...
记住这个公式
0000H - 0002H = FFFEH
FFFEH 就是 -2
写代码的时候,你心里必须明白的就是这个式子。
或者,你可以用 DEBUG 追一追看一看
debug
-a 100
xor ax,ax
sub ax,2
int3
-g
; 这个时候观察一下 ax 的值
jackz007 发表于 2022-9-3 10:05
笔记?36 年前手写的。
我还以为你是看的小甲鱼的呢{:10_250:}
页:
[1]