发布网友 发布时间:2023-10-12 09:16
共5个回答
热心网友 时间:2024-12-14 07:43
CMP D0 D2 M0该指令为比较道指令,将比较的结果回<,=,>三种结果分别告知给M0,M1,M2。
如果D0>D2,M0=1,如果D0=D2,M1=1,如果D0<D2,M2=1,所以使用这个指令会连续占用以M0为首的三个连续的位地址。
CMP用于16位数据比较,比较的数据范知围是-32768到+32767,比较数据类型可以是常熟K,H等,可以是数据寄存器D,也可以是计数器C,可以是时间继电器T,还可以是连续的位址(如K1X0,K2Y0,K3M0,K2S0等)。
扩展资料:
CF=1 则说明了有进位或借位,cmp是进行的减操作,故可以看出为借位,所以,此时oprd1<oprd2
CF=0 则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2
当有符号时:若SF=0,OF=0 则说明了此时的值为正数,没有溢出,可以直观的看出,oprd1>oprd2;若SF=1,OF=0 则说明了此时的值为负数,没有溢出,则为oprd1<oprd2
若SF=0,OF=1 则说明了此时的值为正数,有溢出,可以看出oprd1<oprd2;若SF=1,OF=1则说明了此时的值为负数,有溢出,可以看出oprd1>oprd2
最后两个可以作出这种判断的原因是,溢出的本质问题:两数同为正,相加,值为负,则说明溢出;两数同为负,相加,值为正,则说明溢出;故有,正正得负则溢出,负负得正则溢出
参考资料:百度百科——CMP指令
热心网友 时间:2024-12-14 07:44
CMP用于16位数据比较,比较的数据范围是-32768到+32767,比较数据类型可以是常熟K,H等,可以是数据寄存器D,也可以是计数器C,可以是时间继电器T,还可以是连续的位址(如K1X0,K2Y0,K3M0,K2S0等)。热心网友 时间:2024-12-14 07:44
不就是一个单值比较指令吗,比如D代表M0,那么D就是连续的M0 的3个地址编号。当比较指令被激活时,如果S2小于S1时M0为1、当S2等于S1时M1为1、当S2大于S1时M2为1.热心网友 时间:2024-12-14 07:45
CMP K100 C10 M0的意思是当100>C10时M0接通,当100=C10时M1接通,当100<C10时M2接通.热心网友 时间:2024-12-14 07:46
这个很简单啊 比较指令吗