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)文檔推薦

主站蜘蛛池模板: 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 乳化沥青设备_改性沥青设备_沥青加温罐_德州市昊通路桥工程有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 东莞猎头公司_深圳猎头公司_广州猎头公司-广东万诚猎头提供企业中高端人才招聘服务 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 防爆电机-高压防爆电机-ybx4电动机厂家-河南省南洋防爆电机有限公司 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 安徽华耐泵阀有限公司-官方网站 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 硅胶布|电磁炉垫片|特氟龙胶带-江苏浩天复合材料有限公司 | 诗词大全-古诗名句 - 古诗词赏析| 塑料薄膜_PP薄膜_聚乙烯薄膜-常州市鑫美新材料包装厂 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 南京租车,南京汽车租赁,南京包车,南京会议租车-南京七熹租车 |