最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

匯編 JCC指令表與筆記

 更新時(shí)間:2020年01月20日 15:30:12   投稿:mdxy-dxy  
這篇文章主要介紹了匯編 JCC指令表與筆記,需要的朋友可以參考下

匯編-JCC

之前可以修改EIP寄存器的指令
JMP,CALL,RETN

所有JCC指令的動(dòng)作->根據(jù)標(biāo)志寄存器修改EIP的值

標(biāo)志寄存器 EFLAGS

CF(bit 0)[Carry flag] C位

若算術(shù)產(chǎn)生的結(jié)果在最高有效位(most-significant bit)發(fā)生進(jìn)位或者借位則將其置1 反之清零

這個(gè)標(biāo)志通常用來(lái)指示無(wú)符號(hào)證書(shū)運(yùn)算的溢出狀態(tài)

寬度溢出位。只要容器內(nèi)放不下就會(huì)發(fā)生變化

MOV AL,0xFE
ADD AL,2 C => 1

MOV AL,0x7F
SBU AL,0xFF C => 1

PF (bit 2) [parity flag] P位 奇偶校驗(yàn)位

如果結(jié)果的最低有效字節(jié) 最后一個(gè)字節(jié)(least-significant byte)包含偶數(shù)個(gè)1位則該位置1,否則清零

利用PF可進(jìn)行奇偶校驗(yàn)檢查

需要傳輸1100 1110,數(shù)據(jù)中含5個(gè)1,所以其奇校驗(yàn)位位0,同時(shí)吧1100 1110傳輸給接收方,
接收方收到數(shù)據(jù)后再一次計(jì)算奇偶性,1100 1110中仍然含有5個(gè)1,所以接收方計(jì)算出的奇偶驗(yàn)位還是0,與發(fā)送方一致,表示在此次傳輸過(guò)程中未發(fā)生錯(cuò)誤。

例子:

MOV AL,0xCE

AF (bit 4)[Auxiliary Carry Flag] 輔助進(jìn)位標(biāo)志器

如果算術(shù)操作在結(jié)果的第三位發(fā)生進(jìn)位或者借位則該標(biāo)志置1,否則清零

這個(gè)標(biāo)志在BCD(binary-code decimal) 算術(shù)運(yùn)算中被使用

ZF(bit 5)[Zero Flag] 用的最多 劃重點(diǎn)。。

若結(jié)果為0則將其置1,反之清零。
經(jīng)常與CMP或者TEST等指令一起使用

例1: 判斷2個(gè)值是否相等

MOV EAX,100
MOV ECX,100
CMP EAX,ECX

(CMP指令相當(dāng)于SUB指令,但是相減的結(jié)果并不保存到第一個(gè)操作數(shù)中 只影響標(biāo)志寄存器)

例2:判斷某個(gè)值是否為0

AND EAX,EAX 0 ZF=1

TEST EAX,EAX

(TEST相當(dāng)于and,但是與運(yùn)算的結(jié)果并不保存到第一個(gè)操作數(shù)中 只影響標(biāo)志寄存器)

SF(bit 7) [Sign Flag]

該標(biāo)志被設(shè)置為有符號(hào)整型的最高有效位
(0指示結(jié)果為正,反之則為負(fù))
意思其實(shí)就是,運(yùn)算完之后看下符號(hào)位 是0(正)還是1(負(fù))

當(dāng)然如果是無(wú)符號(hào)數(shù)運(yùn)算就不用看了

只看容器內(nèi)數(shù)字的最高位

例子

MOV AL,0x7F MOV AL,0xFE
ADD AL,2 ADD AL,2

OF(bit 11)[OverFlow Flag]

溢出標(biāo)志OF用于反應(yīng)有符號(hào)數(shù)加減運(yùn)算所得結(jié)果是否溢出
可以這樣理解:
* 如果是無(wú)符號(hào)數(shù)運(yùn)算,是否溢出看CF位
* 如果是有符號(hào)數(shù)運(yùn)算,是否溢出看OF位
兩個(gè)數(shù)做運(yùn)算,運(yùn)算完畢的結(jié)果跟運(yùn)算前的數(shù)的最高位相同 OF為0
最高位不同 為1

例子:

MOV AL,0x7F
ADD AL,2

DF(bit 10)[Diretion Flag]

這個(gè)方向標(biāo)志控制字符串指令(`MOVS`,CMPS,SCAS,LODS以及`STOS`)。設(shè)置DF標(biāo)志是的串指令自動(dòng)遞減(從高地址向低地址方向處理字符串),清楚該標(biāo)志則是的串指令自動(dòng)遞增

STD以及CLD指令分別用戶設(shè)置以及清除DF標(biāo)志

JCC常見(jiàn)指令

有符號(hào)和無(wú)符號(hào)的區(qū)別:

CMP AL,CL
JG 0x12345678
JA 0x12345678

匯編 JCC指令表

JCC指條件跳轉(zhuǎn)指令,CC就是指條件碼。

JCC指令 中文含義 英文原意 檢查符號(hào)位 典型C應(yīng)用
JZ/JE 若為0則跳轉(zhuǎn);若相等則跳轉(zhuǎn) jump if zero;jump if equal ZF=1 if (i == j);if (i == 0);
JNZ/JNE 若不為0則跳轉(zhuǎn);若不相等則跳轉(zhuǎn) jump if not zero;jump if not equal ZF=0 if (i != j);if (i != 0);
JS 若為負(fù)則跳轉(zhuǎn) jump if sign SF=1 if (i < 0);
JNS 若為正則跳轉(zhuǎn) jump if not sign SF=0 if (i > 0);
JP/JPE 若1出現(xiàn)次數(shù)為偶數(shù)則跳轉(zhuǎn) jump if Parity (Even) PF=1 (null)
JNP/JPO 若1出現(xiàn)次數(shù)為奇數(shù)則跳轉(zhuǎn) jump if not parity (odd) PF=0 (null)
JO 若溢出則跳轉(zhuǎn) jump if overflow OF=1 (null)
JNO 若無(wú)溢出則跳轉(zhuǎn) jump if not overflow OF=0 (null)
JC/JB/JNAE 若進(jìn)位則跳轉(zhuǎn);若低于則跳轉(zhuǎn);若不高于等于則跳轉(zhuǎn) jump if carry;jump if below;jump if not above equal CF=1 if (i < j);
JNC/JNB/JAE 若無(wú)進(jìn)位則跳轉(zhuǎn);若不低于則跳轉(zhuǎn);若高于等于則跳轉(zhuǎn); jump if not carry;jump if not below;jump if above equal CF=0 if (i >= j);
JBE/JNA 若低于等于則跳轉(zhuǎn);若不高于則跳轉(zhuǎn) jump if below equal;jump if not above ZF=1或CF=1 if (i <= j);
JNBE/JA 若不低于等于則跳轉(zhuǎn);若高于則跳轉(zhuǎn) jump if not below equal;jump if above ZF=0或CF=0 if (i > j);
JL/JNGE 若小于則跳轉(zhuǎn);若不大于等于則跳轉(zhuǎn) jump if less;jump if not greater equal SF != OF if (si < sj);
JNL/JGE 若不小于則跳轉(zhuǎn);若大于等于則跳轉(zhuǎn); jump if not less;jump if greater equal SF = OF if (si >= sj);
JLE/JNG 若小于等于則跳轉(zhuǎn);若不大于則跳轉(zhuǎn) jump if less equal;jump if not greater ZF != OF 或 ZF=1 if (si <= sj);
JNLE/JG 若不小于等于則跳轉(zhuǎn);若大于則跳轉(zhuǎn) jump if not less equal;jump if greater SF=0F 且 ZF=0 if(si>sj)

匯編JCC筆記

1. JMP指令:

唯一作用是無(wú)條件修改EIP的值,沒(méi)有對(duì)棧和寄存器產(chǎn)生影響。

JMP 寄存器/立即數(shù)
本質(zhì)是MOV EIP,寄存器/立即數(shù),EIP只能由JMP指令修改

2. CALL指令:

第一個(gè)作用和JMP一樣,MOV EIP,寄存器/立即數(shù)。
第二個(gè)作用,把CALL指令的寫(xiě)一個(gè)指令地址push到棧頂(修改ESP)
CALL指令還沒(méi)執(zhí)行,怎么知道下一行指令的地址?
根據(jù)CALL指令占用的數(shù)據(jù)寬度,加偏移量去算,比如CALL這條指令,地址0X004183D7中數(shù)據(jù)為E8 21 00 00 00,有5個(gè)字節(jié),下一行指令的地址就是地址偏移5

3.RET

本質(zhì)是POP EIP
RET指令通常和CALL成對(duì)出現(xiàn),把CALL壓棧的地址POP EIP,讓程序回歸原來(lái)的流程

4. CMP指令:該指令是比較兩個(gè)操作數(shù)是否相同

指令格式:CMP R/M,R/M/IMM
相當(dāng)于SUB指令,但是只會(huì)用兩個(gè)數(shù)相減來(lái)比較是否相同,相減的結(jié)果并不保存在第一個(gè)操作數(shù)中。
只會(huì)根據(jù)相減的結(jié)果來(lái)改變標(biāo)志位的,當(dāng)兩個(gè)操作數(shù)相等的時(shí)候,零標(biāo)志位置為1.
MOV EAX,100
MOV ECX,100
CMP EAX,ECX  //只相減比較,判斷并修改零標(biāo)志寄存器,不會(huì)把EAX修改為相減結(jié)果。
CMP AX,WORD PTR DS:[405000]
CMP AL,BYTE PTR DS:[405000]
CMP EAX,DWORD PTR DS:[405000]

4. TEST指令:

指令格式:TEST R/M,R/M/IMM
該指令和CMP有一定的相似性,兩個(gè)數(shù)值進(jìn)行與操作,結(jié)果也不保存,但是會(huì)改變相應(yīng)標(biāo)志位。
與操作:1 and 1 =1;1 and 0 = 0; 0 and 1 = 0; 0 and 0 = 0
常見(jiàn)用法:用這個(gè)指令,可以確定某寄存器是否等于0,如果EAX的二進(jìn)制某些位為 1 的話,那么運(yùn)算的結(jié)果就不為零。

TEST EAX,EAX

5.
1. JE,JZ -------jump if equal結(jié)果為零則跳轉(zhuǎn)(相等時(shí)跳轉(zhuǎn))-------ZF = 1

例:

CMP EAX,ECX
JZ 0x413f9

1、  JE, JZ         -------------結(jié)果為零則跳轉(zhuǎn)(相等時(shí)跳轉(zhuǎn))----------------ZF=1
2、  JNE, JNZ   -------------結(jié)果不為零則跳轉(zhuǎn)(不相等時(shí)跳轉(zhuǎn))----------------ZF=0
3、  JS              -------------結(jié)果為負(fù)則跳轉(zhuǎn)----------------SF=1
4、  JNS           -------------結(jié)果為非負(fù)則跳轉(zhuǎn)----------------SF=0
5、  JP, JPE     -------------結(jié)果中1的個(gè)數(shù)為偶數(shù)則跳轉(zhuǎn)----------------PF=1
6、  JNP, JPO  -------------結(jié)果中1的個(gè)數(shù)為偶數(shù)則跳轉(zhuǎn)----------------PF=0
7、  JO            -------------結(jié)果溢出了則跳轉(zhuǎn)----------------OF=1
8、  JNO         -------------結(jié)果沒(méi)有溢出則跳轉(zhuǎn)----------------OF=0
9、   JB, JNAE-------------小于則跳轉(zhuǎn) (無(wú)符號(hào)數(shù))----------------CF=1
10、 JNB, JAE-------------大于等于則跳轉(zhuǎn) (無(wú)符號(hào)數(shù))----------------CF=0
11、  JBE, JNA-------------小于等于則跳轉(zhuǎn) (無(wú)符號(hào)數(shù))----------------CF=1 or ZF=1
12、 JNBE, JA-------------大于則跳轉(zhuǎn)(無(wú)符號(hào)數(shù))----------------CF=0 and ZF=0
13、 JL, JNGE-------------小于則跳轉(zhuǎn) (有符號(hào)數(shù))----------------SF≠ OF
14、 JNL, JGE-------------大于等于則跳轉(zhuǎn) (有符號(hào)數(shù))----------------SF=OF
15、 JLE, JNG-------------小于等于則跳轉(zhuǎn) (有符號(hào)數(shù))----------------ZF=1 or SF≠ OF
16、 JNLE, JG-------------大于則跳轉(zhuǎn)(有符號(hào)數(shù))----------------ZF=0 and SF=OF

好了這篇關(guān)于匯編 JCC指令表與筆記的文章就介紹到這了,希望大家以后多多支持腳本之家。

相關(guān)文章

  • 匯編語(yǔ)言XOR指令:對(duì)兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作(推薦)

    匯編語(yǔ)言XOR指令:對(duì)兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作(推薦)

    匯編語(yǔ)言(assembly language)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級(jí)語(yǔ)言,亦稱為符號(hào)語(yǔ)言。這篇文章主要介紹了匯編語(yǔ)言XOR指令:對(duì)兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作,需要的朋友可以參考下
    2020-01-01
  • 匯編語(yǔ)言中debug命令使用小結(jié)

    匯編語(yǔ)言中debug命令使用小結(jié)

    Debug是DOS、Windows都提供的實(shí)模式(8086方式)程序的調(diào)試工具,本文主要介紹了匯編語(yǔ)言中debug命令使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 在vs2017中編寫(xiě)匯編的實(shí)現(xiàn)(圖文)

    在vs2017中編寫(xiě)匯編的實(shí)現(xiàn)(圖文)

    這篇文章主要介紹了在vs2017中編寫(xiě)匯編的實(shí)現(xiàn)(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Debug的基本使用()

    Debug的基本使用()

    Debug是一個(gè)通過(guò)操作系統(tǒng)(os)對(duì)cpu寄存器進(jìn)行訪問(wèn)用于學(xué)習(xí)匯編的程序,但是如今的win10(64位)已經(jīng)不支持cmd打開(kāi)debug,但是我們可以通過(guò)DOSBOX模擬器對(duì)其進(jìn)行訪問(wèn)
    2023-08-08
  • X86匯編調(diào)試環(huán)境搭建的過(guò)程

    X86匯編調(diào)試環(huán)境搭建的過(guò)程

    本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可以使用masm插件),還有一個(gè)hexdump for VSCode。 安裝NASM,并添加到環(huán)境變量,下面看下X86匯編調(diào)試環(huán)境搭建的過(guò)程吧
    2021-11-11
  • 匯編語(yǔ)言80x86系統(tǒng)通用數(shù)據(jù)傳送指令詳解

    匯編語(yǔ)言80x86系統(tǒng)通用數(shù)據(jù)傳送指令詳解

    這篇文章主要為大家介紹了匯編語(yǔ)言80x86系統(tǒng)通用的數(shù)據(jù)傳送指令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 匯編語(yǔ)言中move指令的使用

    匯編語(yǔ)言中move指令的使用

    MOV指令是在ARM匯編語(yǔ)言中用于將數(shù)據(jù)從一個(gè)位置或寄存器復(fù)制到另一個(gè)位置或寄存器的指令,本文就來(lái)詳細(xì)的介紹一下move指令,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 匯編語(yǔ)言MIPS指令分類及尋址模式原理概念

    匯編語(yǔ)言MIPS指令分類及尋址模式原理概念

    這篇文章主要為大家介紹了匯編語(yǔ)言MIPS指令分類及尋址模式的原理及概念,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 匯編語(yǔ)言實(shí)現(xiàn)打印楊輝三角

    匯編語(yǔ)言實(shí)現(xiàn)打印楊輝三角

    這篇文章主要介紹了匯編語(yǔ)言實(shí)現(xiàn)打印楊輝三角,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編語(yǔ)言 跳轉(zhuǎn)指令與C語(yǔ)言的條件分支

    匯編語(yǔ)言 跳轉(zhuǎn)指令與C語(yǔ)言的條件分支

    這篇文章主要介紹了匯編語(yǔ)言 跳轉(zhuǎn)指令與C語(yǔ)言的條件分支,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論

民和| 蒲城县| 天门市| 昌邑市| 邻水| 富裕县| 宝应县| 宁强县| 鲁甸县| 溆浦县| 天津市| 金山区| 图们市| 宁陕县| 庐江县| 共和县| 建宁县| 灯塔市| 乐陵市| 尚义县| 楚雄市| 延庆县| 无为县| 金平| 绿春县| 板桥市| 南安市| 和林格尔县| 道孚县| 南阳市| 甘孜县| 长宁区| 宿松县| 东乡县| 丹阳市| 尼玛县| 岱山县| 孟州市| 灵寿县| 江西省| 临武县|