Assembly 如何使用compare+;日本脑炎?

Assembly 如何使用compare+;日本脑炎?,assembly,x86,predicate,Assembly,X86,Predicate,我正在写一段代码,计算一个字符串中有多少个单词。如何使用je增加寄存器 例如: cmp a[bx+1],00h je inc cx 是一个条件跳转。与ARM不同,x86不能基于任意条件直接断言另一条指令。没有任何一条机器指令可以像jeinc-cx或ARM-styleinceq-cx那样执行任何操作 相反,您需要通过在其他指令上有条件地分支来构建逻辑 如果要在两个数字比较相等时增加寄存器,请尝试以下操作: cmp a[bx + 1], 00h ; compare number

我正在写一段代码,计算一个字符串中有多少个单词。如何使用je增加寄存器

例如:

cmp a[bx+1],00h
je inc cx
是一个条件跳转。与ARM不同,x86不能基于任意条件直接断言另一条指令。没有任何一条机器指令可以像
jeinc-cx
或ARM-style
inceq-cx
那样执行任何操作

相反,您需要通过在其他指令上有条件地分支来构建逻辑


如果要在两个数字比较相等时增加寄存器,请尝试以下操作:

        cmp a[bx + 1], 00h  ; compare numbers
        jne .noteq          ; if they are different, skip
        inc cx              ; the increment
.noteq:
如果您有386兼容的CPU,则可以使用无分支选项。它需要一个额外的寄存器:

        xor ax, ax          ; clear register
        cmp a[bx + 1], 00h  ; compare numbers
        sete al             ; set al = 1 if the numbers are equal
        add cx, ax          ; increment cx if numbers are equal

与PPro兼容的CPU具有和。与(386)、(8086)和(8086)一起,这些是x86唯一的条件检查指令。(条件位存储在标志寄存器中,您可以直接访问它们,但通常不太方便。)

是一种条件跳转。与ARM不同,x86不能基于任意条件直接断言另一条指令。没有任何一条机器指令可以像
jeinc-cx
或ARM-style
inceq-cx
那样执行任何操作

相反,您需要通过在其他指令上有条件地分支来构建逻辑


如果要在两个数字比较相等时增加寄存器,请尝试以下操作:

        cmp a[bx + 1], 00h  ; compare numbers
        jne .noteq          ; if they are different, skip
        inc cx              ; the increment
.noteq:
如果您有386兼容的CPU,则可以使用无分支选项。它需要一个额外的寄存器:

        xor ax, ax          ; clear register
        cmp a[bx + 1], 00h  ; compare numbers
        sete al             ; set al = 1 if the numbers are equal
        add cx, ax          ; increment cx if numbers are equal

与PPro兼容的CPU具有和。与(386)、(8086)和(8086)一起,这些是x86唯一的条件检查指令。(条件位存储在标志寄存器中,您可以直接访问它们,但通常不太方便。)