汇编语言中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。

扩展资料:

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

数据传送指令集

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-08-30
cmp(compare)指令进行比较两个操作数的大小
例:cmp oprd1,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
第2个回答  2019-08-08
cmp(compare)指令进行比较两个操作数的大小
例:cmp
oprd1,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
第3个回答  2020-05-07
cmp(compare)指令进行比较两个操作数的大小
例:cmp
oprd1,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
第4个回答  推荐于2018-02-27
比较的意思,用于比较两个操作数,英文全称:compare。本回答被提问者和网友采纳

汇编语言中CMP是什么意思
1、cmp就是为了设置控制位,不会改变数值;2、cmp指令进行比较两个操作数的大小;3、cmp的意思。在进行比较的时候将个数做减法运算,运算是影响符号位的,大数减小数,符号位为加,反则为减。所以执行该指令后可以通过查询符号位CF是0还是1就可以知道两个数的大小。

汇编语言中CMP是什么意思
在汇编语言中,CMP表示"compare",即比较指令。它用于比较两个操作数的大小并更新条件码寄存器。通常,它用在跳转指令之前,以决定是否执行跳转操作。CMP指令会将结果的标志位设置为相应的值,例如大于、小于或者相等。

汇编语言中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
cmp(compare)指令进行比较两个操作数的大小。汇编语言是面向机器的程序设计语言。在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将...

cmp是什么意思?
CMP是指“比较”或“比较指令”。在计算机科学领域中,CMP是一个常见的术语,尤其在处理器架构和汇编语言中。其具体含义和应用如下:一、CMP的基本含义 CMP是英文“Compare”的缩写,意为“比较”。在计算机技术中,CMP操作是指对两个数据值进行比较,以决定程序的执行路径或进行特定的数据处理。在CPU中...

cmp是什么意思
cmp有多种含义:1.在计算机科学中,cmp是一种用于比较两个值的指令。当处理变量或者数据时,计算机常常需要通过比较操作来确定它们的相对大小。在这种情况下,"cmp" 可以被理解为 "compare"。在编程语言的汇编级别,cmp指令用于设置状态标志,这些标志表示比较的结果。详细解释如下:1. 在汇编语言中:cmp...

CMP的含义是什么?
汇编语言中 cmp是compare的意思 比较 【附】cmp是比较指令,cmp的功能相当于减法指令。它不保存结果,只是影响相应的标志位。其他的指令通过识别这些被影响的标志位来得知比较结果。cmp指令格式: cmp 操作对象1, 操作对象2 计算 操作对象1 - 操作对象2 但不保存结果,只是根据结果修改相应的标志...

汇编指令学习(CMP,TEST)
CMP指令是汇编语言中的一个比较操作,它类似于SUB命令,用于比较两个操作数。当这两个数相等时,ZF(零标志位)会置为1,此时,如果后续的指令使用je(jump if equal,如果相等则跳转)进行条件判断,会根据ZF的状态决定是否执行特定的指令。例如,如果eax和ebx的值分别为1和2,je不会执行跳转。另...

汇编语言中CMP和CMPS有什么不同
有符号数、无符号数都是用cmp。串比较用cmps.

请问在汇编语言中TEXT和CMP指令有什么异同?
test指令是位测试指令。cmp是整体(字节、字、双字)比较指令。

相似回答