鱼C论坛

 找回密码
 立即注册
查看: 2790|回复: 4

第六章的诡异问题,实在是搞不懂啊!请教高手

[复制链接]
发表于 2011-11-29 18:50:01 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 754774889 于 2011-11-29 19:03 编辑

assume cs:code
code segment
     dw 0123h,0456h,0789h,0abch
         dw 0,0,0,0,0
start:mov ax,cs
     mov ss,ax
         mov sp,12h
     mov bx,0
         mov cx,4h
   s:push cs:[bx]
     add bx,2h
         loop s
         mov bx,0
         mov cx,4h
   x:pop cs:[bx]
     add bx,2h
         loop x
         mov ax,4c00h
         int 21h
code ends
end start





上面试我写的代码,为什么执行以后就是不成功呢?可是在定义栈段的那里改成dw 0,0,0,0,0,0,0,0  程序的结果就是正确的。我想问下,就是我定义的栈的空间明明已经够存放那些数据了,不会发生栈顶超界问题,为什么结果还是不正确呢?
还有,我再问下,在debug调试中用什么命令可以一步执行完循环指令,不用一步一步的执行?!谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-29 19:04:30 | 显示全部楼层

回帖奖励 +1 鱼币

最近刚好在复习汇编这两个问题撞枪口了哈。
一,理论上转移多少数据,开僻多大的栈空间。
实际上,执行程序时,栈顶位置总是被系统存放一些CS,IP等数据。这些数据跟程序无关,但不留空间还不行。
好像说最少得留X+3个内存单元。所以课本里留的是X*2的栈空间。
二,P 可以一步完成循环;G可以一步到达指定位置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-29 19:08:07 | 显示全部楼层

非常感谢你的答案,谢谢!!!!
请允许我再问个问题
我们应该留多少空间才会够呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-29 19:10:05 | 显示全部楼层
754774889 发表于 2011-11-29 19:08
非常感谢你的答案,谢谢!!!!
请允许我再问个问题
我们应该留多少空间才会够呢?

哦,不好意思,我没注意看你的答案!我懂啦!谢谢你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-29 19:11:07 | 显示全部楼层
经有关人士测试最少db 13 dup (0) 你用dw就 dw 7 dup (0)就够了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 12:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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