检测点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
看着有点懵,为什么唯独最后一列代码是读取是一次,执行又是一次呢??前面的代码又不是读取一次执行一次呢 ...
汇编ip的值应该是在读取完该指令后就变了,变到下一条指令那里随时准备读取下一条。所以读取完该指令后还没等它执行IP值就改变了。而前面的代码和后面代码一样,都是读取后IP值就变,唯独最后一行代码读取后指令照常+n(n是目前指令长度),但是随后执行该指令,jmp指令执行效果就是修改cs和ip的值,所以这条指令执行后就又修改了一次。所以共计四次。如果是三条jmp指令(假设jmp执行后的地址是第二条jmp指令的位置),那么ip值应该改变了6次。个人见解。 御坂美琴s 发表于 2023-4-15 16:31
汇编ip的值应该是在读取完该指令后就变了,变到下一条指令那里随时准备读取下一条。所以读取完该指令后还 ...
好吧, 其实还是不太能理解,现在只能把它当公式那样记吧,知道有这么个回事吧。
ITBOY124 发表于 2023-4-19 13:32
好吧, 其实还是不太能理解,现在只能把它当公式那样记吧,知道有这么个回事吧。
我尽力描述了,我表达水平有那么不堪嘛。。{:5_104:}不知道你课看到哪里了,你要是看到了寻址方式那一块,好像在第7章还是第8章,你看着那个动态视频,你就能更好的理解cpu是怎么读取指令,执行指令,cs,ip,ds,bp/bx是怎么变化的,内存单元存的是数据还是指令,看完那个你都会有很直观的感受的。{:5_95:} ITBOY124 发表于 2023-4-19 13:32
好吧, 其实还是不太能理解,现在只能把它当公式那样记吧,知道有这么个回事吧。
在小甲鱼视频的演示里有出现,书上可以看下29页的图2.20和30页的图2.21,这个问题和cpu的执行顺序有关系,指令还没执行的时候ip已经跳转到下一个了,但是指令执行后又会把ip修改成ax的值也就是0000H
页:
[1]