导航:首页 > 程序命令 > cmp命令

cmp命令

发布时间:2022-01-24 11:27:50

‘壹’ 汇编中 cmp

cmp(compare)指令进行比较两个操作数的大小。

‘贰’ 汇编语言中,cmp指令怎么用比如cmp ax,bx ax大于bx怎么跳转,小于又怎么跳,等于呢

CMP OPR1 , OPR2指令只是对操作数OPR1 , OPR2之间运算比较,不保存结果。指令本身不进行跳转,只是根据结果设置相关的条件标志位(SF、ZF、CF、OF),CMP指令后往往跟着条件转移指令,实现根据比较的结果产生不同的程序分支的功能。

格式:CMP OPR1 , OPR2.

执行操作:(OPR1)-(OPR2)

功能:该指令与SUB指令一样执行减法的操作,但它并不保存运算结果,只是根据结果设置相关的条件标志位(SF、ZF、CF、OF)。CMP指令后往往跟着条件转移指令,实现根据比较的结果产生不同的程序分支的功能。

(2)cmp命令扩展阅读:

跳转相关的条件跳转指令:

1、JA/JNBE DEST指令:转移条件是CF=0 AND ZF=0,含义是无符号数A>B,英文表示是JMP above (not below or equal)。

2、JAE/JNB DEST指令:转移条件是CF=0,含义是无符号数A≥B,英文表示是JMP above or equal (not below )。

3、JB/JNAE DEST指令:转移条件是CF=1,含义是无符号数A<B,英文表示是JMP blow (not above or equal)。

4、JBE/JNA DEST指令:转移条件是CF=1 OR ZF=1,含义是无符号数A≤B,英文表示是JMP blow or equal (not above)。

‘叁’ 三菱plc的CMP指令到底是什么意思

三菱plc的CMP指令意思就是单芯片多处理器指令,可以将对称多处理器集成到同一芯片内,各个处理器并行执行不同的进程。

CMP指令下的结构被设计拥有多个处理器核,每个核都比较简单,有利于优化设计,因此在一定程度上更具发展前途。

据了解,IBM的Power4芯片和Sun的MAJC5200芯片都采用了CMP指令,从而会在处理器内部共享缓存,提高缓存利用率,同时简化其中设计的复杂度。

‘肆’ 汇编cmp指令的用法 大神请进

cmp是比较指令,cmp的功能相当于减法指令(sub)。它不保存结果,只是影响相应的标志位。其他的指令通过识别这些被影响的标志位来得知比较结果。

cmp指令格式: cmp 操作对象1, 操作对象2

注意是计算 操作对象2 - 操作对象1,和sub的一样,而不是 操作数1-操作数2(ATT格式), 但不保存结果,只是根据结果修改相应的标志位。示例代码:

#include <stdio.h>

int main()

{

int eax = 100;

int ebx = 200;

int output = -100;

asm volatile(

"movl %1,%%eax; "

"movl %2,%%ebx; "

"cmpl %%eax,%%ebx; " //用的是cmpl比较指令

"sets %%al; " //负数时设置

"movzbl %%al,%%eax; "

"movl %%eax,%0 "

: "=m"(output)

: "r"(eax), "r"(ebx)

: "eax");

printf("%d ", output);

return 0;

}

最终的输出是1

(4)cmp命令扩展阅读

cmp(compare)指令进行比较两个操作数的大小

例:cmpoprd1,oprd2

为第一个操作减去第二个操作数,

但不影响第两个操作数的值

它影响flag的CF,ZF,OF,AF,PF

若执行指令后

ZF=1 这个简单,则说明两个数相等,因为zero为1说明结果为0

当无符号时:

CF=1 则说明了有进位或借位,cmp是进行的减操作,故可以看出为借位,所以,此时oprd1<oprd2

CF=0 则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2

‘伍’ 三菱PLC命令CMP

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等)。



(5)cmp命令扩展阅读:

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是什么意思

cmp是比较指令, cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

比如:

mov ax,8

mov bx,3

cmp ax,bx

执行后:ax=8,ZF=0,PF=1,SF=0,CF=0,OF=0.

通过cmp指令执行后,相关标志位的值就可以看出比较的结果。

cmp ax,bx的逻辑含义是比较ax,bx中的值。如果执行后:

ZF=1则AX=BX

ZF=0则AX!=BX

SF=1则AX<BX

SF=0则AX>=BX

SF=0并ZF=0则AX>BX

SF=1或ZF=1则AX<=BX

CPU在执行cmp指令的时候,也包含两种含义:进行无符号运算和进行有符号数运算。

cmp ah,bh

如果ah=bh则ah-bh=0所以ZF=1

如果ah≠bh则ah-bh≠0所以ZF=0

所以我们根据cmp指令执行后ZF的值,就可以知道两个数据是否相等。如果ah<bh则可能发生什么情况呢?

对于有符号数运算,在ah<bh情况下,ah-bh显然可能引起SF=1既结果为负比如:

ah=1,bh=2则ah-bh=0FFH,0FFH为-1的补码,因为结果为负,所以SF=1。

ah=0FEH,bx=OFFH;则ax-bx=-2-(-1)=OFFH,因为结果为负,所以SF=1。

(6)cmp命令扩展阅读:

汇编语言的常用指令集如下:

数据传送指令集

MOV

功能: 把源操作数送给目的操作数

语法: MOV 目的操作数,源操作数

格式: MOV r1,r2

MOV r,m

MOV m,r

MOV r,data

XCHG

功能: 交换两个操作数的数据

语法: XCHG

格式: XCHG r1,r2 XCHG m,r XCHG r,m

PUSH,POP

功能: 把操作数压入或取出堆栈

语法: PUSH操作数POP 操作数

格式: PUSH r PUSH M PUSH data POP r POP m

PUSHF,POPF,PUSHA,POPA

功能:堆栈指令群

格式: PUSHF POPF PUSHA POPA

LEA,LDS,LES

功能: 取地址至寄存器

语法: LEA r,m LDS r,m LES r,m

XLAT(XLATB)

功能:查表指令

语法: XLAT XLAT m

算术运算指令

ADD,ADC

功能: 加法指令

语法: ADD OP1,OP2 ADC OP1,OP2

格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data

影响标志: C,P,A,Z,S,O

SUB,SBB

功能:减法指令

语法: SUB OP1,OP2 SBB OP1,OP2

格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data

影响标志: C,P,A,Z,S,O

INC,DEC

功能: 把OP的值加一或减一

语法: INC OP DEC OP

格式: INC r/m DEC r/m

影响标志: P,A,Z,S,O

NEG

功能: 将OP的符号反相(取二进制补码)

语法: NEG OP

格式: NEG r/m

影响标志: C,P,A,Z,S,O

MUL,IMUL

功能: 乘法指令

语法: MUL OP IMUL OP

格式: MUL r/m IMUL r/m

影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)

DIV,IDIV

功能:除法指令

语法: DIV OP IDIV OP

格式: DIV r/m IDIV r/m

CBW,CWD

功能:有符号数扩展指令

语法: CBW CWD

AAA,AAS,AAM,AAD

功能: 非压BCD码运算调整指令

语法: AAA AAS AAM AAD

影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)

‘柒’ CMP指令的指令详解

cmp(compare)指令进行比较两个操作数的大小
例:cmpoprd1,oprd2
为第一个操作减去第二个操作数,
但不影响第两个操作数的值
它影响flag的CF,ZF,OF,AF,PF
我们怎么判断大小呢?
若执行指令后
ZF=1 这个简单,则说明两个数相等,因为zero为1说明结果为0
当无符号时:

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指令用法

语法:cmp [-c[v][-i <字符数目>][--help][第一个文件][第二个文件]。


参数用法:

-c或–print-chars 除了标明差异处的十进制字码之外,一并显示该字符所对应字符。

-i<字符数目>或–ignore-initial=<字符数目> 指定一个数目。

-l或–verbose 标示出所有不一样的地方。

-s或–quiet或–silent 不显示错误信息。

-v或–version 显示版本信息。

–help 在线帮助。

(8)cmp命令扩展阅读:

CMP控制转移指令类型指令说明

无条件转移指令 JMP(段间和段内转移)

条件转移指令 JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)

循环指令 LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)

子程序指令 CALL(调用指令)、RET(返回指令)

中断指令INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)

处理机控制指令:

处理机控制指令类型指令说明

标志处理指令 CLC(进位位置0指令)、CMC(进位位求反指令)、STC(进位位置为1指令)、CLD(方向标志置1指令)、STD(方向标志位置1指令)、CLI(中断标志置0指令)、STI(中断标志置1指令)

其他处理机控制指令 NOP(无操作)、HLT(停机)、WAIT(等待)、ESC(换码)

‘玖’ cmp的命令是什么

winver检查Windows版本
dxdiag检查DirectX信息
mem.exe显示内存使用情况
Sndvol32音量控制程序
sfc.exe系统文件检查器
gpedit.msc 组策略
regedit.exe 注册表
Msconfig.exe 系统配置实用程序
cmd.exe CMD命令提示符
chkdsk.exe Chkdsk磁盘检查
mem.exe显示内存使用情况
gpedit.msc 组策略
regedit.exe 注册表
Msconfig.exe 系统配置实用程序
cmd.exe CMD命令提示符
services.msc 服务
lusrmgr.msc 本地账户管理
drwtsn32 系统医生
cleanmgr 整理
iexpress 木马捆绑工具,系统自带
mmc 控制台
dcpromo 活动目录安装
ntbackup 系统备份和还原
rononce -p 15秒关机
taskmgr 任务管理器
conf 启动netmeeting
devmgmt.msc 设备管理器
diskmgmt.msc NT的磁盘管理器
compmgmt.msc 计算机管理
winchat 局域网聊天
dvdplay DVD播放器
mplayer2 简易widnows media player
mspaint 画图板
nslookup 网络管理的工具
syskey 系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
wupdmgr WIDNOWS UPDATE
Clipbrd 剪贴板查看器
Odbcad32 ODBC数据源管理器
Nslookup IP地址侦测器

‘拾’ 请教下汇编的cmp指令的意思

意思是cmp [eax],0结果如果不相等即标志位ZF=0,则执行jne end语句。

jne是一个条件转移指令。当ZF=0,转至标号处执行。

cmp [eax],0的逻辑含义是比较[eax],0。如果执行后:

ZF=1则[eax]=0

ZF=0则[eax]!=0

SF=1则[eax]<0

SF=0则[eax]>=0

SF=0并ZF=0则[eax]>0

SF=1或ZF=1则[eax]<=0

(10)cmp命令扩展阅读:

CPU在执行cmp指令的时候,也包含两种含义:进行无符号运算和进行有符号数运算。

cmp ah,bh

如果ah=bh,则ah-bh=0,所以ZF=1

如果ah≠bh,则ah-bh≠0,所以ZF=0

所以根据cmp指令执行后ZF的值,就可以知道两个数据是否相等。

如果ah<bh则可能发生以下情况

对于有符号数运算,在ah<bh情况下,ah-bh显然可能引起SF=1既结果为负比如:

ah=1,bh=2则ah-bh=0FFH,0FFH为-1的补码,因为结果为负,所以SF=1。

ah=0FEH,bx=OFFH;则ax-bx=-2-(-1)=OFFH,因为结果为负,所以SF=1。

阅读全文

与cmp命令相关的资料

热点内容
android图片变灰 浏览:268
linuxvi下一个 浏览:973
安卓手机的应用锁怎么解 浏览:735
linux增加路径 浏览:849
sql身份证号最后四位加密 浏览:533
xp系统表格加密 浏览:856
光遇安卓军大衣什么时候上线 浏览:840
android应用商店图标 浏览:341
java计算圆的面积 浏览:643
应用编译优化recovery 浏览:577
域控命令n 浏览:258
php导出文件 浏览:13
谷歌地图网页版无法连接服务器地址 浏览:298
菜鸟工具在线编译python 浏览:858
栅格化命令有何作用 浏览:825
为什么压缩文件不能解压 浏览:311
足球app哪个软件好 浏览:96
产品经理逼疯程序员的一天 浏览:17
修改svn服务器ip地址 浏览:584
下列关于编译说法正确的是 浏览:246