西瓜异族 发表于 2013-1-24 11:59:48

ss:sp问题 sp指向问题!!!

assume cs:code,ds:data,ss:stack

data segment
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends

stack segment
    dw 0,0,0,0,0,0,0,0
stack ends

code segment
start:
    mov ax,stack
    mov ss,ax
    mov sp,16【这里】
    mov ax,data
    mov ds,ax
    push ds:
    push ds:
    pop ds:
   
    mov ax,4c00h
    int 21h
code ends
end start



其中sp指向的为什么不是32? 我觉得应该是32才对!!

心碎的梦 发表于 2013-1-24 11:59:49

假如你把栈段和数据段合在一起 然后后把data段当栈使用 那么SP就可以是32了

心碎的梦 发表于 2013-1-24 13:49:17

mov ax,stack
    mov ss,ax


你在这里把stack段当做了栈段
stack segment
    dw 0,0,0,0,0,0,0,0
stack ends
还有这个是字数据
这段成了栈段以后,第一个数据就占了栈段的0和1位置
同样你这有8个这样的数据 那就是0到15,
然后SP指向底部的下一位就是16

西瓜异族 发表于 2013-1-24 15:54:23

心碎的梦 发表于 2013-1-24 13:51 static/image/common/back.gif
假如你把栈段和数据段合在一起 然后后把data段当栈使用 那么SP就可以是32了

非常感谢   和楼上的一结合我就懂啦

西瓜异族 发表于 2013-1-24 15:56:11

心碎的梦 发表于 2013-1-24 11:59 static/image/common/back.gif
假如你把栈段和数据段合在一起 然后后把data段当栈使用 那么SP就可以是32了
非常感谢   和楼下的一结合我就懂啦

jeset 发表于 2013-1-29 09:02:45

DW是字形数据,DD是双字数据,DB是字节数据,所有你这里定义了8个字形数据,一个内存单元是占8位也就是一个字节数据,一个字形数据又等于2个内存单元也就是2个字节。所有你的栈是0-15,因为栈为空的时候栈顶指针指向栈顶的下一个单元,所以就为16
页: [1]
查看完整版本: ss:sp问题 sp指向问题!!!