关于栈的使用问题

lwtbn1 2011-03-24 08:46:17
才开始自学汇编,下面的代码(部分),
stack segment
dw 0
stack ends
然后
mov ax,stack
mov ss,ax
mov sp,0003h
就会会出错

如果这样:
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
然后
mov ax,stack
mov ss,ax
mov sp,0010h
就没问题了
这是为什么??
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
alweeq86 2011-03-26
  • 打赏
  • 举报
回复

stack segment
dd 0
stack ends
znxllyuan 2011-03-26
  • 打赏
  • 举报
回复
反正楼上的都对 爱谁谁
lwtbn1 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shzhfu 的回复:]
现在的windows下,OS要占用4个字节的栈空间,你只定义2个字节,就产生了栈溢出。后面的情况在初始状态就不溢出了。
[/Quote]
哦 最少得定义4个字节吗?
masmaster 2011-03-25
  • 打赏
  • 举报
回复
8086下,最小段的空间是10H。
leetow2003 2011-03-25
  • 打赏
  • 举报
回复
stack segment
dw 0
stack ends ;这里定义的栈是2个字节
mov ax,stack
mov ss,ax
mov sp,0003h ;这里给栈指针3个字节,所以出错

stack segment
dw 0,0,0,0,0,0,0,0
stack ends;这里定义的栈是16个字节
mov ax,stack
mov ss,ax
mov sp,0010h;这里给栈指针16个字节,所以正确
shzhfu 2011-03-24
  • 打赏
  • 举报
回复
现在的windows下,OS要占用4个字节的栈空间,你只定义2个字节,就产生了栈溢出。后面的情况在初始状态就不溢出了。
lwtbn1 2011-03-24
  • 打赏
  • 举报
回复
我用的是王爽老师的教材 8086 CPU

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧