鱼C论坛

 找回密码
 立即注册
查看: 3195|回复: 8

要技术值的大侠进来看下,是不是我的理解有偏差。

[复制链接]
发表于 2011-11-24 23:33:08 | 显示全部楼层 |阅读模式
1鱼币
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,0,0,0,0,0,0
start: mov ax,cs
mov ss,ax
mov sp,30h ;将设置栈顶ss:sp指向cs:30

mov bx,0
mov cx,8
s: push cs:[bx]
add bx,2
loop s

mov bx,0
mov cx,8
s0: pop cs:[bx]
add bx,2
loop s0

mov ax,4c00h
int 21h
codesg ends
end start
以上程序实现第3行中的数据段反向排列。

思路是:
1。在数据段后面,开辟一段空间(第4行)
2。设置栈段为cs:30h(第5,6,7行)
3。然后你们都懂了,push,push,push,....pop,pop,pop....逆向交换位置。

以上是王爽第2版128页程序6.3的原代码,我手抄下来的。

以下是不解之处:
第4行为什么定义了16个字型单元呢?
既然是临时存放第3行数据,只要跟第3行一样定义8个word就行了。
是不是我有考虑不周全的地方。


最佳答案

查看完整内容

楼主你的这个问题我学的时候也试过这样做,发现开辟8个字空间是不够的,至少需要12个字空间才行,那四个多余的字空间被放了下一条指令的cs,ip等等的东西,到现在都不知道为什么会这样。书上也没有说明。所以我最后得到的结论就是栈空间要开辟大一点,这样才不会出错。你可以只开辟8个试试看就知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-24 23:33:09 | 显示全部楼层
楼主你的这个问题我学的时候也试过这样做,发现开辟8个字空间是不够的,至少需要12个字空间才行,那四个多余的字空间被放了下一条指令的cs,ip等等的东西,到现在都不知道为什么会这样。书上也没有说明。所以我最后得到的结论就是栈空间要开辟大一点,这样才不会出错。你可以只开辟8个试试看就知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-11-25 07:28:05 | 显示全部楼层
这个自己定义的
你觉得够用就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2011-11-25 09:28:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-11-25 09:28:32 | 显示全部楼层
第五行的mov sp,30h ;是定义局部变量的,指向第三行定义的数据,当大小是自定义的,
但不能小于第三行定义的数据的大小哦,如果太小的话再PUSH就会把第三行定义的数据给覆盖哦。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2011-11-25 09:53:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-11-25 11:18:16 | 显示全部楼层
栈段有时候会存放一些别的数据,比如调用子程序时的cs,ip等等,当然还有一些别的,所以一般设置栈的时候请别吝啬空间,现在是大内存时代,不是过去别瞎省,栈太小会使程序运行出错,经常遇到的情况是提示:cpu遇到无效的指令...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-11-25 20:17:56 | 显示全部楼层
作者喜欢这样 ,没办法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2011-11-25 20:54:12 | 显示全部楼层
ztc123 发表于 2011-11-25 20:17
作者喜欢这样 ,没办法

这不是作者喜欢这样,3楼已经实验过,开辟8个字的空间是不够的,你用T手动试试看就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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