. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
寄存器(内存访问)
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
关于习题栈段初始化,sp到底为fffeh还是0000h的问题的思考
[待解决]
回复[
0
次 ] 点击[
344
次 ]
8782711
[帖 主]
[ 发表时间:2010-12-15 11:10 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:2
信誉值:0
注册日期:2010-12-12 20:21
首先关于负数的处理
mov ax,0000
sub ax,0002
执行完后,ax=fffe
再是关于栈的问题
mov ax,1000
mov ss,ax
mov sp,0 mov sp,fffe
mov bx,1 或者 mov bx,1
push bx push bx
由于sp-2,所以第一个sp得0-2与得负数的例子一样得fffe,最小栈顶为10000,出现栈顶环绕
第二个sp就理所应当的等于fffc,最小栈顶为10002,出现栈顶环绕
但是最重要的问题是如何区别sp=0是栈满还是栈空呢?
有些同学提出,用初始sp=fffe处理这个问题,那么同样可以提出当sp=2时,你怎么知道它是栈满还是还差两个字呢?这样到时更难注意和发现,所以我认为设为0000更为妥当,这样栈满sp距离同样值得sp很远
有同学提出栈循环的想法,我不知道这是什么意思,不过对于push,设置了栈顶环绕,对于pop,当我pop到sp=2时,就自动提示错误了,所以我相信在sp=0000时栈满栈空,数值是一样的,但是你可以在使用中区别出来。
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved