pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

匯編語言中test和cmp有什么區(qū)別

匯編語言(assembly language)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級(jí)語言,亦稱為符號(hào)語言。這篇文章主要介紹了匯編語言中test和cmp有什么區(qū)別,需要的朋友

匯編語言(assembly language)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級(jí)語言,亦稱為符號(hào)語言。在匯編語言中,用助記符代替機(jī)器指令的操作碼,用地址符號(hào)或標(biāo)號(hào)代替指令或操作數(shù)的地址。在不同的設(shè)備中,匯編語言對(duì)應(yīng)著不同的機(jī)器語言指令集,通過匯編過程轉(zhuǎn)換成機(jī)器指令。特定的匯編語言和特定的機(jī)器語言指令集是一一對(duì)應(yīng)的,不同平臺(tái)之間不可直接移植。下面看下匯編語言中test和cmp有什么區(qū)別,

匯編test和cmp區(qū)別

看過破解教程,都知道test,cmp是比較關(guān)鍵,可是我一直不清楚它們究竟是怎么比較的,最后下決心找了很多資料,和大家一起把它們弄清楚.

首先看看:狀態(tài)寄存器(即標(biāo)志寄存器)

PSW(Program Flag)程序狀態(tài)字(即標(biāo)志)寄存器,是一個(gè)16位寄存器,由條件碼標(biāo)志(flag)和控制標(biāo)志構(gòu)成,
如下所示:

條件碼:

①OF(Overflow Flag)溢出標(biāo)志,溢出時(shí)為1,否則置0.標(biāo)明一個(gè)溢出了的計(jì)算,如:結(jié)構(gòu)和目標(biāo)不匹配.
②SF(Sign Flag)符號(hào)標(biāo)志,結(jié)果為負(fù)時(shí)置1,否則置0.
③ZF(Zero Flag)零標(biāo)志,運(yùn)算結(jié)果為0時(shí)置1,否則置0.
④CF(Carry Flag)進(jìn)位標(biāo)志,進(jìn)位時(shí)置1,否則置0.注意:Carry標(biāo)志中存放計(jì)算后最右的位.
⑤AF(Auxiliary carry Flag)輔助進(jìn)位標(biāo)志,記錄運(yùn)算時(shí)第3位(半個(gè)字節(jié))產(chǎn)生的進(jìn)位置。
有進(jìn)位時(shí)1,否則置0.
⑥PF(Parity Flag)奇偶標(biāo)志.結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1,否則置0.

控制標(biāo)志位:

⑦DF(Direction Flag)方向標(biāo)志,在串處理指令中控制信息的方向。
⑧IF(Interrupt Flag)中斷標(biāo)志。
⑨TF(Trap Flag)陷井標(biāo)志。

為舉例方便說一下jnz和jz

測(cè)試條件
JZ ZF=1
JNZ ZF=0
即Jz=j(luò)ump if zero (結(jié)果為0則設(shè)置ZF零標(biāo)志為1,跳轉(zhuǎn))
Jnz=j(luò)ump if not zero

好,接著來看test和cmp

test屬于邏輯運(yùn)算指令

功能: 執(zhí)行BIT與BIT之間的邏輯運(yùn)算
測(cè)試(兩操作數(shù)作與運(yùn)算,僅修改標(biāo)志位,不回送結(jié)果).
Test對(duì)兩個(gè)參數(shù)(目標(biāo),源)執(zhí)行AND邏輯操作,并根據(jù)結(jié)果設(shè)置標(biāo)志寄存器,結(jié)果本身不會(huì)保存。EST AX,BX 與 AND AX,BX 命令有相同效果

語法: TEST r/m,r/m/data
影響標(biāo)志: C,O,P,Z,S(其中C與O兩個(gè)標(biāo)志會(huì)被設(shè)為0)

運(yùn)用舉例:

1.Test用來測(cè)試一個(gè)位,例如寄存器:

test eax, 100b; b后綴意為二進(jìn)制
jnz **; 如果eax右數(shù)第三個(gè)位為1,jnz將會(huì)跳轉(zhuǎn)

我是這樣想的,jnz跳轉(zhuǎn)的條件是ZF=0,ZF=0意味著ZF(零標(biāo)志)沒被置位,即邏輯與結(jié)果為1.

2.Test的一個(gè)非常普遍的用法是用來測(cè)試一方寄存器是否為空:

test ecx, ecx
jz somewhere

如果ecx為零,設(shè)置ZF零標(biāo)志為1,Jz跳轉(zhuǎn)

CMP屬于算術(shù)運(yùn)算指令

功能: 比較兩個(gè)值(寄存器,內(nèi)存,直接數(shù)值)
語法: CMP r/m,r/m/data
標(biāo)志位: C,P,A,Z,O

CMP比較.(兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果).
cmp實(shí)際上是只設(shè)置標(biāo)志不保存結(jié)構(gòu)的減法,并設(shè)置Z-flag(零標(biāo)志).
零標(biāo)志很像carry,也是內(nèi)部標(biāo)志寄存器的一位.

例如:

Cmp eax, 2; 如果eax-2=0即eax=2就設(shè)置零標(biāo)志為1
Jz **; 如果設(shè)置了零標(biāo)志就跳轉(zhuǎn)

我得出的結(jié)論
test邏輯與運(yùn)算結(jié)果為零,就把ZF(零標(biāo)志)置1;
cmp 算術(shù)減法運(yùn)算結(jié)果為零,就把ZF(零標(biāo)志)置1.

結(jié)論很簡(jiǎn)單嘛,之前我怎么就分不清呢,真是笨哪!

ps:匯編語言中CMP的作用是什么?

mp(compare)指令進(jìn)行比較兩個(gè)操作數(shù)的大小。

1.匯編語言是面向機(jī)器的程序設(shè)計(jì)語言。在匯編語合中,用助記符代替操作碼,用地址符號(hào)或標(biāo)號(hào)代替地址碼。這樣用符號(hào)代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。于是匯編語言亦稱為符號(hào)語言。使用匯編語言編寫的程序,機(jī)器不能直接識(shí)別,要由一種程序?qū)R編語言翻譯成機(jī)器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。匯編程序把匯編語言翻譯成機(jī)器語言的過程稱為匯編。

2.例:cmp oprd1,oprd2,為第一個(gè)操作減去第二個(gè)操作數(shù),但不影響兩個(gè)操作數(shù)的值,它影響flag的CF,ZF,OF,AF,PF。若執(zhí)行指令后,ZF=1 則說明兩個(gè)數(shù)相等,因?yàn)閦ero為1說明結(jié)果為0。當(dāng)無符號(hào)時(shí),CF=1 則說明了有進(jìn)位或借位,cmp是進(jìn)行的減操作,故可以看出為借位,所以,oprd1<oprd2。

3.CF=0 則說明了無借位,但此時(shí)要注意ZF是否為0,若為0,則說明結(jié)果不為0,故此時(shí)oprd1>oprd2,當(dāng)有符號(hào)時(shí),若SF=0,OF=0 則說明了此時(shí)的值為正數(shù),沒有溢出,可以直觀的看出,oprd1>oprd2,若SF=1,OF=0 則說明了此時(shí)的值為負(fù)數(shù),沒有溢出,則為oprd1<oprd2,若SF=0,OF=1 則說明了此時(shí)的值為正數(shù),有溢出,可以看出oprd1<oprd2,若SF=1,OF=1則說明了此時(shí)的值為負(fù)數(shù),有溢出,可以看出oprd1>oprd2。

總結(jié)

以上所述是小編給大家介紹的匯編語言中test和cmp有什么區(qū)別,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)html5模板網(wǎng)網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

主站蜘蛛池模板: 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 管理会计网-PCMA初级管理会计,中级管理会计考试网站 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 浙江自考_浙江自学考试网 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 小小作文网_中小学优秀作文范文大全 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 铸铁平台,大理石平台专业生产厂家_河北-北重机械 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 魔方网-培训咨询服务平台| 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 工业CT-无锡璟能智能仪器有限公司| 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-北京罗伦过滤技术集团有限公司 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 |