当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。

无符号数 大于等于 和 小于 判断

对于无符号数的大于等于小于判断,只需要将两数作差,状态标志C即表示了结果,例如x - y

  • C1:表示x >= y

  • C0:表示x < y

而对于<=>可以转换为>=<进行:

x <= y   =>   y >= x
x > y    =>   y < x

至于相等和不等的比较则需要使用指令se/sne进行。

以下为大于等于小于判断的示例。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#define X_VAL   0x123456
#define Y_VAL   0x456789
        dseg
        byte    x[4]
        byte    y[4]
        byte    z
        
        cseg
main:   mov     A, #X_VAL & 0xff
        mov     x + 0, A
        mov     A, #(X_VAL >> 8) & 0xff
        mov     x + 1, A
        mov     A, #(X_VAL >> 16) & 0xff
        mov     x + 2, A
        mov     A, #(X_VAL >> 24) & 0xff
        mov     x + 3, A
        mov     A, #Y_VAL & 0xff
        mov     y + 0, A
        mov     A, #(Y_VAL >> 8) & 0xff
        mov     y + 1, A
        mov     A, #(Y_VAL >> 16) & 0xff
        mov     y + 2, A
        mov     A, #(Y_VAL >> 24) & 0xff
        mov     y + 3, A
        //执行判断 z = x >= y
        mov     A, x + 0
        sub     A, y + 0
        mov     A, x + 1
        subc    A, y + 1
        mov     A, x + 2
        subc    A, y + 2
        mov     A, x + 3
        subc    A, y + 3
        mov     A, STATUS   //z = C
        and     A, #1
        mov     z, A
        //z = 0x00