ranbo_q 发表于 2017-5-19 23:13:29

汇编语言---检测点2.3----求共同指教努力

题目 CPU几次修改IP,都是在什么时候,IP最后值为多少
MOV AX,BX
SUB AX,AX
JMP AX

MOV AX,BX         假如这条指令为x个字节。
那么这条指令后IP指向的是 x个字节的长度,所以此时IP=x,指向的是下一条指令。(修改的第一次)

SUB AX,AX             此时AX = AX - AX ,如果此条指令为y个字节。
那么这条指令后IP指向的是x+y个字节的长度,所以此时IP= x+y,指向的是下一条指令。(修改的第二次)

这里大家意义最大,我结合大家的作业题写出如下
JUM AX               此时AX = 0, 如果此条指令为z个字节。
那么这条指令IP现在修改了一次,IP=x+y+z,但是没有执行下一条语句而是跳转指令,JUM AX (ax = 0) 指向IP=0的位置。

IP总共修改了4次

第一次MOV AX,BX   IP=x
第二次SUB AX,AX    IP=x+y
第三次jmp ax      因为有这条指令,已经创建了地址空间,所以IP此时为 x+y+z
第四次jmp ax   因为要执行跳转,ax值为0 所以IP被强制改为0这个地址。

IP最后值为0

applangzi 发表于 2017-5-27 22:02:09

这个题解释没看明白,jmp ax,为什么你的解析中jmp ax执行了两次呢

lmsouth 发表于 2017-6-8 21:53:07

applangzi 发表于 2017-5-27 22:02
这个题解释没看明白,jmp ax,为什么你的解析中jmp ax执行了两次呢

当jmp指令进入CPU还没有执行的时候IP第一次变,执行后又变一次,可以看下书中CPU执行的顺序就明白了

星落辰枫 发表于 2020-7-21 14:22:39

{:10_257:}

raymansun001 发表于 2021-1-10 19:20:54

lmsouth 发表于 2017-6-8 21:53
当jmp指令进入CPU还没有执行的时候IP第一次变,执行后又变一次,可以看下书中CPU执行的顺序就明白了

说得非常对!!

DongGu.. 发表于 2021-1-18 20:53:53

你好,博主,ip地址不是只能jmp来修改的吗,mov怎么也能改ip的值

yixinwenxin 发表于 2021-1-19 22:44:03

DongGu.. 发表于 2021-1-18 20:53
你好,博主,ip地址不是只能jmp来修改的吗,mov怎么也能改ip的值

CS相当于人
IP相当于动的人
不管动手还是动脚,怎么动他都动了
MOV也好JMP也罢都是动了

-雨后晴空- 发表于 2021-2-4 20:31:23

所以执行一条指令时是先移动ip后执行指令

一直在成长 发表于 2021-4-18 22:42:59

{:10_257:}
页: [1]
查看完整版本: 汇编语言---检测点2.3----求共同指教努力