在組合語言寫微控制器的程式的時候,如何知道當前的PC指標是多少

時間 2022-03-27 22:40:08

1樓:匿名使用者

當前pc指標的值,可以通過一定的方法來獲得,比如如果使用lcall指令,那麼微控制器執行過程是:保護現場,將當前pc壓入堆疊,當程式返回時,再彈出該保護的pc,由此,我們就可以獲得當前的pc,具體程式如下:

........

lcall getpc ;呼叫乙個子程式以獲得當前pc值...........

getpc:

pop acc ;取得pc高八位

pop b ;取得pc低八位

push b ;恢復sp

push acc ;恢復sp

......ret

2樓:大頭魚儉儉

首先,要知道pc值是無法讀出來的。

其次,pc值總是指向當前指令位址的。

比如:0000h mov a,#00h..

.0060h mov a,#10062h movc a,@a+pc;這裡的pc值就是0062h,而tab位址是0063h,

要查tab第乙個值就必須讓pc加一,所以a賦值1。

0063h tab:db 7fh,db .......

3樓:匿名使用者

你寫的時候不停-pcpc+能保證pc不錯至於暫存器的位置得用rtl級的語言直接列印(pc)才可以

微控制器組合語言程式設計中pc值的變化

4樓:做而論道

pc在取出指令的乙個位元組後,自動加一。

有些指令,是2、3個位元組,都取完之後才會執行;

故此在此期間,pc會自動加一2、3次。

微控制器 呼叫彙編實現pc指標跳轉

5樓:尚云社

跳轉是不會自動壓棧的,只有呼叫子函式才會壓棧

6樓:匿名使用者

這樣的話,棧是不會釋放的,還有可能造成程式執行混亂和跑飛宕機現象。畢竟棧空間有限。

微控制器組合語言的幾個疑問

靈若伊雪 1 r1 20h 不是一條指令,而只是一種說明,表明r1暫存器中的內容是20h。這個20h是地址還是資料,與這個說明無關。2 在指令 mov r1,40h 中,r1 是間接定址方式,表明r1中的內容是地址,指令的功能表明是將立即數40h傳送到r1指定的地址中。3 在指令中容易混淆的是立即數...

微控制器彙編DA指令什麼用,微控制器組合語言十進位制調整da

胡像貓 微控制器彙編言語da指令,是指十進位制加法運算。是結合加法指令一起用的,例如daa,這條指令是十進位制調整指令,用來在進行十進位制運算 bcd碼 時進行校正的。當兩個bcd碼加法時,01h 09h應該是等於10h,但由於 微控制器的加法指令是二進位制的運算,加完之後得到的結果是0ah,這時就...

求基於微控制器的用組合語言寫的倒計時程式

細雄 剛寫的程式,可以通過s0 功能鍵 s1 加鍵 s2 減鍵 設定初值,倒數為00 00 00時蜂鳴器響,通過八位led顯示 include include define uchar unsigned char define uint unsigned intuchar code wei 八位位選...