複製鏈接
請複製以下鏈接發送給好友

轉移指令

鎖定
轉移指令是指不按程序的語句流程執行的指令,如跳轉指令,call指令、jmp指令等。
這類指令包括無條件轉移指令,條件轉換指令,測試CX/ECX值為0轉移指令,通過它們可以實現程序的分支轉移.轉移指令可以使用與轉移地址有關的尋址方式形成轉向地址,具體適用性視不同指令而有所區別. [1] 
中文名
轉移指令
外文名
Transfer instructions
分    類
有條件 無條件等
性    質
工業流程術語
領    域
彙編語言

轉移指令簡介

轉移指令,相對於流水指令而説的。轉移指令是指不按程序的語句流程執行的指令,如跳轉指令,call指令、jmp指令等。
轉移指令分為以下幾類:

轉移指令無條件轉移指令(如:jmp)

(1)絕對跳轉指令
AJMP addr11 ; (PC)+2→PC, addr10~0→PC10~0 [2] 
這是2KB尋址範圍內的無條件轉移指令,是絕對跳轉。跳轉的目的地址必須與AJMP的下一條指令的第一個字節在同一個2KB尋址範圍內,這是因為跳轉的目的地址與AJMP的下一條指令的第一個字節的高5位addr15~11相同。這條指令是為與MCS-48兼容而保留的指令,現在一般很少使用。 [2] 
(2)相對跳轉指令
SJMP rel ; (PC)+2→rel PC [2] 
這條指令執行的時候先將PC的內容加2,再加相對偏移量rel,計算出跳轉目的地址。rel是一個帶符號的字節數,在程序中用補碼錶示,其值範圍為-128B~+127B,當rel為正數時表示正向跳轉,為負數時表示負向跳轉。 [2] 
(3)長跳轉指令
LJMP addr16 addr16 PC [2] 
這條指令執行時把16位操作數的高低8位分別裝入PC的PCH和PCL,無條件地轉向指定地址。跳轉的目的地址可以在64KB程序存儲器地址空間的任何地方,不影響任何標誌位。 [2] 
(4)間接跳轉指令
JMP @A+DPTR [2] 
這條指令的功能是把累加器A中的8位無符號數與數據指針DPTR中的16位地址相加,相加形成的16位新地址送入PC。指令執行過程不改變累加器和數據指針的內容,也不影響標誌位。 [2] 

轉移指令條件轉移指令(如:jcxz)

功能:以標誌位的狀態或者以標誌位的邏輯運算結果作為轉移依據,如果滿足轉移條件,則轉到目標地址所指示的指令執行否則繼續執行下一條指令。必須指出,條件轉移指令轉移地址的偏移量限制在-128~+127字節範圍內,採用相對轉移方式(相對轉移指令是指跳轉時以當前地址為基準加上相對偏移量進行跳轉,一般是在本地址段內跳轉。如果需要跳轉到較遠的地方如跳到另一個地址段,就需要加上跳轉的目標段地址)。 [3] 

轉移指令循環指令(如loop)

可以控制程序的循環. [1] 

轉移指令過程

例如子程序調用和返回指令. [1] 

轉移指令中斷

使計算機暫時掛起正在執行的進程而轉去處理某事件.處理完後再恢復執行原進程的過程. [1] 
參考資料