检测比较结果的条件转移指令
Posted gkp307
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测比较结果的条件转移指令相关的知识,希望对你有一定的参考价值。
因为cmp指令可以同时进行两种比较,无符号数比较和有符号数比较,所以根据cmp指令的比较结果进行转移的指令也分为两种,即根据无符号数的比较结果进行转移的条件转移指令(它们检测zf、cf的值)和根据有符号数的比较结果进行转移的条件转移指令(它们检测sf、of和zf的值)。
下面是常用的根据无符号数的比较结果进行转移的条件转移指令。
指令 含义 检测的相关标志位
je 等于则转移 zf=1
jne 不等于则转移 zf=0
jb 低于则转移 cf=1
jnb 不低于则转移 cf=0
ja 高于则转移 cf=0且zf=0
jna 不高于则转移 cf=1或zf=1
举例。
data段中的8个字节如下:
data segment db 8,11,8,1,8,5,63,38 data ends
1)编程,统计data段中数值为8的字节的个数,用ax保存统计结果。
mov ax, data mov dx, ax mov bx, 0 mov ax, 0 mov cx, 8 s: cmp byte ptr [bx],8 jne next inc ax next: inc bx loop s
2)编程,统计data段中数值大于8的字节的个数,用ax保存统计结果。
mov ax,data mov ds,ax mov ax,0 mov bx,0 mov cx, 8 s: cmp byte ptr [bx],8 jna next inc ax next: inc bx loop s
3)编程,统计data段中数值小于8的字节的个数,用ax保存统计结果。
mov ax,data mov ds,ax mov ax,0 mov bx,0 mov cx,8 s: cmp byte ptr [bx], 8 jnb next inc ax next: inc bx loop s
上面讲解的是根据无符号数的比较结果进行转移的条件转移指令。根据有符号数的比较结果进行转移的条件转移指令的工作原理和无符号的相同,只是检测了不同的标志位。
以上是关于检测比较结果的条件转移指令的主要内容,如果未能解决你的问题,请参考以下文章