亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

匯編指令-狀態(tài)寄存器、cmp、test、jz等指令詳細(xì)說明

 更新時(shí)間:2020年01月20日 15:17:15   作者:xingpacer  
這篇文章主要介紹了匯編指令-狀態(tài)寄存器、cmp、test、jz等指令詳細(xì)說明,需要的朋友可以參考下

一、狀態(tài)寄存器

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

PSW(Program Status Word)程序狀態(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)志。

test和cmp指令運(yùn)行后都會(huì)設(shè)置標(biāo)志位,為舉例方便說一下jnz和jz

測試條件

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和cmp

1、test指令

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

功能:執(zhí)行BIT與BIT之間的邏輯運(yùn)算
測試(兩操作數(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用來測試一個(gè)位,例如寄存器:
test eax, 100b;          b后綴意為二進(jìn)制
jnz  ******;             如果eax右數(shù)第三個(gè)位為1,jnz將會(huì)跳轉(zhuǎn)
jnz跳轉(zhuǎn)的條件非0,即ZF=0,ZF=0意味著零標(biāo)志沒被置位,即邏輯與結(jié)果為1。

2.Test的一個(gè)非常普遍的用法是用來測試一方寄存器是否為空:
test ecx, ecx
jz somewhere
如果ecx為零,設(shè)置ZF零標(biāo)志為1,Jz跳轉(zhuǎn)

2、cmp指令
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。

對(duì)于jz和jnz,查看代碼和理解匯編代碼時(shí),直接判斷test和cmp的運(yùn)算結(jié)果決定是否跳轉(zhuǎn),至于ZF標(biāo)記位是系統(tǒng)得知運(yùn)算結(jié)果的標(biāo)記位。

三、 直接標(biāo)志轉(zhuǎn)移

指令格式                 機(jī)器碼                    測試條件                       如...則轉(zhuǎn)移  
JC                           72                           C=1                               有進(jìn)位
JNC                         73                          C=0                               無進(jìn)位
JZ/JE                       74                          Z=1                                零/  
JNZ/JNE                  75                         Z=0                               不為零/  
JS                           78                           S=1                                負(fù)號(hào)
JNS                         79                          S=0                                正號(hào)
JO                           70                          O=1                               有溢出
JNO                         71                         O=0                               無溢出
JP/JPE                     7A                        P=1                               奇偶位為偶
JNP/IPO                   7B                        P=0                               奇偶位為奇

四、間接標(biāo)志轉(zhuǎn)移

先用cmp指令比較再用下面的判斷(少了一個(gè) JE 為等于):
指令格式          機(jī)器碼             測試格式                如...則轉(zhuǎn)移
JA/JNBE()        77                    CZ=0                      >/  
JAE/JNB()        73                    C=0                        >=/  
JB/JNAE()        72                    C=1                        </  
JBE/JNA()        76                    CZ=1                      <=/  
JG/JNLE()        7F                   (SO)Z=0                  >/  
JGE/JNL()        7D                   SO=0                      >=/  
JL/JNGE()        7C                   SO=1                      </  
JLE/JNG()        7E                   (SO)Z=1                  <=/

小結(jié)

test指令
將兩個(gè)操作數(shù)進(jìn)行邏輯與運(yùn)算,并根據(jù)運(yùn)算結(jié)果設(shè)置相關(guān)的標(biāo)志位。test命令的兩個(gè)操作數(shù)不會(huì)被改變。運(yùn)算結(jié)果在設(shè)置過相關(guān)標(biāo)記位后會(huì)被丟棄。

影響的標(biāo)志位CF,ZF,OF,SF,PF

cmp指令
比較指令。cmp的功能相當(dāng)于減法指令,只是對(duì)操作數(shù)之間運(yùn)算比較,不保存結(jié)果。cmp指令執(zhí)行后,將對(duì)標(biāo)志寄存器產(chǎn)生影響。其他相關(guān)指令通過識(shí)別這些被影響的標(biāo)志寄存器位來得知比較結(jié)果。

影響的標(biāo)志位CF,ZF,OF,AF,PF

相關(guān)文章

  • 詳解匯編語言MOV指令

    詳解匯編語言MOV指令

    在匯編語言中,MOV指令是數(shù)據(jù)傳送指令,也是最基本的編程指令,這篇文章主要介紹了匯編語言MOV指令,需要的朋友可以參考下
    2020-01-01
  • 匯編程序輸出“Hello world”的實(shí)現(xiàn)

    匯編程序輸出“Hello world”的實(shí)現(xiàn)

    這篇文章主要介紹了匯編程序輸出“Hello world”的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 匯編語言存儲(chǔ)及寄存器原理解析

    匯編語言存儲(chǔ)及寄存器原理解析

    這篇文章主要介紹了匯編語言存儲(chǔ)及寄存器原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 匯編語言中DIV指令的具體用法

    匯編語言中DIV指令的具體用法

    本文主要介紹了匯編語言中DIV指令的具體用法
    2024-03-03
  • VScode配置匯編語言環(huán)境的實(shí)現(xiàn)步驟

    VScode配置匯編語言環(huán)境的實(shí)現(xiàn)步驟

    本文主要介紹了VScode配置匯編語言環(huán)境的實(shí)現(xiàn)步驟,文中通過圖文的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 匯編程序 查表求平方的實(shí)現(xiàn)

    匯編程序 查表求平方的實(shí)現(xiàn)

    這篇文章主要介紹了匯編程序 查表求平方的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編語言實(shí)現(xiàn)打印楊輝三角

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

    這篇文章主要介紹了匯編語言實(shí)現(xiàn)打印楊輝三角,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編實(shí)現(xiàn)直接插入排序的方法示例

    匯編實(shí)現(xiàn)直接插入排序的方法示例

    這篇文章主要介紹了匯編實(shí)現(xiàn)直接插入排序的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編語言XOR指令:對(duì)兩個(gè)操作數(shù)進(jìn)行邏輯(按位)異或操作(推薦)

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

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

    os_object_release Crash 排查記錄分析

    這篇文章主要為大家介紹了os_object_release Crash 排查記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論