檢測比較結果的條件轉移指令
阿新 • • 發佈:2018-11-12
因為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
上面講解的是根據無符號數的比較結果進行轉移的條件轉移指令。根據有符號數的比較結果進行轉移的條件轉移指令的工作原理和無符號的相同,只是檢測了不同的標誌位。