鱼C论坛

 找回密码
 立即注册
查看: 2908|回复: 11

第六章 检测点6.1(2)

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

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

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

x
检测点6.1

(2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:

assume cs:codesg

codesg segment

        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

        dw 0,0,0,0,0,0,0,0,0,0

start:  mov ax, codesg ;或mov ax, cs

        mov ss,ax

        mov sp, 24h    ;或mov sp, 36     // 主要是这个的 24H 是怎么得来的  求大牛解释
        mov ax,0

        mov ds,ax

        mov bx,0

        mov cx,8

    s:  push [bx]

         pop cs:[bx]   ;或 pop ss:[bx]

        add bx,2  

        loop s

        mov ax,4c00h

        int 21h

codesg ends

end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-30 19:22:19 | 显示全部楼层
24h是16进制,36是十进制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-24 23:25:21 | 显示全部楼层
那是因为栈为空的时候,栈顶应该指向sp+2(字),所以不是32,是36
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-25 17:37:43 | 显示全部楼层
木有发现这个刚好占36字节吗?
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0 
mov sp, 24h是为了使栈顶指针指向栈底。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-25 20:24:30 | 显示全部楼层

这道题目的意思可不可以这样理解啊

将内存0:0~0:15中的内容(这个内容是系统随机的,题目没告诉)给程序中数据(也就是dw的内容)
是不是这个意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-25 21:45:29 | 显示全部楼层
邪恶的非非 发表于 2012-8-25 20:24
这道题目的意思可不可以这样理解啊

将内存0:0~0:15中的内容(这个内容是系统随机的,题目没告诉)给程 ...

对啊,内存0:0~0:15中的内容没人知道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-27 10:21:50 | 显示全部楼层
Seandor 发表于 2012-8-25 21:45
对啊,内存0:0~0:15中的内容没人知道。

前天靠着百度找了些答案,把题目完成了,今天想来温习下,尼玛到循环那里的时候就做不来了!
看来我还是没怎么弄明白push和pop啊,感觉这程序运行的原理始终没搞明白啊~。
重新复习一下push和pop   对了哥们,有什么好的建议没?(我自己是一直看书学的,没怎么去看小鱼的教程,感觉看书比看教程速度快很多啦!)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-27 11:32:34 | 显示全部楼层
邪恶的非非 发表于 2012-8-27 10:21
前天靠着百度找了些答案,把题目完成了,今天想来温习下,尼玛到循环那里的时候就做不来了!
看来我还是 ...

看书确实很快,但是看完一章后最好还是看下视频加深理解(视频可以快进看啊),另外书上的检测点,试验什么的都要亲自动手去做。这样学习已经很快了,我花了一个月学完,不算快,但掌握的还不错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-27 12:00:40 | 显示全部楼层
Seandor 发表于 2012-8-27 11:32
看书确实很快,但是看完一章后最好还是看下视频加深理解(视频可以快进看啊),另外书上的检测点,试验什 ...

呵呵~谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-20 21:12:29 | 显示全部楼层
24H是为了指向栈底的,但我觉得这道题的push和pop在整个循环中连续使用,没有必要使用这么大的栈段,两个字节做栈应该就够了吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-20 21:39:50 | 显示全部楼层
数据段一共定义了18各字单元,占用36(24H)个字节的内存单元,内存地址为CS:0000H~CS:0023H,由于ss=cs,所以栈底单元内存地址为ss:0024H,即sp=24H。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-21 00:22:31 | 显示全部楼层
我认为36确实多了2个字,32就可以了,不过堆栈可以用不完的,剩下俩个字可以不用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 04:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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