8051單片機指令定義詳解——ACALL addr11(1)
符號說明
本文引用地址:http://m.butianyuan.cn/article/201611/319697.htm符
←
()
(())
rrr
dddddddd
aaaaaaaa
bbbbbbbb
i
eeeeeeee
ACALL
功能:絕對調(diào)用。
說明:ACALL指令實現(xiàn)無條件調(diào)用位于addr11參數(shù)所表示地址的子例程。在執(zhí)行該指令時,首先將PC的值增加2,即使得PC指向ACALL的下一條指令,然后把16位PC的低8位和高8位依次壓入棧,同時把棧指針兩次加1.然后,把當(dāng)前PC值的高5位、ACALL指令第一字節(jié)的7~5位和第2字節(jié)組合起來,得到一個16位目的地址,該地址即為即將調(diào)用的子例程的入口地址。要求該子例程的起始地址必須與緊隨ACALL之后的指令處于同1個2KB的程序存儲頁中。ACALL指令在執(zhí)行時不會改變各個標(biāo)志位。
示例:SP的初始值為07H,標(biāo)號SUBRTN位于程序存儲器的0345H地址處,如果執(zhí)行位于地址0123H處的指令:
ACALL
那么SP變?yōu)?9H,內(nèi)部RAM地址08H和09H單元的內(nèi)容分別為25H和01H,PC值變?yōu)?345H。
指令長度(字節(jié)數(shù)): 2
注意:aaa是11位目標(biāo)地址addr11的A10~A8位,aaaaaaaa是addr11的A7~A0位。
指令的操作:
(PC)←(PC)+2
(SP)←(SP)+1
((SP))←(PC7—PC0)
(SP)←(SP)+1
((SP))←(PC15—PC8)
(PC10—PC0)←頁面地址
評論