破极 发表于 2023-1-8 02:25:37

检测点2.3需要的主意事项

作业题目:

                下面的3条指令执行后,CPU几次修改IP,都是在什么时候?最后IP中的值是多少?

                                mov          ax,bx
                                subax,ax
                                jmp        ax


答案解析:
                                                mov          ax,bx                读取这段代码之后是第一次
                                                subax,ax                读取这段代码之后是第二次
                                                jmp        ax                        读取这段代码之后是第三次,然后执行这段代码是第4次
                               
                                由于执行了第二段代码,ax为0000H,所以IP中的地址也是0000H
身为一名新手,我们需要注意的的是最后一行代码,读取是一次,执行又是一次。


以上纯属个人观点,如有错误,还望大家指出,不胜感激!{:10_327:}

ITBOY124 发表于 2023-1-25 22:02:57

看着有点懵,为什么唯独最后一列代码是读取是一次,执行又是一次呢??前面的代码又不是读取一次执行一次呢??这个对于新学员的我来说有点懵

御坂美琴s 发表于 2023-4-15 16:31:50

ITBOY124 发表于 2023-1-25 22:02
看着有点懵,为什么唯独最后一列代码是读取是一次,执行又是一次呢??前面的代码又不是读取一次执行一次呢 ...

汇编ip的值应该是在读取完该指令后就变了,变到下一条指令那里随时准备读取下一条。所以读取完该指令后还没等它执行IP值就改变了。而前面的代码和后面代码一样,都是读取后IP值就变,唯独最后一行代码读取后指令照常+n(n是目前指令长度),但是随后执行该指令,jmp指令执行效果就是修改cs和ip的值,所以这条指令执行后就又修改了一次。所以共计四次。如果是三条jmp指令(假设jmp执行后的地址是第二条jmp指令的位置),那么ip值应该改变了6次。个人见解。

ITBOY124 发表于 2023-4-19 13:32:53

御坂美琴s 发表于 2023-4-15 16:31
汇编ip的值应该是在读取完该指令后就变了,变到下一条指令那里随时准备读取下一条。所以读取完该指令后还 ...

好吧, 其实还是不太能理解,现在只能把它当公式那样记吧,知道有这么个回事吧。

御坂美琴s 发表于 2023-4-19 20:48:20

ITBOY124 发表于 2023-4-19 13:32
好吧, 其实还是不太能理解,现在只能把它当公式那样记吧,知道有这么个回事吧。

我尽力描述了,我表达水平有那么不堪嘛。。{:5_104:}不知道你课看到哪里了,你要是看到了寻址方式那一块,好像在第7章还是第8章,你看着那个动态视频,你就能更好的理解cpu是怎么读取指令,执行指令,cs,ip,ds,bp/bx是怎么变化的,内存单元存的是数据还是指令,看完那个你都会有很直观的感受的。{:5_95:}

1oster 发表于 2023-12-17 22:52:13

ITBOY124 发表于 2023-4-19 13:32
好吧, 其实还是不太能理解,现在只能把它当公式那样记吧,知道有这么个回事吧。

在小甲鱼视频的演示里有出现,书上可以看下29页的图2.20和30页的图2.21,这个问题和cpu的执行顺序有关系,指令还没执行的时候ip已经跳转到下一个了,但是指令执行后又会把ip修改成ax的值也就是0000H
页: [1]
查看完整版本: 检测点2.3需要的主意事项