非同凡想 发表于 2012-2-8 22:51:23

监测点2.3中IP值的问题-汇编第二版

监测点2.3内:mov ax,bx;sub ax,ax;jmp ax;上述过程执行后修改了4次IP是肯定的,因其中跳转指令修改了两次,及跳转本身修改了一次,执行后再次修改了一次。但最后IP的值为何为0呢?jmp ax后,IP的值应该为ax+2才正确吧

Mr.HO 发表于 2012-2-9 02:51:04

because,ax=0,so,ip=0

1079629687 发表于 2012-2-9 13:46:48

sub ax,ax   ax=0      jmp ax   ax=0   

非同凡想 发表于 2012-2-9 22:11:17

因ax=0,ip=0?我还是不太理解,cs代码段寄存器,ip指令指针寄存器,这些都是地址的相关寄存器,和寄存器内存储的数据有什么关系呢?望高手继续解答…………

非同凡想 发表于 2012-2-9 22:16:44

呵呵,小弟不才,终于搞明白了,jmp ax,因为有上面sub ax,ax的指令把ax寄存器中的内容清零了,所以jmp ax后ip内容变为0了,谢谢2楼和3楼的解答。
刚刚接触汇编,好多东西弄不太懂……

ㄓ国Ψ—小八 发表于 2012-2-9 22:24:28

根据CPU的工作过程来看
读取指令 mov ax,bx进入指令缓冲器    ip+3   执行指令mov ax,bx      (执行结果ax=bx中的数据)
读取指令sub ax,ax进入指令缓冲器    ip+3   执行指令sub ax,ax       (执行结果ax=0)
读取指令   jmp ax进入指令缓冲器   ip+2   执行指令jmp ax         (执行结果ip=0)

故ip修改了4次,最终ip为0

非同凡想 发表于 2012-2-9 22:49:49

今天也算是有所收获,小甲鱼论坛热心人很多,希望我们共同学习共同进步,同时也谢谢6楼的回复

a86914689 发表于 2012-2-9 23:53:22

sub,是减的意思,AX-AX.不就是0?
页: [1]
查看完整版本: 监测点2.3中IP值的问题-汇编第二版