三寸丿光阴 发表于 2020-1-19 21:45:56

检测点2.3

执行下面3条指令后,cpu几次修改ip,最后ip值为?
MOV AX,BX
SUB AX,AX
JMP AX
答:第一条指令占三个字,执行完成后cpu修改ip=ip+3;通过cs:ip顺序执行下一条指令,同样占三个字的空间,执行完成后,cpu修改ip=ip+3;
继续执行下一条指令ax=0,指令占2个字节空间,指令使ip值修改为ax。因此cpu共修改ip3次,最后ip值为0。

人民币1 发表于 2020-2-26 16:36:39

谢谢分享

心系雨滴 发表于 2020-3-5 20:31:02

难道不是ip=ax吗

年少的梦想 发表于 2020-3-5 20:51:20

我认为应该是4次,因为是先累加ip数,再执行代码,三条代码ip变换3次,但最后一条语句会修改,所以我认为是4次,

学到秃为止 发表于 2020-3-10 23:23:37

答:一共修改四次

第一次:读取mov ax,bx之后

第二次:读取sub ax,ax之后

第三次:读取jmp ax之后

第四次:执行jmp ax修改IP

最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H

highgerms 发表于 2020-3-17 18:04:12

学到秃为止 发表于 2020-3-10 23:23
答:一共修改四次

第一次:读取mov ax,bx之后


正解

highgerms 发表于 2020-3-17 18:05:22

有点错误,这三条指令每个指令占用的字节数都是2个字节
页: [1]
查看完整版本: 检测点2.3