<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 8086指令系統---控制轉移指令(一)

8086指令系統---控制轉移指令(一)

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
  控制轉移指令通過(guò)改變CS:IP來(lái)控制程序的執行流程。這類(lèi)指令包括無(wú)條件轉移指令、條件轉移指令、循環(huán)指令、子程序調用和返回指令以及中斷和中斷返回指令。
   ?、?無(wú)條件轉移
      JMP 跳轉

     ⑵ 條件轉移
      JZ/JNZ    結果為零/不為零則轉移
      JS/JNS    結果為負/為正則轉移
      JO/JNO    溢出/不溢出則轉移
      JP/JNP    奇偶位為1/為0則轉移
      JB/JNB    低于/不低于則轉移
      JBE/JNBE   低于等于/高于則轉移
      JL/JNL    小于/不小于則轉移
      JLE/JNLE   小于等于/大于則轉移
      JCXZ     CX為零則轉移

    ?、?循環(huán)指令
      LOOP      循環(huán)
      LOOPZ/LOOPE  為零/相等時(shí)循環(huán)
      LOOPNZ/LOOPNE 不為零/不等時(shí)循環(huán)

     ⑷ 子程序調用與返回
      CALL      調用
      RET       返回

     ⑸ 中斷及中斷返回
      INT       中斷
      INTO      溢出則中斷
      IRET       中斷返回


  程序中指令的執行順序是由CS:IP來(lái)決定的,程序轉移類(lèi)指令可改變IP或CS、IP的內容,從而控制指令的執行順序,實(shí)現指令轉移、程序調用等功能。

本文引用地址:http://dyxdggzs.com/article/201611/322189.htm

  1 無(wú)條件轉移指令

 JMP指令控制程序無(wú)條件地跳轉到目的單元,使用JMP指令可有三種格式:

?、?JMP SHORT label 短轉移(short jump)
   
?、?JMP NEAR PTR label 近轉移(near jump)

 ● JMP label 直接轉移(direct jump)
  
 ● JMP reg 寄存器間接轉移(register indirect jump)
  
 ● JMP WORD PTR OPR 存儲器間接轉移(memory indirect jump)
  
?、?JMP FAR PTR label 遠轉移(far jump)

 短轉移的目標地址(或稱(chēng)轉向地址)相對于當前IP值的位移量在-128至+127字節之間,當前IP值是指JMP指令的下一條指令的地址(如圖3.11所示)。對短轉移JMP,機器指令的第一個(gè)字節為操作碼EB,第二個(gè)字節為位移量00~FF,這是一個(gè)帶符號的補碼數。轉向地址的計算方法為:(IP)當前+8位位移量。操作符SHORT指示匯編程序將JMP指令匯編成一個(gè)2字節指令。


 ?、?JMP SHORT label 短轉移(short jump)
    執行操作:(IP) ← (IP)當前+8位位移量

 短轉移示意圖
  

 ?、?JMP NEAR PTR label 近轉移(near jump)
  近轉移是JMP指令的缺省格式,可以寫(xiě)為"JMP label"。它可在當前代碼段內轉移,機器指令的操作碼是E9,位移量是16位的帶符號補碼數。指令中的轉向地址可以是直接尋址方式、寄存器尋址方式、寄存器間接方式和存儲器尋址方式。

  ● JMP label 直接轉移(direct jump)
  執行操作:(IP) ← OFFSET label = (IP)當前+16位位移量
  轉移的目標地址在指令中可直接使用符號地址,由于位移量為16位,它的轉移范圍應是-32768至+32767,也就是說(shuō),近轉移指令可以轉移到段內的任一個(gè)位置。

  ● JMP reg 寄存器間接轉移(register indirect jump)
  執行操作:(IP) ← (reg)
  轉移的目標地址在寄存器中,例如指令"JMP BX"執行的結果,將BX的內容送給IP。

  ● JMP WORD PTR OPR 存儲器間接轉移(memory indirect jump)
  執行操作:(IP) ← (PA+1,PA)
  存儲器的物理地址PA由指令中的尋址方式確定,JMP指令執行的結果,把PA單元的字內容送到IP寄存器中。例如"JMP WORD PTR [DI]",物理地址PA = (DS)×24+(DI),指令執行的結果是(IP)= (PA+1,PA)。

 ?、?JMP FAR PTR label 遠轉移(far jump)
  執行操作:(IP) ← label的段內偏移地址
       (CS) ← label所在段的段地址
  遠轉移實(shí)現的是段間的跳轉,即從當前代碼段跳轉到另一個(gè)代碼段中,這意味著(zhù)指令執行后,不僅要改變IP的值,CS也會(huì )得到一個(gè)新的段地址。在匯編指令中,遠轉移的目標地址也可以使用除立即尋址方式外的任何尋址方式來(lái)表示。
上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 8086指令系統控制轉移指

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>