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