當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]在指令“MOV A,#12H”中,立即數(shù)#12H是源操作數(shù),緊隨操作碼74H之后存放在ROM中。該指令執(zhí)行時(shí),單片機(jī)先從ROM中讀取操作碼74H,對(duì)操作碼74H解碼后,確定要進(jìn)行的操作是將一個(gè)8位立即數(shù)送入累加器A,接下來單片機(jī)從緊鄰操作碼的下一個(gè)存儲(chǔ)單元中取得立即數(shù)12H并送入累加器A。另外,該指令的目的操作數(shù)累加器A隱含在操作碼中,沒有明確給出。

操作數(shù)是指令的處理對(duì)象,是指令的重要組成部分。尋址方式是確定操作數(shù)存放位置的方式,是正確掌握指令使用方法的基礎(chǔ)。

MCS-51單片機(jī)指令有7種尋址方式,分別是立即數(shù)尋址、寄存器尋址、直接尋址、寄存器間接尋址、位尋址、變址尋址和相對(duì)尋址。

1立即數(shù)尋址

立即數(shù)是以“#”開頭的數(shù)字,如#10、#10010B、#13H、#1256H和#0ACH等。在指令中,立即數(shù)只能是源操作數(shù),不能是目的操作數(shù)。

【例3-10】立即數(shù)尋址。指令在ROM中的存放如下:

在指令“MOV A,#12H”中,立即數(shù)#12H是源操作數(shù),緊隨操作碼74H之后存放在ROM中。該指令執(zhí)行時(shí),單片機(jī)先從ROM中讀取操作碼74H,對(duì)操作碼74H解碼后,確定要進(jìn)行的操作是將一個(gè)8位立即數(shù)送入累加器A,接下來單片機(jī)從緊鄰操作碼的下一個(gè)存儲(chǔ)單元中取得立即數(shù)12H并送入累加器A。另外,該指令的目的操作數(shù)累加器A隱含在操作碼中,沒有明確給出。

2寄存器尋址

當(dāng)指令的操作數(shù)位于某一寄存器中時(shí),該操作的尋址方式為寄存器尋址??捎糜诩拇嫫鲗ぶ返募拇嫫饔校汗ぷ骷拇嫫鱎0~R7、累加器A、數(shù)據(jù)指針寄存器DPTR,以及MUL和DIV指令中的累加器A和寄存器B。

【例3-11】寄存器尋址。指令及其在ROM中的存放如下:

在本例中,R0、R2和DPTR均為寄存器尋址的操作數(shù)。其中,指令“MOV R0,#12H”和“MOV R2,#13H”的操作碼分別是78H和7AH,單片機(jī)對(duì)操作碼進(jìn)行譯碼后即可知指令要完成的操作分別是將一個(gè)立即數(shù)送入工作寄存器R0和R2中;“INC DPTR”的操作碼中隱含了操作數(shù),其操作是將DPTR中的數(shù)加1。

3直接尋址

若指令中直接給出操作數(shù)的存儲(chǔ)地址,則該操作數(shù)的尋址方式是直接尋址。可以通過直接尋址方式訪問存放于片內(nèi)RAM(地址范圍為00H~7FH)和特殊功能寄存器(地址范圍為80H~FFH)中的操作,并且直接尋址操作數(shù)的地址將出現(xiàn)在指令的機(jī)器碼中。

【例3-12】直接尋址。指令及其在ROM中的存放如下:

在本例中,兩條指令的操作碼都是75H,代表指令要完成的操作是將一個(gè)立即數(shù)傳送給一個(gè)直接尋址的操作數(shù)。目標(biāo)操作數(shù)SP和10H的尋址方式均為直接尋址,其中,SP是特殊功能寄存器,其地址為81H。需要注意的是,代表地址的數(shù)字10H沒有以“#”開頭,若數(shù)字以“#”開頭即為立即數(shù)尋址。

4寄存器間接尋址

采用寄存器間接尋址的操作數(shù)均存放在存儲(chǔ)器中,其存儲(chǔ)地址在寄存器中。指令執(zhí)行時(shí),首先要從寄存器中獲得操作數(shù)的存儲(chǔ)地址,然后根據(jù)該地址找到存放操作數(shù)的存儲(chǔ)單元,進(jìn)而實(shí)現(xiàn)操作數(shù)的訪問。在寄存器間接尋址中,寄存器的作用類似于指針,用于存放數(shù)據(jù)的地址。可用于寄存器間接尋址的寄存器有R0、R1和DPTR。寄存器間接尋址方式可以用于訪問片內(nèi)RAM、片外RAM、片外I/O接口和ROM。

【例3-13】寄存器間接尋址。指令及其在ROM中的存放如下:

在本例中,目標(biāo)操作數(shù)@R0的尋址方式是寄存器間接尋址。若寄存器R0中的數(shù)值是34H,則數(shù)值12H將被傳送到片內(nèi)RAM區(qū)中地址為34H的存儲(chǔ)單元中。指令執(zhí)行時(shí),單片機(jī)取得操作碼76H,對(duì)操作碼進(jìn)行譯碼后,確定需要完成的任務(wù)是將一個(gè)立即數(shù)送入一個(gè)片內(nèi)RAM存儲(chǔ)單元中,而該存儲(chǔ)單元的地址在R0中,需要傳送的立即數(shù)在ROM中并存放于操作碼之后。

5位尋址

前幾種尋址方式均用于訪問字節(jié)型數(shù)據(jù),屬于字節(jié)數(shù)據(jù)尋址可以對(duì)單獨(dú)一位進(jìn)行訪問,所采用的尋址方式為位尋址。位尋址可用于訪問片內(nèi)RAM的位尋址區(qū)和可以按位尋址的特殊功能寄存器的位。

片內(nèi)RAM位尋址區(qū)中位的表達(dá)方式有以下兩種:①位地址值(00H~0F7H);②字節(jié)地址.位序號(hào)。

可以按位尋址的特殊功能寄存器位的表達(dá)方式有以下四種:①位地址值(80H~0F7H);②位名稱;③特殊功能寄存器字節(jié)地址.位序號(hào);④特殊功能寄存器名稱.位序號(hào)。另外,特殊功能寄存器名稱是特殊功能寄存器地址的符號(hào)表示,它們是等價(jià)的。

需要特別注意的是:在表示累加器A中的位的位地址時(shí),不能用“A.位序號(hào)”,只能用“ACC.位序號(hào)”。

【例3-14】片內(nèi)RAM中的位尋址。指令如下:

6變址尋址

變址尋址是“基址寄存器加變址寄存器間接尋址”的簡稱。在這種尋址方式中,基址寄存器是16位的程序計(jì)數(shù)器(PC)或16位的數(shù)據(jù)指針寄存器(DPTR),變址寄存器是累加器A。指令執(zhí)行時(shí),基址寄存器內(nèi)的數(shù)與變址寄存器內(nèi)的數(shù)相加構(gòu)成16位的源操作數(shù)地址。這種尋址方式只能用于程序存儲(chǔ)器的訪問。另外,因?yàn)槌绦虼鎯?chǔ)器中的內(nèi)容無法改變,所以這種尋址方式只適用于源操作數(shù)。

采用變址尋址方式的指令共有三條,包括:“MOVC A,@A+PC”、“MOVC A,@A+DPTR”和“JMP@A+DPTR”。下面僅以指令“MOVC A,@A+DPTR”為例介紹變址尋址方式。

【例3-16】變址尋址MOVC指令。指令如下:

MOVC A,@A+DPTR;以(A)+(DPTR)為地址,從ROM中取1個(gè)字節(jié)數(shù)據(jù)送入累加器A

在本例中,指令“MOVC A,@A+DPTR”的機(jī)器碼是93H,其中隱含了源操作數(shù)和目標(biāo)操作數(shù),該指令執(zhí)行時(shí),單片機(jī)取得操作碼93H并對(duì)其譯碼后,即知要完成的操作是以(A)+(DPTR)為地址,從ROM中取1個(gè)字節(jié)數(shù)據(jù)送入累加器A。若該指令執(zhí)行之前,(A)=30H、(DPTR)=2000H,則該指令執(zhí)行時(shí),源操作數(shù)在程序存儲(chǔ)器的地址為30H+2000H=2030H。該指令執(zhí)行后,程序存儲(chǔ)器中地址為2030H的字節(jié)單元中的數(shù)據(jù)將被傳送給累加器A。

7相對(duì)尋址

相對(duì)尋址主要用于相對(duì)轉(zhuǎn)移指令,相對(duì)轉(zhuǎn)移指令執(zhí)行時(shí)程序?qū)l(fā)生跳轉(zhuǎn)。根據(jù)計(jì)算機(jī)的工作原理,程序執(zhí)行之前被存放在存儲(chǔ)器中,程序執(zhí)行時(shí)計(jì)算機(jī)將以程序計(jì)數(shù)器中的值為地址到相應(yīng)的存儲(chǔ)器單元中取指令,取得的指令將被譯碼并執(zhí)行。因此,跳轉(zhuǎn)指令之所以能使程序發(fā)生跳轉(zhuǎn),是因?yàn)槠淠苁褂?jì)算機(jī)不按存儲(chǔ)順序取指令。

在相對(duì)尋址中,目標(biāo)地址=程序計(jì)數(shù)器(PC)的當(dāng)前值+地址偏移量rel。指令執(zhí)行后,目標(biāo)地址被送入PC,使得單片機(jī)到目標(biāo)地址所指向的程序存儲(chǔ)器單元中取指令,從而改變程序的執(zhí)行順序。需要注意的是:①程序計(jì)數(shù)器(PC)的當(dāng)前值(可簡稱為當(dāng)前PC值)是相對(duì)轉(zhuǎn)移指令的下一條指令在程序存儲(chǔ)器中的存放地址,可以由轉(zhuǎn)移指令本身的存放地址加上轉(zhuǎn)移指令本身的字節(jié)長度獲得;②地址偏移量rel是8位有符號(hào)數(shù)(-128~+127)。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉