www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]堆棧指令是FX系列中新增的基本指令,用于多重輸出電路,為編程帶來便利、在FX系列PLC中有11個(gè)存儲(chǔ)單元,它們專門用來存儲(chǔ)程序運(yùn)算的中間結(jié)果,被稱為棧存儲(chǔ)器。

堆棧操作指令

堆棧指令是FX系列中新增的基本指令,用于多重輸出電路,為編程帶來便利、在FX系列PLC中有11個(gè)存儲(chǔ)單元,它們專門用來存儲(chǔ)程序運(yùn)算的中間結(jié)果,被稱為棧存儲(chǔ)器。

堆棧是計(jì)算機(jī)中一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),由棧區(qū)和棧頂指針組成。

堆棧有兩種操作,壓棧(進(jìn)棧)和彈棧(出棧),他們均只能在棧頂進(jìn)行。

堆棧指令是FX系列中新增的基本指令,用于多重輸出電路,為編程帶來便利、在FX系列PLC中有11個(gè)存儲(chǔ)單元,它們專門用來存儲(chǔ)程序運(yùn)算的中間結(jié)果,被稱為棧存儲(chǔ)器。

指令說明:

(1)MPS(進(jìn)棧指令)。將運(yùn)算結(jié)果送入棧存儲(chǔ)器的第一段,同時(shí)將先前送入的數(shù)據(jù)依次移到棧的下一段。

(2)MRD(讀棧指令)。將棧存儲(chǔ)器的第一段數(shù)據(jù)(最后進(jìn)棧的數(shù)據(jù))讀出且該數(shù)據(jù)繼續(xù)保存在棧存儲(chǔ)器的第一段,棧內(nèi)的數(shù)據(jù)不發(fā)生移動(dòng)。

(3)MPP(出棧指令)。將棧存儲(chǔ)器的第一段數(shù)據(jù)(最后進(jìn)棧的數(shù)據(jù))讀出且該數(shù)據(jù)從棧中消失,同時(shí)將棧中其它數(shù)據(jù)依次上移。

(4)堆棧指令沒有目標(biāo)元件。

(5)MPS和MPP必須配對使用。

(6)由于棧存儲(chǔ)單元只有11個(gè),因此棧的層次最多11層。

堆棧是片內(nèi)RAM區(qū)中的一塊連續(xù)的字節(jié)存儲(chǔ)單元,遵循“先入后出、后入先出”的使用原則。堆棧操作分為“入?!焙汀俺鰲!眱煞N,入棧操作通過PUSH指令將數(shù)據(jù)放入堆棧,而出棧操作通過POP指令將數(shù)據(jù)從堆棧中取出。一般情況下,堆棧操作指令PUSH和POP應(yīng)該成對出現(xiàn),并且滿足堆棧“先入后出、后入先出”的使用原則。堆棧通常用于子程序和中斷服務(wù)處理程序的調(diào)用、返回操作及參數(shù)傳遞和現(xiàn)場保護(hù),也可以用于存放程序執(zhí)行時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù)。

PUSH指令和POP指令只能進(jìn)行字節(jié)類型的數(shù)據(jù)傳送,而且指令中唯一的操作數(shù)必須采用直接尋址方式,其格式見表3-3。

堆棧操作中用到的特殊功能寄存器SP被稱為堆棧指針。堆棧操作時(shí),SP中的數(shù)被當(dāng)作片內(nèi)RAM存儲(chǔ)單元的地址。MCS-51單片機(jī)在入棧操作時(shí)SP增加、出棧時(shí)SP減小,這樣的堆棧被稱為“向上生長型”的堆棧。而入棧時(shí)SP減小、出棧時(shí)SP增大的堆棧被稱為“向下生長型”的堆棧。堆棧操作前,SP初始值所指向的片內(nèi)RAM存儲(chǔ)單元被稱為“棧底”,每次堆棧操作后,SP所指向的片內(nèi)RAM存儲(chǔ)單元被稱為“棧頂”。

【例3-25】堆棧操作指令。程序段及指令執(zhí)行時(shí)片內(nèi)RAM中的數(shù)據(jù)存放情況如下:

本例給出了指令執(zhí)行過程中片內(nèi)RAM中數(shù)據(jù)變化的情況,讀者應(yīng)將其與程序指令對照分析,并注意堆棧操作過程中SP的變化。

【例3-26】錯(cuò)誤堆棧操作指令舉例。以下4條指令均是錯(cuò)誤的。

本例指令錯(cuò)誤的原因是:在指令①和②中,A和R0都是寄存器,屬于寄存器尋址方式,而堆棧操作指令的操作數(shù)只能是直接尋址的;在指令③中,DPTR由DPH和DTL兩個(gè)特殊功能寄存器構(gòu)成,而DPTR本身不是特殊功能寄存器,不符合堆棧操作指令對操作數(shù)尋址方式的要求;在指令④中,立即數(shù)不能作堆棧操作指令的操作數(shù)。

交換指令

交換指令的功能是交換操作數(shù)的存放位置,指令語法格式見表3-4。

數(shù)據(jù)交換指令是實(shí)現(xiàn)兩個(gè)操作數(shù)據(jù)之間的位置互換的指令,這兩個(gè)操作數(shù)可以是兩個(gè)寄存器操作數(shù),或一個(gè)寄存器操作數(shù)與一個(gè)存儲(chǔ)器操作數(shù),或兩個(gè)存儲(chǔ)器操作數(shù),在多處理機(jī)中,也可以是一個(gè)寄存器操作數(shù)和一個(gè)共享存儲(chǔ)器操作數(shù)。數(shù)據(jù)交換指令實(shí)現(xiàn)了數(shù)據(jù)的雙向傳送,一條數(shù)據(jù)交換指令起到了三條數(shù)據(jù)傳送指令的作用。

【例3-27】交換指令舉例。指令如下:

在本例中,若假設(shè)指令執(zhí)行之前,(A)=0AFH、(R5)=23H、(B)=51H、(72H)=67H、(R0)=18H、(18H)=9EH,則上述6條指令執(zhí)行的結(jié)果分別如下:

①(A)=23H,(R5)=(0AFH)

②(A)=51H,(B)=(0AFH)

③(A)=67H,(72H)=(0AFH)

④(A)=9EH,((R0))=(18H)=(0AFH)

⑤(A)=0AEH,((R0))=(18H)=(9FH)

⑥(A)=0FAH

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉