炫动少年 发表于 2012-3-21 17:24:26

有关 sp 栈顶指针的问题?

assume cs:codesg
stack 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

wAterLoo 发表于 2012-3-21 17:51:35


炫动少年 发表于 2012-3-21 22:28:12

哦 ,谢谢,那设置 sp也是一种编程规范了?

莫名其妙 发表于 2012-3-22 13:29:57

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为多少是个比较麻烦的错误会导致程序调取的数据出错

炫动少年 发表于 2012-4-4 11:46:28

懂了,很详细!~~~~~~~
页: [1]
查看完整版本: 有关 sp 栈顶指针的问题?