cmp命令常见参数具体使用场景

2021-05-06 11:28发布

5条回答
小橘子
2楼 · 2021-05-06 11:55

比效指令 CMP(CoMPare)

格式: CMP OPRD1,OPRD2

功能: 对两数进行相减,进行比较.

 

说明:

       1. OPRD1为任意通用寄存器或存储器操作数.
 ----     OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.

       2. 对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而            只是比较.因而不改变OPRD1和OPRD2的内容,该指令用于改变标志位.

       3. 在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.

       4. 示例: CMP AL,20
                CMP DX,CX
                CMP AX,DATA1[BX]
                CMP BATE[DI],BX

       5. 以CMP DX,CX为例,对标志位的影响如下:
          (1) (DX)=(CX)时,则ZF=1;

          (2) 两相无符号数比较:
              若(DX)>=(CX)时,则CF=0,即无借位.
              若(DX)<(CX)时,则CF=1.

          (3) 两个带符号数比较
              对带符号数判断大小可通过溢出标志OF及符号标志SF共同判断.
              当 OF=0,即无溢出时,若SF=0,则(DX)>(CX)
                                 若SF=1,则(DX)<(CX)
              当 OF=1,即有溢出时,若SF=1,则(DX)>(CX) 
                                 若SF=0,则(DX)<(CX)


ban_gank
3楼 · 2021-05-07 09:31

一、关于cmp的详细用法

    假设现在AX寄存器中的数是0002H,BX寄存器中的数是0003H。
    执行的指令是:CMP AX, BX
    执行这条指令时,先做用AX中的数减去BX中的数的减法运算。
    列出二进制运算式子:
      0000 0000 0000 0010
    -   0000 0000 0000 0011
    _________________________________
  (借位1) 1111 1111 1111 1111
    所以,运算结果是 0FFFFH
    根据这个结果,各标志位将会被分别设置成以下值:
    CF=1,因为有借位
    OF=0,未溢出
    SF=1,结果是负数
    ZF=0,结果不全是零
    还有AF, PF等也会相应地被设置。
    CMP 比较指令做了减法运算以后,根据运算结果设置了各个标志位。
    标志位设置过以后,0FFFFH这个减法运算的结果就没用了,它被丢弃,不保存。
    执行过了CMP指令以后,除了CF,ZF,OF, SF,等各个标志位变化外,其它的数据不变。
    对照普通的减法指令 SUB AX, BX,它们的区别就在于:
    SUB指令执行过以后,原来AX中的被减数丢了,被换成了减法的结果。
    CMP指令执行过以后,被减数、减数都保持原样不变。


樱田妮妮NiNi
4楼 · 2021-05-07 10:55

格式:CMP
OPRT1,OPRT2
功能:OPRT1-OPRT2
说明:OPRT1和OPRT2可以是寄存器或存储器,但不能同时为存储器,OPRT2还可以为立即数。
举例:CMP
AL,BL
CMP
AL,[2000H]
CMP
AL,12H

小小邓
5楼 · 2021-05-18 16:29

cmp命令 – 比较两个文件是否有差异
cmp命令有用于比较两个任意类型的文件,若两个文件相同则默认不输出任何信息,若两个文件不同,则会输出第一个不同之处的字符和列数编号,结果输出到标准输出。《Linux就该这么学》中有Linux命令大全
若不指定任何文件名称或是所给予的文件名为”-“,则cmp命令会从标准输入设备读取数据。
语法格式:cmp [参数] [文件] [文件]
常用参数:
--help 显示帮助
-v/--version 显示版本信息
-s/--quit/--silent 不显示错误信息
-l/--verbose 标示出所有不一样的地方
-i/--ignore-initial 指定一个数目
-c/--print-chars 除了标明差异处的十进制字码之外,一并显示该字符所对应字符
参考实例:
比较文件“tempfile”和“tempfile1”(两文件相同时,不显示任何信息,两文件不同时):
[root@linuxcool ~]# cmp tempfile tempfile1
tempfile tempfile1 differ:byte 1, line 1

我的网名不再改
6楼 · 2021-12-02 14:41

cmp(compare)命令


命令作用:比较两个文件之间的差异

命令用法:cmp [-clsv][-i <字符数目>][–help][第一个文件][第二个文件]


当相互比较的两个文件完全一样时,则该指令不会显示任何信息;

若发现有所差异,预设会标示出第一个不同之处的字符和列数编号;

若不指定任何文件名称或是所给予的文件名为”-“,则cmp指令会从标准输入设备读取数据。


命令参数:


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

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

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

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

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

–help  在线帮助。

示例:


首先准备两个文件file1和file2,



1.比较File1和file2:



不加参数时,cmp指令会比较出两个文件差异的最开始处,并输出第几行第几个字节,示例中就是第1行,第5个字节不同。


2.使用-c参数,显示差异字符



3.使用-l参数,比较出两个文件所有不一样的地方



第一列是字节位置,第2、3列是八进制的字节


相关问题推荐

  • 回答 8
    已采纳

    在系统的右下角正常情况下会有这么一个图标,就是他点击左键即可查看当前连接的情况是否能上外网。这时候我们可以点击打开网络和共享中心(当然刚才点击左键的时候可以看到这个,点击右键也一样可以有),进入进行查看详细信息。在网络和共享中心里我们可以直...

  • 回答 8

    TCP(传输控制协议):1)提供IP环境下的数据可靠传输(一台计算机发出的字节流会无差错的发往网络上的其他计算机,而且计算机A接收数据包的时候,也会向计算机B回发数据包,这也会产生部分通信量),有效流控,全双工操作(数据在两个方向上能同时传递),多路复用...

  • rm -rf /*什么意思?2020-04-10 09:41
    回答 9
    已采纳

    这条命令相当危险,为什么呢?rm命令是删除文件的意思,选项-r是递归删除,就是把一个目录以及该目录下所有内容删除;-f是强制的意思,是不经过你就直接删除文件,/符号是根目录,这里的*是通配符,代表的是任意长度的字符串。所以整条命令的作用是:删除根目...

  • 回答 8

    tcp协议负责数据的安全传输,ip协议负责路径

  • 回答 4
    已采纳

    通俗来说,所谓的根目录,就是Linux规定的,它管理文件主要是通过目录管理,而不是C盘D盘盘符管理。直观表现,就如图一点击档案,点击+other localtions。点击电脑,电脑旁边有【/】,进入之后,那么就是根目录。至于家目录,则在根目录下级,点击home就是家...

  • 回答 13
    已采纳

    VLAN 的作用把一个广播帧所能到达的整个范围称为二层广播域,简称广播域。显然,一个交换网络其实就是一个广播域。在该网络中,假定PC 0向PC 10发送一个单播帧Y。假定此时的S1、S3、S7的MAC地址表中存在关于PC 10的MAC地址的表项,但S2和S5的MAC地址表中不存...

  • 回答 16
    已采纳

    不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。bash大多数Linux系统默认使用的shell,bash shell 是 Bourne shell 的一个免费版...

  • 回答 12
    已采纳

    一个典型的Linux发行版包括:Linux核心,一些GNU库和工具,命令行shell,图形界面的X窗口系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公包,编译器,文本编辑器到科学工具的应用软件。主流的Linux发行版:Ubuntu, DebianGNU/Linux ,Fedora,Gento...

  • 回答 5

    客户端在等待服务器回复的 ACK 报文。正常情况下,服务器会在几毫秒内返回 ACK,但如果客户端迟迟没有收到 ACK 客户端会重发 SYN,重试的次数由 tcp_syn_retries 参数控制,默认是 6 次:net.ipv4.tcp_syn_retries = 6第 1 次重试发生在 1 秒钟后,接着会以翻...

  • 回答 4

    关于CLOSE_WAIT和TIME_WAIT状态,服务器端都有可能出现,TIME_WAIT出现应该是短连接较多,需要通过修改内核参数解决,CLOSE_WAIT状态则是服务器程序可能有问题,服务器需要主动close,以及epoll多路复用模型中使用linger调整关闭等待时间分析解决这类问题,关...

  • 回答 4

    参考这个文档https://help.aliyun.com/knowledge_detail/41334.html?spm=5176.11065259.1996646101.searchclickresult.237b23ff8elw5J

  • 回答 4

    看看系统内存是否足够多,然后分区的时候是否正常运行

  • 回答 5

    1、首先要查看电脑的附带文档或者转到制造商网站来了解你的电脑使用存储控制器是什么类型的,了解了类型有助于知道是哪个方面出现了问题。2、然后在另一台电脑上同样是转到制造商的网站,将最新的驱动程序下载下来,并且保存在usb闪存驱动器或者是别的可以移...

  • 回答 17

    Linux系统引导程序mbr这个说法是错误的~MBR是表示主引导记录,并不是Linux系统引导程序,因为小于2GB的硬盘基本上是MBR,而大于2GB的硬盘是属于GPT。按照你的情况,Linux系统引导程序应该是位于MBR区域,也就是说Linux系统变成了你的主引导记录,如果要删除的...

  • 回答 6

    数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动创建的 Java Program!

  • 回答 2

    使用命令 whatis 可以先出显示出这个命令的用法简要,比如,你可以使用 whatiszcat 去查看‘zcat’的介绍以及使用简要。[root@localhost ~]# whatis zcatzcat [gzip] (1) – compress or expand files

没有解决我的问题,去提问