CMP指令是一種用於比較兩個數值的指令,主要應用於彙編語言中。
CMP指令的功能類似於執行一次減法操作,但與SUB指令不同,CMP指令不保存運算結果,只根據運算結果設置相關的條件標誌位,如SF(符號標誌位)、ZF(零標誌位)、CF(進位標誌位)和OF(溢出標誌位)。這些標誌位可以被程序中的其他指令用來判斷比較的結果。
CMP指令的格式爲CMP 操作對象1,操作對象2。執行過程如下:
首先計算第一個操作數減去第二個操作數的結果,但不保存這個結果。
然後根據計算結果設置上述的條件標誌位。
例如,CMP AX,BX指令會比較AX寄存器和BX寄存器中的值。如果AX等於BX,則ZF(零標誌位)被設置爲1,表示沒有差異;如果AX小於BX,則CF(進位標誌位)被設置爲1,表示有借位發生;如果AX大於BX,則CF保持爲0,而ZF變爲0,表示有差異。
這些條件標誌位可以被用於控制程序的流程,例如通過條件跳轉指令實現根據比較結果的不同而產生不同的程序分支。