jcxz指令为有条件转移指令,所有的有条件转移指令都是短转移,
在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为-128~127。
指令格式:
jcxz 标号(如果(cx)=0,则转移到标号处执行。)
操作:
当(cx) = 0时,(IP) = (IP) + 8位位移
8位位移 = “标号”处的地址 - jcxz指令后的第一个字节的地址;
8位位移的范围为-128~127,用补码表示;
8位位移由编译程序在编译时算出。
当(cx)!=0时,什么也不做(程序向下执行)
我们从jcxz的功能中可以看出,"jcxz"标号”的功能相当于:
if((cx)==0) jmp short标号;
(这种用C语言和汇编语言进行的综合描述,或许能使你对有条件转移指令理解得更加清楚。)
测例
assume cs:codesg codesg segment start: mov ax,2000h mov ds,ax mov bx,0 s: mov cl,[bx] mov ch,0 jcxz ok ;//检查cx的值,为0则查找结束,跳向ok标志地址 inc bx jmp short s ;//查找失败则循环继续查找 ok: mov dx,bx mov ax,4c00h int 21h codesg ends end start