簡介
轉移指令,相對於流水指令而說的。轉移指令是指不按程式的語句流程執行的指令,如
跳轉指令,
call指令、jmp指令等。
轉移指令分為以下幾類:
無條件轉移指令(如:jmp)
(1)絕對跳轉指令
AJMP addr11 ; (PC)+2→PC, addr10~0→PC10~0
這是2KB定址範圍內的無條件轉移指令,是絕對跳轉。跳轉的目的地址必須與AJMP的下一條指令的第一個位元組在同一個2KB定址範圍內,這是因為跳轉的目的地址與AJMP的下一條指令的第一個位元組的高5位addr15~11相同。這條指令是為與MCS-48兼容而保留的指令,現在一般很少使用。
(2)相對跳轉指令
SJMP rel ; (PC)+2→rel PC
這條指令執行的時候先將PC的內容加2,再加相對偏移量rel,計算出跳轉目的地址。rel是一個帶符號的位元組數,在程式中用補碼錶示,其值範圍為-128B~+127B,當rel為正數時表示正向跳轉,為負數時表示負向跳轉。
(3)長跳轉指令
LJMP addr16 addr16 PC
這條指令執行時把16位運算元的高低8位分別裝入PC的PCH和PCL,無條件地轉向指定地址。跳轉的目的地址可以在64KB程式存儲器地址空間的任何地方,不影響任何標誌位。
(4)間接跳轉指令
JMP @A+DPTR
這條指令的功能是把累加器A中的8位無符號數與數據指針DPTR中的16位地址相加,相加形成的16位新地址送入PC。指令執行過程不改變累加器和數據指針的內容,也不影響標誌位。
條件轉移指令(如:jcxz)
功能:以標誌位的狀態或者以標誌位的邏輯運算結果作為轉移依據,如果滿足轉移條件,則轉到目標地址所指示的指令執行否則繼續執行下一條指令。必須指出,條件轉移指令轉移地址的偏移量限制在-128~+127位元組範圍內,採用相對轉移方式(相對轉移指令是指跳轉時以當前地址為基準加上相對偏移量進行跳轉,一般是在本地址段內跳轉。如果需要跳轉到較遠的地方如跳到另一個地址段,就需要加上跳轉的目標段地址)。
循環指令(如loop)
可以控制程式的循環.
過程
例如子程式調用和返回指令.
中斷
使計算機暫時掛起正在執行的進程而轉去處理某事件.處理完後再恢復執行原進程的過程.