<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 8086指令系統(tǒng)---控制轉(zhuǎn)移指令(一)

          8086指令系統(tǒng)---控制轉(zhuǎn)移指令(一)

          作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
            2 條件轉(zhuǎn)移指令(conditional jump)

            條件轉(zhuǎn)移指令是在滿足了規(guī)定的條件后才控制程序轉(zhuǎn)移的一類指令,8086的條件轉(zhuǎn)移指令總結(jié)在表3.4中。

            所有條件轉(zhuǎn)移指令都是短轉(zhuǎn)移指令,轉(zhuǎn)移的目標(biāo)地址必須在當(dāng)前IP地址的-128至+127字節(jié)范圍之內(nèi),因此條件轉(zhuǎn)移指令是2字節(jié)指令。

            計算轉(zhuǎn)向地址的方法和無條件短轉(zhuǎn)移指令是一樣的,看例3.40的反匯編代碼。

            例3.40程序中的"JNZ AGAIN"匯編成"JNZ 000D",000D是標(biāo)號AGAIN的地址,指令"JNZ 000D"的機(jī)器代碼是75FA,75是操作碼,F(xiàn)A是位移量。當(dāng)CPU讀取JNZ指令后,IP寄存器自動加2(JNZ的指令長度)指向了下一條指令(MOV),此時IP的當(dāng)前值是0013。計算轉(zhuǎn)向地址時,(IP)當(dāng)前+位移量 = 0013+FA = 0013+FFFA = 000D,這正是AGAIN的偏移地址。實際上FA是-6的補碼,8位的FA與16位的0013相加時,F(xiàn)A符號擴(kuò)展成為FFFA,相加的加結(jié)果為000D。
                      表3.4 條件轉(zhuǎn)移指令
          分類
          指 令
          轉(zhuǎn) 移 條 件
          說 明
          (Ⅰ)
          JZ/JE
          ZF=1
          為零/相等, 則轉(zhuǎn)移
          JNZ/JNE
          ZF=0
          不為零/不相等, 則轉(zhuǎn)移
          JS
          SF=1
          為負(fù), 則轉(zhuǎn)移
          JNS
          SF=0
          為正, 則轉(zhuǎn)移
          JO
          OF=1
          溢出, 則轉(zhuǎn)移
          JNO
          OF=0
          不溢出, 則轉(zhuǎn)移
          JP
          PF=1
          奇偶位為1, 則轉(zhuǎn)移
          JNP
          PF=0
          奇偶位為0, 則轉(zhuǎn)移
          JC
          CF=1
          進(jìn)位位為1, 則轉(zhuǎn)移
          JNC
          CF=0
          進(jìn)位位為0, 則轉(zhuǎn)移
          (Ⅱ)
          JB/JNAE/JC
          CF=1
          低于/不高于等于, 則轉(zhuǎn)移
          JNB/JAE/JNC
          CF=0
          不低于/高于等于, 則轉(zhuǎn)移
          JBE/JNA
          (CFZF)=1
          低于等于/不高于, 則轉(zhuǎn)移
          JNBE/JA
          (CFZF)=0
          不低于等于/高于, 則轉(zhuǎn)移
          (Ⅲ)
          JL/JNGE
          (SFOF)=1
          小于/不大于等于, 則轉(zhuǎn)移
          JNL/JGE
          (SFOF)=0
          不小于/大于等于, 則轉(zhuǎn)移
          JLE/JNG
          ((SFOF)ZF)=1
          小于等于/不大于, 則轉(zhuǎn)移
          JNLE/JG
          ((SFOF)ZF)=0
          不小于等于/大于, 則轉(zhuǎn)移
          (Ⅳ)
          JCXZ
          (CX)=0
          CX的內(nèi)容為0, 則轉(zhuǎn)移

          注:(Ⅰ)根據(jù)條件碼的值轉(zhuǎn)移 (Ⅱ)比較兩個無符號數(shù),根據(jù)比較的結(jié)果轉(zhuǎn)移
          (Ⅲ)比較兩個帶符號數(shù),根據(jù)比較的結(jié)果轉(zhuǎn)移 (Ⅳ)根據(jù)CX寄存器的值轉(zhuǎn)移

          本文引用地址:http://www.ex-cimer.com/article/201611/322189.htm

           

          1050:0000  B86610    MOV AX,1040
              1050:0003  8ED8     MOV DS,AX
              1050:0005  B90500    MOV CX,0005
              1050:0008  BB0000    MOV BX,0000
              1050:000D  0207 AGAIN: ADD AL,[BX]
              1050:000F  43      INC BX
              1050:0010  49      DEC CX
              1050:0011  75FA     JNZ 000D
              1050:0013  A20500    MOV [0005],AL
              1050:0016  B44C     MOV AH,4C
              1050:0018  CD21     INT 21

           例假設(shè)程序進(jìn)行兩個帶符號數(shù)的比較,并根據(jù)比較結(jié)果轉(zhuǎn)移,其中(AL)=80H,(BL)=01,請指出下面 兩組指令的轉(zhuǎn)向地址。

           ?、?CMP AL,BL    ?、?CMP AL,BL
              JL XY         JB XY  

            答:⑴ 轉(zhuǎn)向目標(biāo)地址XY;⑵不能實現(xiàn)轉(zhuǎn)移。
              執(zhí)行CMP指令時,(AL)-(BL)=80-01=7F,條件碼設(shè)置為:SF=0,OF=1,CF=0。執(zhí)行JL指令時,測試轉(zhuǎn)移條件:SFOF = 01 =1,說明滿足(AL)<(BL)的轉(zhuǎn)移條件,因此,(IP)←XY的偏移地址,程序即轉(zhuǎn)移到XY單元執(zhí)行新的指令。

            JB指令的轉(zhuǎn)移條件為CF=1,而CMP的執(zhí)行結(jié)果使CF=0,所以不能引起轉(zhuǎn)移。



          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();