- 无条件跳转
- 条件转移
- 所有有条件转移都是短转移
- 循环指令
- 所有循环指令都是短转移
- 过程(函数)
中断
offset
- 编译器处理的符号,取得标号的偏移地址
- start: mov ax,offset start(将start在内存的偏移地址放到ax,相当于mov ax,0)
- jmp
- 可以只修改IP,也可以同时修改CS和IP
- 需要的信息:转移的目的地址&转移的距离(段间转移、段内短转移、段内近转移)
- jmp short ptr 标号:段内短转移,转移到标号(IP修改范围:IP-2^7~IP+2^7)
- short代表位移为8位
- 机器码中是跳转的目标地址的字节偏移量(ip根据该偏移量改变)
- 改变后的IP按照补码决定跳转位置,负数向上跳,正数向下跳
- jmp near ptr 标号:段内近转移
- 代表位移为16位(-32769~32767)
- jmp far ptr 标号:段间远转移
- 机器码中会包含转移的目的地址
- jmp 16位寄存器:段内转移
- IP=(16位寄存器)
- jmp word ptr 内存单元地址:段内转移
- word:16位
- jmp dword ptr 内存单元地址:段间转移
- CS =(内存单元地址+2)
- IP = 内存单元地址)
- jcxz 标号
- 如果(cx)=0,则跳转到标号处执行
loop 标号
- loop s执行时是先将cx减一再与0比较)
- (cx)=(cx)-1
- (cx)!=0,跳转
奇怪的程序:偏移地址的应用
- 能够正常结束
- 编程:屏幕显色
- 向显存写数据