汇编语言中CMP是什么意思? 汇编语言中CMP是什么意思

\u6c47\u7f16\u8bed\u8a00\u4e2dCMP\u7684\u4f5c\u7528\u662f\u4ec0\u4e48\uff1f

cmp(compare)\u6307\u4ee4\u8fdb\u884c\u6bd4\u8f83\u4e24\u4e2a\u64cd\u4f5c\u6570\u7684\u5927\u5c0f\u3002
\u6c47\u7f16\u8bed\u8a00\u662f\u9762\u5411\u673a\u5668\u7684\u7a0b\u5e8f\u8bbe\u8ba1\u8bed\u8a00\u3002\u5728\u6c47\u7f16\u8bed\u5408\u4e2d\uff0c\u7528\u52a9\u8bb0\u7b26\u4ee3\u66ff\u64cd\u4f5c\u7801\uff0c\u7528\u5730\u5740\u7b26\u53f7\u6216\u6807\u53f7\u4ee3\u66ff\u5730\u5740\u7801\u3002\u8fd9\u6837\u7528\u7b26\u53f7\u4ee3\u66ff\u673a\u5668\u8bed\u8a00\u7684\u4e8c\u8fdb\u5236\u7801\uff0c\u5c31\u628a\u673a\u5668\u8bed\u8a00\u53d8\u6210\u4e86\u6c47\u7f16\u8bed\u8a00\u3002\u4e8e\u662f\u6c47\u7f16\u8bed\u8a00\u4ea6\u79f0\u4e3a\u7b26\u53f7\u8bed\u8a00\u3002\u4f7f\u7528\u6c47\u7f16\u8bed\u8a00\u7f16\u5199\u7684\u7a0b\u5e8f\uff0c\u673a\u5668\u4e0d\u80fd\u76f4\u63a5\u8bc6\u522b\uff0c\u8981\u7531\u4e00\u79cd\u7a0b\u5e8f\u5c06\u6c47\u7f16\u8bed\u8a00\u7ffb\u8bd1\u6210\u673a\u5668\u8bed\u8a00\uff0c\u8fd9\u79cd\u8d77\u7ffb\u8bd1\u4f5c\u7528\u7684\u7a0b\u5e8f\u53eb\u6c47\u7f16\u7a0b\u5e8f\uff0c\u6c47\u7f16\u7a0b\u5e8f\u662f\u7cfb\u7edf\u8f6f\u4ef6\u4e2d\u8bed\u8a00\u5904\u7406\u7cfb\u7edf\u8f6f\u4ef6\u3002\u6c47\u7f16\u7a0b\u5e8f\u628a\u6c47\u7f16\u8bed\u8a00\u7ffb\u8bd1\u6210\u673a\u5668\u8bed\u8a00\u7684\u8fc7\u7a0b\u79f0\u4e3a\u6c47\u7f16\u3002
\u4f8b:cmp oprd1,oprd2\uff0c\u4e3a\u7b2c\u4e00\u4e2a\u64cd\u4f5c\u51cf\u53bb\u7b2c\u4e8c\u4e2a\u64cd\u4f5c\u6570\uff0c\u4f46\u4e0d\u5f71\u54cd\u4e24\u4e2a\u64cd\u4f5c\u6570\u7684\u503c\uff0c\u5b83\u5f71\u54cdflag\u7684CF\uff0cZF\uff0cOF\uff0cAF\uff0cPF\u3002\u82e5\u6267\u884c\u6307\u4ee4\u540e\uff0cZF=1 \u5219\u8bf4\u660e\u4e24\u4e2a\u6570\u76f8\u7b49\uff0c\u56e0\u4e3azero\u4e3a1\u8bf4\u660e\u7ed3\u679c\u4e3a0\u3002\u5f53\u65e0\u7b26\u53f7\u65f6\uff0cCF=1 \u5219\u8bf4\u660e\u4e86\u6709\u8fdb\u4f4d\u6216\u501f\u4f4d\uff0ccmp\u662f\u8fdb\u884c\u7684\u51cf\u64cd\u4f5c\uff0c\u6545\u53ef\u4ee5\u770b\u51fa\u4e3a\u501f\u4f4d\uff0c\u6240\u4ee5\uff0coprd1<oprd2\u3002
CF=0 \u5219\u8bf4\u660e\u4e86\u65e0\u501f\u4f4d\uff0c\u4f46\u6b64\u65f6\u8981\u6ce8\u610fZF\u662f\u5426\u4e3a0\uff0c\u82e5\u4e3a0\uff0c\u5219\u8bf4\u660e\u7ed3\u679c\u4e0d\u4e3a0\uff0c\u6545\u6b64\u65f6oprd1>oprd2\uff0c\u5f53\u6709\u7b26\u53f7\u65f6\uff0c\u82e5SF=0\uff0cOF=0 \u5219\u8bf4\u660e\u4e86\u6b64\u65f6\u7684\u503c\u4e3a\u6b63\u6570\uff0c\u6ca1\u6709\u6ea2\u51fa\uff0c\u53ef\u4ee5\u76f4\u89c2\u7684\u770b\u51fa\uff0coprd1>oprd2\uff0c\u82e5SF=1\uff0cOF=0 \u5219\u8bf4\u660e\u4e86\u6b64\u65f6\u7684\u503c\u4e3a\u8d1f\u6570\uff0c\u6ca1\u6709\u6ea2\u51fa\uff0c\u5219\u4e3aoprd1oprd2\u3002

\u4f60\u8fd9\u6837\u505a\u592a\u9ebb\u70e6\u4e86.
\u7528\u4e00\u79cd\u65b9\u6cd5\u975e\u5e38\u7b80\u5355,\u4ee5\u540e\u90fd\u4e0d\u7528\u8fd9\u6837\u8ba8\u8bba\u4e86,\u5c31\u662f\u7528\u6570\u8f74.
\u8fd9\u4e2a\u4e0d\u7b49\u5f0f\u53ef\u4ee5\u770b\u4f5c\u6570\u8f74\u4e0a\u67d0\u4e2a\u6570\u5230(-2,0)\u8fd9\u4e00\u70b9\u7684\u8ddd\u79bb\u548c(3,0)\u8fd9\u4e00\u70b9\u8ddd\u79bb\u7684\u548c.\u539f\u56e0:\u5047\u8bbe\u8fd9\u70b9\u4e3a(x,0)
\u56e0\u4e3a\u5230(-2,0)\u7684\u8ddd\u79bb\u4e3a|x+2|
\u540c\u7406.
\u6240\u4ee5\u5230\u8fd9\u4e24\u70b9\u8ddd\u79bb\u7684\u6700\u5c0f\u503c\u5c31\u662f\u8fd9\u4e2a\u70b9\u5728-2\u52303\u4e2d\u95f4.
\u4e5f\u5c31\u662f\u8bf4,\u8fd9\u4e24\u4e2a\u8ddd\u79bb\u52a0\u8d77\u6765\u5c31\u662f5,\u8fd9\u662f\u6700\u5c0f\u503c.
\u90a3\u4e48a\u53ea\u8981\u6bd4\u5b83\u4eec\u7684\u6700\u5c0f\u503c\u8fd8\u5927\u5c31\u53ef\u4ee5\u4e86.
\u6240\u4ee5a>5
\u5f88\u65b9\u4fbf\u5427.
\u4ee5\u540e\u770b\u5230\u8fd9\u79cd\u7c7b\u578b\u7684\u9898\u76ee,\u5c31\u7528\u6570\u8f74,\u770b\u4f5c\u662f\u67d0\u4e2a\u6570\u5230\u4e24\u70b9\u7684\u8ddd\u79bb\u6765\u6c42,\u65b9\u4fbf\u6781\u4e86.

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



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

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

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

比较的意思,用于比较两个操作数,英文全称:compare。

  • cmp涓殑c鏄粈涔堟剰鎬
    绛旓細闄や簡鐢ㄤ簬姣旇緝涓嶅悓鏁版嵁绫诲瀷鐨勫彉閲忥紝cmp杩樺彲浠ョ敤浜庡瓧绗︿覆鎺掑簭銆傚湪瀛楃涓叉帓搴忎腑锛宑mp鐢ㄤ簬姣旇緝涓や釜瀛楃涓茬殑澶у皬锛岀‘瀹氬畠浠湪ASCII鐮佽〃涓殑浣嶇疆銆傚鏋滀竴涓瓧绗︿覆鐨刟scii鐮佹瘮鍙︿竴涓瓧绗︿覆鐨刟scii鐮佸皬锛岄偅涔堣繖涓瓧绗︿覆灏卞簲璇ユ帓鍦ㄥ墠闈紝鍙嶄箣鍒欐帓鍦ㄥ悗闈傚湪姹囩紪璇█涓锛cmp鏄涓绉嶆瘮杈冩寚浠わ紝鐢ㄤ簬灏嗘搷浣滄暟涓庡瘎瀛樺櫒涓...
  • 鎳姹囩紪璇█鑰,璇疯繘
    绛旓細CMP鏄鐢ㄦ瘮杈鐨鎸囦护锛岄氳繃姣旇緝涓や釜鎿嶄綔鏁版潵鏀瑰彉鏍囧織瀵勫瓨鍣ㄧ殑鐩稿簲浣嶃傜劧鍚庡氨鍙互閫氳繃鏌ョ湅鏍囧織瀵勫瓨鍣ㄧ殑鐩稿簲浣嶆潵鑾峰緱姣旇緝缁撴灉銆侻OV鏄暟鎹浆绉绘寚浠ゃ傚皢绗簩涓搷浣滄暟鐨勫兼斁鍒扮涓涓搷浣滄暟涓侷NT 21H锛屾槸璋冪敤DOS涓柇锛孌OS涓柇涓湁寰堝鍔熻兘锛屽彲浠ョ湅鍋氭湁寰堝涓瓙绋嬪簭銆傜劧鍚庢垜浠鍦ㄨ皟鐢↖NT 21H涔嬪墠锛岄氳繃AH鐨勫兼潵...
  • 姹囩紪璇█涓瑿MP鍜孋MPS鏈浠涔涓嶅悓
    绛旓細鏈夌鍙锋暟銆佹棤绗﹀彿鏁伴兘鏄敤cmp銆備覆姣旇緝鐢╟mps.
  • 姹囩紪鎸囦护cmpe鏄粈涔堟剰鎬
    绛旓細姹囩紪涓紝鍛藉悕涓鑸槸鏈夎寰鐨 cmp--compare锛屾瘮杈 e---equal锛岀浉绛 cmpe 姣旇緝鏄惁鐩哥瓑 涔嬬被鐨勮繕鏈夊緢澶氾紝濡俲e銆乯ne鈥︹﹀ソ濂藉涔狅紝鑷繁鎬荤粨璁板繂瑙勫緥鍚э紝鍛靛懙锛 Good Luck锛
  • 姹囩紪涓殑CMP(CMPSB/CMPSW)鎸囦护,鏄浣曟瘮杈冨瓧绗︾殑澶у皬鐨?
    绛旓細姹囩紪涓殑CMP锛圕MPSB/CMPSW锛夋寚浠わ紝瀹為檯涓婂氨鏄瘮杈冨瓧绗︾殑ASCII鐮佺殑澶у皬銆
  • 姹囩紪璇█鐨刢mp鑳借繛鐢ㄥ悧
    绛旓細鑳姐CMP鏄杩涜锛堝亣鐨锛夊噺娉曡绠楀悗锛屼笉鏀瑰彉瀵勫瓨鍣ㄤ腑鐨勫硷紝浠呮敼鍙樻爣蹇椾綅鐨勮繍绠楁搷浣滄暟锛屾牴鎹繍绠楃粨鏋滐紝鑳戒笌JZJAJBJNAJNB绛夋寚浠よ繛鐢ㄣ侰MP锛氬父涓嶫E銆丣NE杩炵敤锛屽彉鎴恑f璇彞銆
  • 姹囩紪涓殑LDR銆丩DRB銆丼TRB銆丼UBS銆丅NE銆CMP鍜孲UBS鏄粈涔堟剰鎬?
    绛旓細2銆佺涓涓64浣嶆搷浣滄暟瀛樻斁鍦ㄥ瘎瀛樺櫒R2锛孯3涓浜屼釜64浣嶆搷浣滄暟瀛樻斁鍦ㄥ瘎瀛樺櫒R4锛孯5涓64浣嶇粨鏋滃瓨鏀惧湪R0R1涓紝64浣鐨鍑忔硶绗竴涓搷浣滄暟鍑忓幓绗簩涓搷浣滄暟锛屽彲鐢变互涓嬭鍙ュ疄鐜癝UBS R0,R2,R4; 浣32浣嶇浉鍑忥紝S琛ㄧず缁撴灉褰卞搷鏉′欢鏍囧織浣嶇殑鍊笺3銆丼BC R1,R3,R5; 楂32浣嶇浉鍑CMP 姣旇緝鎸囦护鏍煎紡CMP<cond> <Rn>,...
  • CMP鏄粈涔
    绛旓細2016-12-28 "CMP"鏄粈涔堟剰鎬 24 2006-06-18 缃戠粶涓殑CMP鏄粈涔堟剰鎬 2013-07-16 CMP鐨勫惈涔夋槸浠涔? 1 2012-11-13 寰數瀛愰鍩鐨刢mp鏄粈涔堟剰鎬? 10 2014-06-28 cmp鏄粈涔堟剰鎬 5 2015-06-10 c璇█涓strcmp鍑芥暟鐨刢mp鏄粈涔堝崟璇嶇殑缂╁啓 24 鏇村绫讳技闂 > 涓轰綘鎺ㄨ崘: 鐗瑰埆鎺ㄨ崘 鍏ㄧ悆棣栧紶濂ュ瘑鍏嬫垘...
  • c璇█涓strcmp鍑芥暟鐨刢mp鏄粈涔鍗曡瘝鐨勭缉鍐
    绛旓細1銆cmp 鏄 compare锛屾瘮杈冪殑缂╁啓銆2銆乻trcmp鏄C璇█涓澶存枃浠<string.h>锛堝瓧绗︿覆鍑芥暟锛変腑瀹氫箟鐨勪竴涓敤浜庡涓ょ粍瀛楃涓茶繘琛屾瘮杈冪殑鍑芥暟锛屽畠鐨勮繑鍥炲兼槸int绫诲瀷銆傚亣璁炬湁涓ょ粍瀛楃涓瞔s鍜宑t锛屽綋cs<ct鏃讹紝鍑芥暟杩斿洖涓涓礋鏁帮紱褰揷s==ct鏃讹紝鍑芥暟杩斿洖0锛涘綋cs>ct鏃讹紝鍑芥暟杩斿洖涓涓鏁般傚嵆锛氫袱涓瓧绗︿覆鑷乏鍚戝彸...
  • 8086涓8088瀹姹囩紪璇█涓jb,source,target,again,cmp,code鏄粈涔堟剰鎬,鏈...
    绛旓細jb 姹囩紪鎸囦护 灏忎簬杞蛋 source锛宼arget 婧,鐩爣 涓鑸嚭鐜板湪鎸囦护閲,濡俶ov target,source鎶婃簮鎵浠h〃鍙橀噺瀛樺叆鐩爣鎵浠h〃鍙橀噺 again 姹囩紪鏍囪瘑绗 cmp 姹囩紪鎸囦护 姣旇緝 code 姹囩紪鏍囪瘑绗
  • 扩展阅读:广告中cmp是什么意思 ... 汇编语言cmp用法 ... 汇编cmp什么作用 ... 汇编语言jmp是什么意思 ... 汇编中cmp的使用 ... 汇编语言cmp指令怎么用 ... 汇编cmp指令是什么意思 ... 半导体cmp是什么意思 ... 半导体cmp设备是什么 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网