91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 汽車電子

子程序調用與返回指令

發布時間:2014/6/5 21:10:51 訪問次數:2557

   1.絕對調用

   絕對調用指令ACALL是一條兩字節指令, AD536AJDZ指令提供了11位目標地址addrll,所以和前面AJMP指令相似,其調用地址必須與ACALL指令的下一條指令首字節位于程序存儲器的同一個2KB區內。ACALL指令與AJMP指令不同的是它需要保存子程序的返回地址,

而AJMP指令不用。

   指令執行過程是:執行ACALL指令時,PC+2后獲得了下一條指令的地址,然后把PC的當前值壓棧(棧指針SP加l,PC低字節進棧,SP再加l,PC高字節進棧)。最后把PC的高5位和指令給出的11位地址addrll連接組成16位目標地址(PCis~11aio~ao),并作為

子程序入口地址送入PC中,使CPU轉向執行子程序。因此,所調用的子程序入口地址必須和ACALL揩令下一條指令的第一個字節在同一個2KB區域的程序存儲器空間,否則就調用不到了。

   2.長調用指令

   LCALL addr16(長調用指令)

    可以在64KB程序存儲器內調用子程序的指令,它是三字節指令。指令執行過程是:把PC加3獲得的下一條指令的地址進棧(先壓入低字節,后壓入高字節),進棧操作使SP加l兩次。接著把指令的第二和第三字節(a15~a8,a7~ao)分別裝入PC的高位和低位字節中,然后從該地址addr16(ais~a o)開始執行子程序。

   3.子程序返回

   這條返回指令的功能是從堆棧中取出斷點地址,送給PC,并從斷點處開始繼續執行程序。RET應放在一般子程序的末尾。

   4.中斷返回   

   這條返回指令的功能也是從堆棧中取出斷點地址,送給PC,并從斷點處開始繼續執行程序。RETI應放在中斷服務子程序的末尾。在執行RETI指令時,還將清除MCS-51中斷響應時所置位的優先級狀態觸發器,開放中斷邏輯,使得已申請的較低級中斷源可以響應。且必須在RETI指令執行完之后,至少要再執行一條指令才能響應這個中斷。



   1.絕對調用

   絕對調用指令ACALL是一條兩字節指令, AD536AJDZ指令提供了11位目標地址addrll,所以和前面AJMP指令相似,其調用地址必須與ACALL指令的下一條指令首字節位于程序存儲器的同一個2KB區內。ACALL指令與AJMP指令不同的是它需要保存子程序的返回地址,

而AJMP指令不用。

   指令執行過程是:執行ACALL指令時,PC+2后獲得了下一條指令的地址,然后把PC的當前值壓棧(棧指針SP加l,PC低字節進棧,SP再加l,PC高字節進棧)。最后把PC的高5位和指令給出的11位地址addrll連接組成16位目標地址(PCis~11aio~ao),并作為

子程序入口地址送入PC中,使CPU轉向執行子程序。因此,所調用的子程序入口地址必須和ACALL揩令下一條指令的第一個字節在同一個2KB區域的程序存儲器空間,否則就調用不到了。

   2.長調用指令

   LCALL addr16(長調用指令)

    可以在64KB程序存儲器內調用子程序的指令,它是三字節指令。指令執行過程是:把PC加3獲得的下一條指令的地址進棧(先壓入低字節,后壓入高字節),進棧操作使SP加l兩次。接著把指令的第二和第三字節(a15~a8,a7~ao)分別裝入PC的高位和低位字節中,然后從該地址addr16(ais~a o)開始執行子程序。

   3.子程序返回

   這條返回指令的功能是從堆棧中取出斷點地址,送給PC,并從斷點處開始繼續執行程序。RET應放在一般子程序的末尾。

   4.中斷返回   

   這條返回指令的功能也是從堆棧中取出斷點地址,送給PC,并從斷點處開始繼續執行程序。RETI應放在中斷服務子程序的末尾。在執行RETI指令時,還將清除MCS-51中斷響應時所置位的優先級狀態觸發器,開放中斷邏輯,使得已申請的較低級中斷源可以響應。且必須在RETI指令執行完之后,至少要再執行一條指令才能響應這個中斷。



熱門點擊

 

推薦技術資料

頻譜儀的解調功能
    現代頻譜儀在跟蹤源模式下也可以使用Maker和△Mak... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
平度市| 枝江市| 兖州市| 喀什市| SHOW| 灵山县| 德州市| 木里| 新兴县| 开鲁县| 衡南县| 天水市| 南漳县| 三穗县| 甘泉县| 彩票| 永和县| 南昌市| 滁州市| 临湘市| 马山县| 汉源县| 屯昌县| 扶风县| 垫江县| 平远县| 台州市| 夏河县| 噶尔县| 巩义市| 长治市| 武山县| 宁陵县| 岢岚县| 内乡县| 襄垣县| 商城县| 石嘴山市| 沙田区| 南漳县| 交城县|