当运算产生进位标志时,即CF=1时,跳转到目标程序处.
例如:
add al,bl
jc carrybit
inc al如果al+bl产生了进位,这一句就不执行了.
carrybit:
neg al
这段程序没有任何意义,仅仅作为示例哈.
相同的指令还有:
JNC,当CF=0时跳转;
JZ,当ZF=1时跳转,JNZ,当ZF=0时跳转;
JO,当OF=1时跳转,JNO,当OF=0时跳转;
JP,当PF=1时跳转……
依此类推,标志寄存器的各个位基本上都可以用来做“条件跳转”的条件.
当然,条件跳转不仅仅是标志寄存器位,还可以是CX
如:
a_loop:
do something
dec cx
jcxz
jmp a_loop
可以看出,这一段相当于一个loop指令.
还有,用于大小判断型的:
cmp op1,op2
JXX XXXX
其中JXX有以下几种:
JA表示op1>op2,JNA表示op1
JC是判断C进位标志是否为1,为1则跳转到指定位置。
JC指令判断有借位则转移,也就是说两数相减为负转移。JBC指令判断该位为1则转移,同时将该位置0。
条件转移指令只能转移到离本指令-128~+127字节范围内,是一种相对转移形式,当要往较远单元地址条件转移时,可以在本指令-128~+127字节范围内安排一条无条件转移指令作为中转指令即可。在使用简单条件跳转指令时,必须明确相应标志位的变化。
扩展资料:
简单条件跳转指令:
1、JC 目的地址 进位标志位CF=1,转移
2、JNC 目的地址 进位标志位CF=0,转移
3、JZ 目的地址 零标志位ZF=1,转移
4、JNZ 目的地址 零标志位ZF=0,转移
5、JS 目的地址 符号标志SF=1,转移
5、JNS 目的地址 符号标志SF=0,转移
6、JO 目的地址 溢出标志OF=1,转移
7、JNO 目的地址 溢出标志OF=0,转移
8、JP 目的地址 奇偶标志PF=1,转移
9、JNP 目的地址 奇偶标志PF=0,转移
10、JCXZ 目的地址 CX=0,转移
参考资料来源:百度百科-条件转移指令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)