郝凡呀 发表于 2021-2-13 11:11:34

检测点2.3

本帖最后由 郝凡呀 于 2021-2-13 11:32 编辑

下面的3条指令执行后,CPU几次修改IP?都在什么时候?最后IP的值是多少?
      mov ax,bx
      sub ax,ax
      jmp ax
答:CPU四次修改IP,IP指的是偏移地址,用于执行下一条指令所以是在每一条指令执行完后修改的IP,假设从IP=0001H开始的,执行mov ax,bx完后修改一次,设字节是2,则此时的IP=0003H,执行sub ax,ax后修改一次,设有2个字节,此时IP=0005H,在执行jmp ax后再修改一次,设此时的字节是2,则此时的0007H,此时IP再跳转此时的cs等于都一个数IP=0000。

      sub指令是用前一个ax-后一个ax的值赋值给前一个ax。
如有错误,望不吝赐教。{:5_110:}

qq113009 发表于 2021-10-9 16:02:50

HF老师

程序人生 发表于 2022-1-2 11:06:29

有一个问题,这里说了"每一条指令执行完后修改的IP",执行mov ax,bx第一条指令修改一次,执行 sub ax,ax,又修改一次,执行jmp ax又修改一次,那不等于修改了3次吗?咋是4次?大大的问号

tyyfly 发表于 2022-4-20 07:26:51

程序人生 发表于 2022-1-2 11:06
有一个问题,这里说了"每一条指令执行完后修改的IP",执行mov ax,bx第一条指令修改一次,执行 sub ax,ax,又修 ...

读完指令IP就会自动增加了,不用等指令执行,在第三条指令读取完jmp ax后,IP增加0002H,此时IP已修改三次。
接着执行jmp ax指令,由于在第二条指令sub是减法,ax减去ax后为0000H,因此执行jmp ax后,IP被改成0000H,至此总共修改四次。

咸鱼fish 发表于 2022-4-26 15:08:56

简介明了,感谢感谢{:10_297:}

qccc 发表于 2022-5-12 12:28:10

先“+1”后跳转

庄自荐 发表于 2022-7-24 10:44:15

tyyfly 发表于 2022-4-20 07:26
读完指令IP就会自动增加了,不用等指令执行,在第三条指令读取完jmp ax后,IP增加0002H,此时IP已修改三 ...

那他AX的值又和IP有什么关系呢,为什么AX-AX=0,jmp ax后IP也为0呢

蓝海没鱼 发表于 2022-8-29 02:21:15

简介明了,感谢感谢

HHeLiBeB 发表于 2022-9-23 15:55:36

庄自荐 发表于 2022-7-24 10:44
那他AX的值又和IP有什么关系呢,为什么AX-AX=0,jmp ax后IP也为0呢

jmp 某一合法寄存器
这是一段指令,其功能为:用这一寄存器中的值修改IP。
其意义可以近似理解为:mov IP,ax(只是理解用,并非真的存在)。

ai6540182 发表于 2023-1-20 13:08:07

HHeLiBeB 发表于 2022-9-23 15:55
jmp 某一合法寄存器
这是一段指令,其功能为:用这一寄存器中的值修改IP。
其意义可以近似理解为:mov...

感谢看了你评论明白了
页: [1]
查看完整版本: 检测点2.3