如何通过比较数字来获得所需的功能?

How to get required function to work by comparing numbers?

我已经在汇编仿真器 emu8086 中编写了一段比较 x + c 和 0 的代码,我需要我的函数根据比较结果工作。

f1, when x + c < 0
f2, when x + c = 0
f3, when x + c > 0
    MOV ax, x[si]        
    MOV bl, c 
    CBW
    ADD ax, bx
    CBW  
    CMP ax, 0 
    JE f2; 
    JL f1;
    JG f3 ;

我希望 f2 函数在 ax(x + c) 等于零时工作,f1 在 ax(x+c) 小于零时工作,并且f3 当 ax(x+c) 大于零时,但不知何故它只正确地 f2f3,我得到 f2 而不是 f1,我不明白哪里错了。 即使我在写

    JE f1; 
    JL f1;
    JG f1 ;

它仍然不执行 f1,执行 f2 而不是 f1,但是如果我从我的代码中删除 f3,那么 f1 就完成了。 函数看起来像:

f1: MOV ax, 2
    IMUL a
    JO kl1  ; 
    MOV bx, x[si]
    CMP bx, 0
    JG mod       
    NEG bx
mod:    ADD ax, bx   
MOV dx, ax
    JO kl1

f2: MOV ax, 6 
    ADD ax, 3
    JO kl1
    JMP re    
f3: MOV ax, 4

    JO kl1   
    JMP re 

CBW 将 AL 扩展为 AX。您想将 BL 扩展到 BX。

我建议你把c载入AL,用CBW,然后加上x。