CMP指令

CMP指令

比較指令
CMP指令後往往跟着條件轉移指令,實現根據比較的結果産生不同的程序分支的功能。
    中文名:CMP指令 外文名:Chip multiprocessors 适用領域: 所屬學科: 提出單位:美國斯坦福大學 全稱:單芯片多處理器

CMP

CMP是由美國斯坦福大學提出的,英文名稱是Chip multiprocessors,翻譯成中文就是單芯片多處理器,也指多核心其思想是将大規模并行處理器中的SMP(對稱多處理器)集成到同一芯片内,各個處理器并行執行不同的進程。與CMP比較, SMT處理器結構的靈活性比較突出。

但是,當半導體工藝進入0.18微米以後,線延時已經超過了門延遲,要求微處理器的設計通過劃分許多規模更小、局部性更好的基本單元結構來進行。相比之下,由于CMP結構已經被劃分成多個處理器核來設計,每個核都比較簡單,有利于優化設計,因此更有發展前途。目前,IBM 的Power 4芯片和Sun的 MAJC5200芯片都采用了CMP結構。多核處理器可以在處理器内部共享緩存,提高緩存利用率,同時簡化多處理器系統設計的複雜度。

在微型計算機的彙編語言中,CMP(compare)是其中一條指令,叫做比較指令。cmp的功能相當于減法指令,隻是對操作數之間運算比較,不保存結果。cmp指令執行後,将對标志寄存器産生影響。其他相關指令通過識别這些被影響的标志寄存器位來得知比較結果。使用例子如:CMP ax, bx

格式

CMP OPR1 , OPR2.

執行操作

(OPR1)-(OPR2)

功能

該指令與SUB指令一樣執行減法的操作,但它并不保存運算結果,隻是根據結果設置相關的條件标志位(SF、ZF、CF、OF)。CMP指令後往往跟着條件轉移指令,實現根據比較的結果産生不同的程序分支的功能。

指令算法

cmp是比較指令, cmp的功能相當于減法指令,隻是不保存結果。cmp指令執行後,将對标志寄存器産生影響。其他相關指令通過識别這些被影響的 标志寄存器位來得知比較結果。

指令詳解

cmp(compare)指令進行比較兩個操作數的大小

例: cmp oprd1,oprd2

為第一個操作減去第二個 操作數,但不影響第兩個操作數的值它影響flag的CF,ZF,OF,AF,PF

若執行指令ZF=1 這個簡單,則說明兩個數相等,因為zero為1說明結果為0

當無符号時:

若CF=1 則說明了有進位或借位, cmp是進行的減操作,故可以看出為借位,所以,此時oprd1

CF=0 則說明了無借位,但此時要注意ZF是否為0,若為0,則說明結果不為0,故此時oprd1>oprd2

當有符号時:

若SF=0,OF=0 則說明了此時的值為正數,沒有溢出,可以直觀的看出,oprd1>oprd2

若SF=1,OF=0 則說明了此時的值為負數,沒有溢出,則為oprd1

若SF=0,OF=1 則說明了此時的值為正數,有溢出,可以看出oprd1

若SF=1,OF=1則說明了此時的值為負數,有溢出,可以看出oprd1>oprd2

最後兩個可以作出這種判斷的原因是,溢出的本質問題:

兩數同為正,相加,值為負,則說明溢出

兩數同為負,相加,值為正,則說明溢出

故有,正正得負則溢出,負負得正則溢出

操作數

在plc中CMP比較指令有三個操作數,兩個源操作數[S1.]和[S2.],一個目标操作數[D.]。該指令将[S1.]和[S2.]進行比較,将結果送到[D.]中。

相關詞條

相關搜索

其它詞條