汇编:jmp指令

1、概念

1、jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP;
2、jmp指令要给出两种信息:

1、转移的目的地址
2、转移的距离(段间转移、段内短转移,
段内近转移)

2、8086CPU中的jmp指令

1、CPU从何处执行指令是由CS、IP中的内容决定的,我们可以通过改变CS、IP的内容来控制CPU执行目标指令。
2、8086提供了一个mov指令(传送指令),可以用来修改大部分寄存器的值,比如:

mov ax,10
mov bx,20
mov cx,30
mov dx,40

3、但是,mov指令不能用于设置CS、IP的值,8086没有提供这样的功能
4、8086提供了另外的指令来修改CS、IP的值,这些指令统称为转移指令,最简单的是jmp指令。

一、若想同时修改CS、IP的内容,可用形如jmp 段地址:偏移地址的指令完成,如

jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
jmp 3:0B16,执行后:CS=0003H,IP=0B16H,CPU将从00B46H处读取指令。
jmp段地址:偏移地址指令的功能为:用指令中给出的段地址修改 CS,偏移地
址修改 IP。

二、若想仅修改 IP 的内容,可用形如jmp某一合法寄存器的指令完成,如

1、jmp ax,指令执行前:ax=1000H,CS=2000H,IP=0003H;
指令执行后:ax=1000H,CS=2000H,IP=1000H
2、jmp bx,指令执行前:bx=0B16H,CS=2000H,IP-0003H;
指令执行后:bx=0B16H,CS=2000H,P=0B16H
jmp某一合法寄存器指令的功能为:用寄存器中的值修改 IP。
jmp ax,在含义上好似:mov IP,ax。

5、可以jmp 直接值来改变IP的值,比如jmp 0100H

3、问答拓展

1、内存中存放的机器码和对应的汇编指令情况如下图所示,设CPU初始状态:CS=2000H,IP=0000H,请写出指令执行序列。思考后看分析:
请添加图片描述

2、下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?

mov ax,bx
sub ax,ax
jmp
ax

猜你喜欢

转载自blog.csdn.net/weixin_38633659/article/details/125165082