首页
社区
课程
招聘
[求助]汇编栈大小问题
发表于: 2009-6-6 11:33 4004

[求助]汇编栈大小问题

2009-6-6 11:33
4004
如下的代码,本来这样看是对的,但放到debug调试总是提示



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		;设置栈顶ss:sp指向stack:16
      mov ax,data
      mov ds,ax		;ds指向data段
      mov bx,0		;ds:bx指向data段中的第一个单元
      mov cx,8
    s:push [bx]
      add bx,2
      loop s		;以上将data段中的0~16单元中的8个字型数据依次入栈

      mov bx,0
      mov cx,8
   s0:pop [bx]
      add bx,2
      loop s0		;以上使8个字型数据依次出栈并送到data段的0~16单元中

      mov ax,4c00h
      int 21h
code ends
end start


把栈的大小改成16字节这个问题就没有了,到底怎么回事呢?
请各位大牛指教,先谢谢了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
cx = 8
sizeof(sp) = 2

8*2 = 16
2009-6-6 12:41
0
雪    币: 36
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
这样说应该是对的喽
想了一早上,还是不明白为什么
2009-6-6 15:26
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
这个问题很早以前有人问过,找找看。

大概原因好像是因为DEBUG调试器使用部分栈空间保存某些调试信息。
2009-6-6 18:35
0
雪    币: 5
活跃值: (374)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知道你想问什么啊   一个栈 最小必须16字节 这个应该知道吧
2009-6-7 02:28
0
游客
登录 | 注册 方可回帖
返回
//