千哥读书笔记:汇编语言(王爽第四版)第9章 转移指令的原理

 

在本章中,涉及到jmp转移指令,相对复杂,为此画了一个思维导图。需要注意的是:

1、jmp指令中的“标号”是代码段中的标号,指明了指令要转移的目的地,转移指令结束后,CS:IP应该指向标号处的指令。

2、在依据位移进行转移的时候,CPU并不需要转移的目的地址,但却需要转移的位移。这个位移,是编译器根据汇编指令中的“标号”计算出来的。

3、jmp short 标号 的功能:(ip) = (ip) +8位位移 。8位位移的范围是 -128 ~ 127

4 、jmp near ptr 标号 的功能:(ip) = (ip) + 16 位位移。16 位位移的范围是 -32768~32767

5、在依据位移进行转移的时候,段内转移(jmp short 标号 和 jmp near ptr 标号)只修改IP;段间转移(jmp far ptr 标号),既要修改CS,又要修改IP,jmp far ptr 标号 所对应的机器码,高地址是转移的段地址(CS),低地址是偏移地址(IP)。

6、当转移地址在内存中时,段内转移(jmp word ptr 内存单元)只修改IP的值,从内存单元地址处开始放一个字,是转移的目的偏移地址。

比如指令:

mov ax,0123H

mov ds:[0],ax

jmp word ptr ds:[0]

执行后,(IP)=0123H

jmp word ptr ds:[0] ,相当于 mov ip ds:[0]

7、当转移地址在内存中时,段间转移(jmp dword ptr 内存单元),既要修改CS,又要修改IP,从内存单元地址处开始放两个字,高地址处的字是转移的目的段地址(CS),低地址处是转移的偏移地址(IP)。

(CS)=(内存单元地址+2),(IP)=(内存单元地址)

比如指令:

mov ax,0123H

mov ds:[0],ax

mov word ptr ds:[2],0

jmp dword ptr ds:[0]

执行后,(CS) = 0 ,(IP)= 0123H ,CS:IP指向 0000:0123

jmp dword ptr ds:[0],相当于:

1)mov ip ds:[0]

2)mov cs ds:[2]

8、转移地址在寄存器中

这个相对比较简单,其作用仅仅是修改IP的值,可用形如“jmp 某一合法寄存器”的指令完成。

如:jmp ax,执行前ax=437aH,CS=17f0H,IP=423cH,执行后,CS不变,IP=437aH。即将原IP值 "423cH"修改为ax里的值"437aH"。

“jmp 某一合法寄存器”指令的功能为:用现有寄存器中的值来修改IP。

为什么叫“某一合法寄存器”呢?因为并不是所有寄存器都可以修改IP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值