大叔学编程 发表于 2016-1-26 15:13:54

汇编检测点2.3

下面3 条指令执行后,CPU几次修改IP?都是在什么时候,最后IP中的值是多少?
MOV AX,BX
SUBAX,AX
JMP AX
我可以这样理解吗:
因为没有规定IP的值,所以IP的值是0;
第一步:IP+2=2H;
第二步:IP+2=4H;
第三步:IP+2=6H;
为什么答案中还有个第四步!
希望前辈们能给予解答,谢谢!

人造人 发表于 2016-1-26 16:33:59

就像 movsub指令一样
jmp 这条指令也要修改 ip
但jmp指令比较特殊,他本身就要修改ip
也就是说jmp 2次修改ip

人造人 发表于 2016-1-26 16:39:20

人造人 发表于 2016-1-26 16:33
就像 movsub指令一样
jmp 这条指令也要修改 ip
但jmp指令比较特殊,他本身就要修改ip


好像也不能说是2次修改,第一次修改ip 和mov sub 一样,是cpu把当前的指令送入指令缓冲器
后自动增加的ip
参考教材28页

康小泡 发表于 2016-1-26 19:39:09

第一个问题就是为什么是修改了4次。
如果 将Jmp指令修改为 mov或者sub一类不影响Ip值的,就只会修改3次。但是这里jmp指令是会修改ip地址。所以修改了4次、
ip最后为0,是因为Jmp ax 等价于 ip=ax 而前面有一个指令时sub ax,ax 所以ax为0所以ip=0

大叔学编程 发表于 2016-1-27 10:13:39

晕晕糊糊的好像有点明白,谢谢大家!{:10_281:}

大叔学编程 发表于 2016-1-27 10:15:33

人造人 发表于 2016-1-26 16:39
好像也不能说是2次修改,第一次修改ip 和mov sub 一样,是cpu把当前的指令送入指令缓冲器
后自动增加的i ...

谢谢,让您费心了!

大叔学编程 发表于 2016-1-27 10:16:44

康小泡 发表于 2016-1-26 19:39
第一个问题就是为什么是修改了4次。
如果 将Jmp指令修改为 mov或者sub一类不影响Ip值的,就只会修改3次 ...

谢谢!让您费心了!

康小泡 发表于 2016-1-27 12:37:47

大叔学编程 发表于 2016-1-27 10:16
谢谢!让您费心了!

没事没事。客气了。互相帮助
页: [1]
查看完整版本: 汇编检测点2.3