
【計】 compare instruction; comparison order
在計算機體系結構與彙編語言中,比較指令(Compare Instruction) 是一種基礎運算指令,用于對比兩個操作數(寄存器或内存中的值)的大小或相等性。其核心功能是設置處理器的狀态标志位(如零标志 ZF、符號标志 SF、進位标志 CF 等),而不直接修改操作數本身,為後續的條件跳轉指令(如 JE、JNE、JG 等)提供判斷依據。
操作數對比
比較指令(如 x86 的 CMP
、ARM 的 CMP
)執行隱含的減法操作:計算 操作數1 - 操作數2
,并根據結果更新标志寄存器。例如:
CMP AX, BX ; 計算 AX - BX,更新标志位
若 AX = BX,則結果為零,零标志位 ZF=1;若 AX < BX,則産生借位,進位标志 CF=1。
标志位影響
條件分支控制
比較指令常與條件跳轉指令配合,實現程式邏輯分支:
CMP AL, 0 ; 比較 AL 與 0
JELabel ; 若相等(ZF=1),跳轉至 Label
循環終止判斷
在循環結構中比較計數器值:
MOV CX, 10
LoopStart:
; ...循環代碼...
DEC CX; 計數器減 1
CMP CX, 0 ; 判斷 CX 是否為 0
JNE LoopStart ; 若非零則繼續循環
數據排序與搜索算法
在冒泡排序或二分查找中,通過多次比較操作确定元素順序或位置。
與減法指令(SUB):
SUB
會修改目标操作數,而 CMP
僅更新标志位,不改變操作數。
例如:
SUB AX, BX ; AX = AX - BX
CMP AX, BX ; 僅更新标志,AX/BX 值不變
與測試指令(TEST):
TEST
執行邏輯與(AND)操作并更新标志,用于位檢測;CMP
關注數值關系。
架構 | 指令格式 | 功能 |
---|---|---|
x86 | CMP op1, op2 |
比較 op1 與 op2 |
ARM | CMP Rn, Operand2 |
比較寄存器與立即數/寄存器 |
MIPS | SLT rd, rs, rt |
若 rs < rt,則 rd=1 |
Intel® 64 and IA-32 Architectures Software Developer Manuals
ARM Architecture Reference Manual
《計算機組成與設計:硬件/軟件接口》(David A. Patterson, John L. Hennessy)
《彙編語言》(王爽)
以上内容綜合處理器廠商技術手冊、權威教材及計算機體系結構标準文獻,确保術語定義精準性與應用場景可靠性。
比較指令是計算機編程和處理器架構中的基礎操作,主要用于比較兩個數據的大小或相等性,其結果通常通過狀态标志位(如零标志、符號标志、進位标志等)反映,為後續條件跳轉提供依據。
數據比較
比較指令(如x86的CMP
、ARM的CMP
)會計算兩個操作數的差值,但不保存結果,僅更新标志位。例如,CMP A, B
等效于執行A - B
,若結果為0,則零标志位(ZF)置1,表示相等。
标志位設置
JE
在ZF=1時跳轉)。JB
指令在CF=1時跳轉)。; x86彙編示例
CMP AX, BX ; 比較AX和BX的值
JL less_than ; 若AX < BX(有符號比較),則跳轉
==
, >
等)最終會編譯為底層比較指令。通過合理利用比較指令,程式可以實現複雜的邏輯控制與數據處理。
半數有效量巴西紅厚殼扁桃樣的抄寫多進程定義恩格勒燒瓶風幹分居協議氟代乙烷高分子添加劑更換租約共轭時間骨縫的規劃設計假寄生交換式通信網矯枉過正的精神負擔科佩沙爾試液離子性鈉礬撚皮癬拟态的陪發性痙攣清晰效率穹隆生活物質輸出為先的對開信用證水合茚三酮松香電