无符号数 大于等于 和 小于 判断¶
对于无符号数的大于等于
和小于
判断,只需要将两数作差,状态标志C
即表示了结果,例如x - y
:
C
为1
:表示x >= y
;C
为0
:表示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 |