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.]中。

相关词条

相关搜索

其它词条