检测比较结果的条件转移指令

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

上面讲解的是根据无符号数的比较结果进行转移的条件转移指令。根据有符号数的比较结果进行转移的条件转移指令的工作原理和无符号的相同,只是检测了不同的标志位。

以上是关于检测比较结果的条件转移指令的主要内容,如果未能解决你的问题,请参考以下文章

汇编多条件转移指令

汇编之使用标志寄存器进行指令转移

JNB, JBE, JGE, JLE指令

汇编语言转移指令&循环指令

汇编指令JMP是啥意思?

PLC编程里的JMP指令