赞
踩
1、jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP;
2、jmp指令要给出两种信息:
1、转移的目的地址
2、转移的距离(段间转移、段内短转移,
段内近转移)
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
。
1、内存中存放的机器码和对应的汇编指令情况如下图所示,设CPU初始状态:CS=2000H,IP=0000H,请写出指令执行序列。思考后看分析:
2、下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp
ax
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。