鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: wAterLoo

考验大家汇编的基本功

  [复制链接]
发表于 2012-4-1 19:49:27 | 显示全部楼层

肤浅,真正用来传送数据的栈空间只有一个字的空间就够了,用完下一次就用新的数据覆盖了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-1 20:26:20 | 显示全部楼层
本帖最后由 梅梁馨 于 2012-4-1 20:33 编辑
一世芳华 发表于 2012-4-1 19:45
SP最小值为28h。
我们假设SP=SP1+SP2+SP3;
1、由于要复制的是字型数据,且SP每次-2,因此,SP1=f+2=11; ...


讨论一下:
1.以字为单位的时候,什么情况下指针会在11的奇数位置?
2.我认为是Debug中才能看到标志位.这是小问题,主要是flag是什么?占几个什么单元?
3.sp最小值为8H,这个栈无缘无故就空这么多在这里?
:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-1 20:35:00 | 显示全部楼层
梅梁馨 发表于 2012-4-1 20:26
讨论一下:
1.以字为单位的时候,什么情况下指针会在11的奇数位置?
2.我认为是Debug中才能看到标志位.这是 ...

1、这是SP1。。。打比方来的,并不是真正的SP~~并且,即使指向奇数位,也是没有问题的;
2、标志位在控制台中有8个,由于只有0或1,因此是字节,不过,不管是字还是字节~,由于是存在栈内,SP每次移动2个内存单元,所以每个标志位占一个字的空间,空的部分用0填充,即两个字节单元;
3、这个sp不能低于8个字节单元的情况我实验过, 低于8的时候,调试就会报错,我也不知道原因在哪里,估计是系统设置吧~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-1 21:34:43 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-4-1 21:38 编辑
一世芳华 发表于 2012-4-1 19:02
你分析这么多有意义吗? sp小于8h,调试的时候就会报错。。还0呢~~动手才是王道,想破脑袋不如动手试试~~ ...


对不起 在版主没公布正确答案前我坚持我的答案
而且我并不是没有动手测试就发表评论 我相信每个人都有自己的想法 有自己的计算结果 不管结果正确与否
我并不针对别人的结果发表什么看法 最多也就算互相讨论下 毕竟自己和别人的想法不一定一样

-dds:0 f
0000:0000  68 10 A7 00 BB 13 02 0E-16 00 B6 03 B1 13 02 0E
0000:0010  8B 01 70 00 B9 06 1B 02-40 07 1B 02 FF 03 1B 02
-d cs:0 f
1403:0000  68 10 A7 00 BB 13 02 0E-16 00 B6 03 B1 13 02 0E
1403:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-1 22:14:20 | 显示全部楼层
莫名其妙 发表于 2012-4-1 21:34
对不起 在版主没公布正确答案前我坚持我的答案
而且我并不是没有动手测试就发表评论 我相信每个人都有 ...

呵呵,不好意思哈,是我失态~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-1 23:38:35 | 显示全部楼层
期待结果。。学习:Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-4 22:40:54 | 显示全部楼层
答案是0吧,开始认为是12h,以为在dw 0,0,....处取一个空间作为栈保存数据的地方就行了,后来因为题目中说的是将0:0-0:15空间中的数据复制到cs:0-15中,所以,原来空间中的数据就不在需要了,于是我认为是2h,但是这个调试不过去,看了上面他们的答案,发现0是正确的,但是还是不是很明白,就解释。。。:P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-4 23:12:28 | 显示全部楼层
根据12楼的提示,还是有些疑惑,楼主说  要点中有   中断机制,
cpu在执行int n(int21h的时候也要吗?)中段的时候要 标志寄存器入栈,cs,ip 入栈  这要3个字
12楼说的pop的时候要iret这个不清楚
希望楼主能解答!还有多出些这样的题目,虽然这题目我答不上了:'(
支持鱼c!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-4 23:22:43 | 显示全部楼层
agittarius 发表于 2012-4-4 22:40
答案是0吧,开始认为是12h,以为在dw 0,0,....处取一个空间作为栈保存数据的地方就行了,后来因为题目中说的 ...

可是如果这样的话,pop 之后 sp-2 就不是负数了?
还有就是在执行的过程中原数据这样不会遭到破坏吗?
求解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-4 23:23:26 | 显示全部楼层
莫名其妙 发表于 2012-4-1 21:34
对不起 在版主没公布正确答案前我坚持我的答案
而且我并不是没有动手测试就发表评论 我相信每个人都有 ...

可是如果这样的话,pop 之后 sp-2 就不是负数了?
还有就是在执行的过程中原数据这样不会遭到破坏吗?
求解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-5 08:29:59 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-4-5 08:33 编辑
炫动少年 发表于 2012-4-4 23:23
可是如果这样的话,pop 之后 sp-2 就不是负数了?
还有就是在执行的过程中原数据这样不会遭到破坏吗?
...

版主所说的思维障碍我的想法就是 关于 题目只是要求 结果没说相对数据是否存储进去或者被破坏的问题!~

关于sp-2 问题 我前面也说了书上的问题3.12 (第3章69页)关于栈段的一些介绍  用push pop 只修改sp的值      用push一直压栈会导致栈顶环绕覆盖原栈内数据 所以 sp=0-2 以后会得到 sp=fffe
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-5 08:59:07 | 显示全部楼层
8h  凑个热闹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-5 12:45:59 | 显示全部楼层
炫动少年 发表于 2012-4-4 23:23
可是如果这样的话,pop 之后 sp-2 就不是负数了?
还有就是在执行的过程中原数据这样不会遭到破坏吗?
...

前面的问题我也不是很清楚,但是这道题并没有在操作定义的数据,所以直接覆盖就行了。。。不用考虑是否破坏原来的数据。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-5 16:01:21 From FishC Mobile | 显示全部楼层
本帖最后由 离尘※影 于 2012-4-5 16:21 编辑

CS:0~15需要保存结果,理论sp应该为11h,如果不考虑栈溢出,可以为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-5 21:13:15 | 显示全部楼层
研究了很长时间了额,还是不懂。求解!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-7 18:15:35 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-4-7 18:27 编辑
梅梁馨 发表于 2012-3-31 22:52
赞成的顶一下
1.
这题汇编是两个答案:12H和18H.


喔 原来如此 我说题目重点说的调试模式是个啥意思呢 原来是 -t pushf push cs ip
没有debug 没有-t 就没有这些多出来的数据  !~  
我以前说的那些乱七八糟的答案原来都是不合题意的!~
不过还有一点 12h 就不能在调试模式下得出答案了吧!~那结果不是还是18h么?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-4-7 19:12:53 | 显示全部楼层
莫名其妙 发表于 2012-4-7 18:15
喔 原来如此 我说题目重点说的调试模式是个啥意思呢 原来是 -t pushf push cs ip
没有debug 没有-t 就 ...

很抱歉,这个题目临时想的

你那个为0的答按 理论上能行,不过我没试过,
不知道你执行的时候成功了没!
不过题目本身的意义不在于答按,而是希望大家能够思考这个问题
我也是偶然发现的,在debug下,按t ,push进去的数据,前面老是有几个数据被覆盖
不过仔细去看 却发现 前面3个字单元存储的恰好是 cs,ip,还有标志寄存器的值
由此才想到 汇编的中断机制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-7 19:34:51 | 显示全部楼层
wAterLoo 发表于 2012-4-7 19:12
很抱歉,这个题目临时想的

你那个为0的答按 理论上能行,不过我没试过,

喔明白了   不再纠结了 谢版主!~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-8 10:32:57 | 显示全部楼层
梅梁馨 发表于 2012-3-31 22:52
赞成的顶一下
1.
这题汇编是两个答案:12H和18H.

如果不需要保存现场信息的话。。10h不可以吗。。(理论上)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-20 00:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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