鱼C论坛

 找回密码
 立即注册
查看: 2141|回复: 6

请教关于试验5的问题

[复制链接]
发表于 2012-2-16 22:37:12 | 显示全部楼层 |阅读模式

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

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

x
在试验5的第二题中,有如下栈段:
stack segment
dw 0,0
stack ends
我有几个问题不明白,请大家帮帮我!
1. 此处定义栈段的大小为4个字节,为什么在代码段中还将sp赋值为16,为什么不赋值为4呢?
2. 带着这个疑问,我将sp赋值为4,运行程序过程中提示CPU遇到无效指令,是什么原因呢?
file:///C:/Documents
我再将sp改为8,还是相同情况
file:///C:/Documents
3. 再将sp改为9,则在执行mov ss,ax时直接就跳出debug了,这又是什么原因呢?

4.对于5.2题的第4个问题,甲鱼大大的答案是16x(N/16+1),但是他举的两个例子,N=17和N=9,N=17的时候实际占有空间为32,N=9时实际占有空间为16;这两个例子和鱼大给的公式不太符合,是不是应该这样理解:设实际占有空间为X,X为16的倍数,且N<X<(N+16)



                               
登录/注册后可看大图
该贴已经同步到 风剑河的微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-16 23:37:09 | 显示全部楼层
不会挂图片,我把程序出问题时的提示信息写出来,如下:
命令提示符- debug 56.exe
NTVDM CPU 遇到无效的指令
CS:0000 IP:0077  0P:f0 37 05 10 02 选择“关闭”终止应用程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-17 05:00:19 | 显示全部楼层
本帖最后由 没个正样 于 2012-2-17 05:01 编辑

试试这个。

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

data segment
    dw 0123h,0456h
data ends

stack segment
    db 0,0,0,0,0,0,0,0,0,0,0,0
stack ends

code segment
start:
    mov ax,data
    mov ds,ax
   
    mov ax,stack
    mov ss,ax
    mov sp,12
   
    push ds:[0]
    push ds:[2]
    mov ax,4c00h
    int 21h

code ends
end start
声明定义12个字节的栈来存储二个字型的数据,就可正确地通过!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-17 09:06:32 | 显示全部楼层
通过不是目的,我想知道为啥会出现那些情况……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-18 00:34:36 | 显示全部楼层
:'(高手大哥些,有人能帮帮我吗?求解答~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-21 21:15:21 | 显示全部楼层
没人帮我解决疑问,继续求助中……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-21 19:29:48 | 显示全部楼层
e  wo 也正看呢 应该是栈段最少要分配16个字节 你强制弄小的话 应该就出错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 00:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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