有关 sp 栈顶指针的问题?
assume cs:codesgstack segment
db 8 dup (0)
stack ends
codesg segment
mov ax,4c00h
int 21h
start:
mov ax,stack
mov ss,ax
mov sp,16 ;即使没有这一句 也能正确运行的原因?
mov ax,0
push cs
push ax
retf
codesg ends
end start
哦 ,谢谢,那设置 sp也是一种编程规范了? stack segment
db 8 dup (0)
stack ends
你在程序开始前就给定义了stack 为16字节了所以 sp 不给值也能在程序调试的时候发现 当你mov ss,ax sp 给赋值成10h了
如果你没在前面定义stack segment 那么执行mov ss,ax sp 的值就是0000
没有定义stack segment 又没有给定sp为多少是个比较麻烦的错误会导致程序调取的数据出错 懂了,很详细!~~~~~~~
页:
[1]