鱼C论坛

 找回密码
 立即注册
查看: 3502|回复: 16

监测点10.5

[复制链接]
发表于 2014-10-31 19:23:23 | 显示全部楼层 |阅读模式
2鱼币
QQ截图20141031192328.png 答案中的 IP=11 是怎么算出来的 求解

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

使用道具 举报

发表于 2014-11-1 01:34:56 | 显示全部楼层
同问..........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-1 09:41:31 | 显示全部楼层
好久没看汇编,都不熟悉,错了见谅



call前面有5个赋值语句
每个占2字节(00 00);
call占2字节

偏移地址=5*2+2=12
起始地址=0   ;也就是从0开始数12个数
ip=11
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-1 09:53:21 | 显示全部楼层
血月 发表于 2014-11-1 09:41
好久没看汇编,都不熟悉,错了见谅

我知道了 但是 执行call指令后就跳到栈段货或DS段了,,为什么答案是3呢?  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-1 10:06:28 | 显示全部楼层
我 知道 为什么了  在执行call的时候 就几经自动把IP加了此时的IP指向 INC AX  用U指令查看 也就是11,
上面 几经吧 DS和SS指向了同一个 地方,  执行CALL 前会PUSH ip 在 JMP S的。(不懂翻书,懒得打字),几经吧11压入栈中了,但是DS和SS指向同一地方,就算是共享吧,(语言表达能力不强),之后就跳了    结果就跳到11这里 也就是 INC AX 就是 ~~~~~~~  ax=3 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-1 10:41:32 | 显示全部楼层


原栈顶=16
压入cs ip就变成14了  ;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-1 10:48:47 | 显示全部楼层
我认为这个不是11,应该是ip=13。
B8670B     mov ax,stack   ip=0000
8ED0         mov ss,ax        ip=0003
BC1600     mov sp,16       ip=0005
8ED8         mov ds,ax       ip=0008
B80000     mov ax,0000   ip=000A
call时IP = 000A+3 =000D.
所以我认为IP=000D.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-1 11:10:14 | 显示全部楼层
流行语 发表于 2014-11-1 10:48
我认为这个不是11,应该是ip=13。
B8670B     mov ax,stack   ip=0000
8ED0         mov ss,ax        ip ...
  1. -u

  2. 0C50:0000 B84F0C        MOV     AX,0C4F

  3. 0C50:0003 8ED0          MOV     SS,AX

  4. 0C50:0005 BC1000        MOV     SP,0010

  5. 0C50:0008 8ED8          MOV     DS,AX

  6. 0C50:000A B80000        MOV     AX,0000

  7. 0C50:000D FF160E00      CALL    [000E]

  8. 0C50:0011 40            INC     AX

  9. 0C50:0012 40            INC     AX

  10. 0C50:0013 40            INC     AX

  11. 0C50:0014 B8004C        MOV     AX,4C00

  12. 0C50:0017 CD21          INT     21
复制代码
这是  答案直接复制过来的 ,执行call时此时ip就自动加了啊。就是把0011 压入栈了,之后执行指令缓存器中的内容了我也说 不清 大概就是这个道理 就是执行CALL 时 下一句的IP就*****了。 所以IP就是 11了 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-1 11:54:12 | 显示全部楼层
Ъγ:_小ツ雨oο 发表于 2014-11-1 11:10
这是  答案直接复制过来的 ,执行call时此时ip就自动加了啊。就是把0011 压入栈了,之后执行指令缓存器中 ...

你复制过来的汇编指令ip也是13啊,我而且也看内存了,确实是把13压进堆栈中了,不是11.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-1 18:23:38 | 显示全部楼层
流行语 发表于 2014-11-1 11:54
你复制过来的汇编指令ip也是13啊,我而且也看内存了,确实是把13压进堆栈中了,不是11.

大哥 此题要求的 是 AX的值。 不要纠结IP~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-19 22:00:27 | 显示全部楼层
楼主可不可以把监测点的链接已经王爽的PDF发给我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-25 12:56:43 | 显示全部楼层
好难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-5-26 20:53:52 | 显示全部楼层
按语句的字节算啊    3+2+2+2+2+3=14,因为从零开始,所以为 ip为0eH=13,即跳到cs:13处执行AX三次自增,完成程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-5-27 00:17:48 | 显示全部楼层
支持一个哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-8 08:45:34 From FishC Mobile | 显示全部楼层
本帖最后由 god圣锋 于 2018-8-8 08:52 编辑

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

使用道具 举报

发表于 2018-8-8 11:29:29 | 显示全部楼层
路过学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-14 11:21:04 | 显示全部楼层
执行到call word ptr ds:[0eh]
因为下一条指令的IP为 0011H,然后push ip,所以入栈0011H在栈底  即栈段ss:sp=ss:000e中的内容为0011H
又因为栈段与数据段为同一段  所以数据段的ds:[0eH]中的内容也为0011H
所以jmp到的地址为ds:[0eH]中的内容 0011H  即cs:[0011H]
然后执行三次 inc ax,得到ax=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 03:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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