鱼C论坛

 找回密码
 立即注册
查看: 4246|回复: 7

[争议讨论] 关于SS和SP的问题....

[复制链接]
发表于 2011-5-11 11:43:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-5-19 16:19 编辑

就是我在SS中声明
dw  16dup (0)

然后sp = 20H..这里应该是可以有32字节...也就是16个字....理应上面的16个0全部在ss中....但却只有12个...
如果sp设其他值或者改dw....每次的差值都正好是四.........

但是它每次都只是在ss中显示12个零......不关我怎么写都会有四个dw是不能清零的.....请问这是为什么?谢谢....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-16 21:52:36 | 显示全部楼层
好奇怪!ds中声明 dw  16 dup (0)就没有问题!在ss中就不行。期待高手来解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-16 23:29:43 | 显示全部楼层
本帖最后由 超越自我 于 2011-5-16 23:42 编辑

确实有这么一个问题,我也不理解为什么,针对这个问题我写了一段代码调试了一下:

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

data segment
dw 16 dup(0)
data ends

stack segment
dw 16 dup(0)
stack ends

code segment
start:  mov ax,stack
        mov ss,ax
                mov sp,20h
                
                mov ax,data
                mov ds,ax
                mov bx,0
                mov cx,16   ;   下面的截图是执行到此处的结果
s:                push ds:[bx]
        inc bx
                loop s
                
                mov ax,4c00h
                int 21h
code ends
end start                
                
这是debug截图: QQ截图未命名.png

求高手解释!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-17 14:46:08 | 显示全部楼层
本帖最后由 lxbwyr 于 2011-5-17 16:20 编辑

回答有误,也在寻找中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-17 16:08:58 | 显示全部楼层
DEBUG自己用了
把栈段直接用程序在屏幕上打印出来
应该就可以得到想要的结果了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-5-17 18:33:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-19 00:22:42 | 显示全部楼层
本帖最后由 weixianlang 于 2011-5-19 00:32 编辑

不是压入标志寄存器吧,所谓保护现场,和中断执行程序一样的.
还有就是,它不到20h,只到1Eh!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-19 16:28:39 | 显示全部楼层

我也有想过...但他的SP值还是从你设置那里算起的...而不是清零的最后一位.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 20:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表