Ъγ:_小ツ雨oο 发表于 2014-10-31 19:23:23

监测点10.5

答案中的 IP=11 是怎么算出来的 求解

dAb 发表于 2014-11-1 01:34:56

同问..........

血月 发表于 2014-11-1 09:41:31

好久没看汇编,都不熟悉,错了见谅



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

偏移地址=5*2+2=12
起始地址=0   ;也就是从0开始数12个数
ip=11

Ъγ:_小ツ雨oο 发表于 2014-11-1 09:53:21

血月 发表于 2014-11-1 09:41
好久没看汇编,都不熟悉,错了见谅




我知道了 但是 执行call指令后就跳到栈段货或DS段了,,为什么答案是3呢?

Ъγ:_小ツ雨oο 发表于 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 了

血月 发表于 2014-11-1 10:41:32



原栈顶=16
压入cs ip就变成14了;

流行语 发表于 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.

Ъγ:_小ツ雨oο 发表于 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 ...

-u

0C50:0000 B84F0C      MOV   AX,0C4F

0C50:0003 8ED0          MOV   SS,AX

0C50:0005 BC1000      MOV   SP,0010

0C50:0008 8ED8          MOV   DS,AX

0C50:000A B80000      MOV   AX,0000

0C50:000D FF160E00      CALL   

0C50:0011 40            INC   AX

0C50:0012 40            INC   AX

0C50:0013 40            INC   AX

0C50:0014 B8004C      MOV   AX,4C00

0C50:0017 CD21          INT   21
这是答案直接复制过来的 ,执行call时此时ip就自动加了啊。就是把0011 压入栈了,之后执行指令缓存器中的内容了我也说 不清 大概就是这个道理 就是执行CALL 时 下一句的IP就*****了。 所以IP就是 11了 。

流行语 发表于 2014-11-1 11:54:12

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

你复制过来的汇编指令ip也是13啊,我而且也看内存了,确实是把13压进堆栈中了,不是11.

Ъγ:_小ツ雨oο 发表于 2014-11-1 18:23:38

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

大哥 此题要求的 是 AX的值。 不要纠结IP~~~

TTLoveSS 发表于 2014-11-19 22:00:27

楼主可不可以把监测点的链接已经王爽的PDF发给我

lyjztz 发表于 2014-11-25 12:56:43

好难

丝雨人 发表于 2015-5-26 20:53:52

按语句的字节算啊    3+2+2+2+2+3=14,因为从零开始,所以为 ip为0eH=13,即跳到cs:13处执行AX三次自增,完成程序

vank 发表于 2015-5-27 00:17:48

支持一个哦

god圣锋 发表于 2018-8-8 08:45:34

本帖最后由 god圣锋 于 2018-8-8 08:52 编辑

嘻嘻么看题号

CCCFC 发表于 2018-8-8 11:29:29

路过学习

czd970730 发表于 2018-8-14 11:21:04

执行到call word ptr ds:
因为下一条指令的IP为 0011H,然后push ip,所以入栈0011H在栈底即栈段ss:sp=ss:000e中的内容为0011H
又因为栈段与数据段为同一段所以数据段的ds:中的内容也为0011H
所以jmp到的地址为ds:中的内容 0011H即cs:
然后执行三次 inc ax,得到ax=3
页: [1]
查看完整版本: 监测点10.5