8086CPU的转移指令分为以下几类:
无条件转移指令(如:jmp)
循环指令(如:loop)
offset在汇编语言中是由编译器处理的符号它的功能是取得中断程序标号指令的偏移地址。
含义:将中斷程序标号指令s处的偏移地址送入si中
为无条件转移指令,可以只修改ip也可以同时修改cs和ip
jmp指令要给出两种信息:
- 转移的距离(段间转移、段内短转移、段内近转移)
3、依据位移进行转移的jmp指令
实现的是段内短转移它对ip的修改,范围为-128~127
- 8位位移:“中断程序标号指令”处地址-jmp指令后的第一个字节地址
- short 指明此处的位移为8位位移
- 8位位移的范围为-128~127 用补码表示
- 8位位移由编译程序在编译时算出
(ip)=(ip)+16位位移范围为-
4、轉移目的地址在指令中的jmp指令
实现的是段间转移,又称远转移
功能:far ptr指明了指令用中断程序标号指令的段地址和偏移地址修改cs和ip。
5、转迻地址在寄存器中的jmp指令
格式:jmp 16位寄存器
功能: IP=(16位寄存器)
6、转移地址在内存中的jmp指令
功能:从内存单元地址处存放着一个字是转移嘚目的偏移地址。
功能:从内存单元地址处存放两个字高地址处的字是转移目的段地址,低地址处是转移的目的偏移地址
为条件转移指令,所有的有条件转移指令都是短地址对应机器码中包含转移的位移,对ip的修改范围为-128~127
(如果(cx=0)则转移到中断程序标号指令处执荇)
(cx不等于0,程序向下执行)
9、根据位移进行转移的意义
目的:方便了程序段在内存中的浮动装配
10、编译器对转移位移超界的检测