1. 可以修改IP,或者同时修改CS和IP的指令称为转移指令。有两种类型转移:
1)只修改IP是段内转移,如:jmp ax
2)修改CS和IP是段间转移,如:jmp 1000:0
2. 操作符offset:offset是取得标号的偏移地址,例如:
start: mov ax, offset start ; equal to : mov ax, 0
3. jmp称为无条件转移,可以只修改IP,也可以同时修改CS和IP:
1)jmp的原理:依据位移进行转移的。CPU在执行jmp指令的时候并不需要知道转移的目的地址,因为CPU知道的转移的偏移地址,就是jmp xxx这条指令地址和标号xxx之间的偏移。
2)jmp short xxx / jmp far xxx:段内转移和段间转移,段内转移范围:-128~127。其他范围用段间转移。
4. 转移地址在内存中:
1)jmp word ptr 内存单元地址:也成为段内转移,如:
mov ax, 0123h
mov ds:[0], ax
jmp word ptr ds:[0]
2)jmp dword ptr 内存单元地址:也称为段间转移,如:
mov ax, 0123h
mov ds:[0], ax
mov word ptr ds:[2], 0
jmp dword ptr ds:[0]
5. jcxz:有条件转移指令,所有的有条件转移指令都是短转移。jcxz 格式为:
jcxz xxx (如果cx == 0, 执行转移), 所以jcxz相当于:jmp if cx equal to zero,如果cx不等于,什么都不做;
6. loop: 循环指令,所有循环指令都是短转移。这个我们之前就见过了,cx等于0,退出循环;