當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一個單片機(jī)所需執(zhí)行指令的集合即為單片機(jī)的指令系統(tǒng)。單片機(jī)使用的機(jī)器語言、匯編語言及高級語言,但不管使用是何種語言,最終還是要“翻譯”成為機(jī)器碼,單片機(jī)才能執(zhí)行之?,F(xiàn)在有很多半導(dǎo)體廠商都推出了

一個單片機(jī)所需執(zhí)行指令的集合即為單片機(jī)的指令系統(tǒng)。單片機(jī)使用的機(jī)器語言、匯編語言及高級語言,但不管使用是何種語言,最終還是要“翻譯”成為機(jī)器碼,單片機(jī)才能執(zhí)行之?,F(xiàn)在有很多半導(dǎo)體廠商都推出了自己的單片機(jī),單片機(jī)種類繁多,品種數(shù)不勝數(shù),值得注意的是不同的單片機(jī)它們的指令系統(tǒng)不一定相同,或不完全相同。但不管是使用機(jī)器語言、匯編語言還是高級語言都是使用指令編寫程序的。

所謂機(jī)器語言即指令的二進(jìn)制編碼,而匯編語言則是指令的表示符號 。在指令的表達(dá)式上也不會直接使用二進(jìn)制機(jī)器碼,最常用的是十六進(jìn)制的形式。但單片機(jī)并不能直接執(zhí)行匯編語言和高級語言,都必須通過匯編器“翻譯”成為二進(jìn)制機(jī)器碼方能執(zhí)行,但如果直接使用二進(jìn)制來編寫程序,那將十分不便,也很難記憶和識別,不易編寫、難于辨讀,極易出錯,同時出錯了也相當(dāng)難查找。所以現(xiàn)在基本上都不會直接使用機(jī)器語言來編寫單片機(jī)的程序。最好的辦法就是使用易于閱讀和辨認(rèn)的指令符號來代替機(jī)器碼,我們常稱這些符號為助記符,用助記符的形式表示的單片機(jī)指令就是匯編語言,為便于記憶和閱讀,助記符號通常都使用易于理解的英文單詞和拼音字母來表示。

每種單片機(jī)都有自己獨(dú)特的指令系統(tǒng),那么指令系統(tǒng)是開發(fā)和生產(chǎn)廠商定義的,如要使用其單片機(jī),用戶就必須理解和遵循這些指令標(biāo)準(zhǔn),要掌握某種(類)單片機(jī),指令系統(tǒng)的學(xué)習(xí)是必須的。

MCS-51共有111條指令,可分為5類:

[1].數(shù)據(jù)傳送類指令(共29條)

[2].算數(shù)運(yùn)算類指令(共24條)

[3].邏輯運(yùn)算及移位類指令(共24條)

[4].控制轉(zhuǎn)移類指令(共17條)

[5].布爾變量操作類指令(共17條)

 

一些特殊符號的意義

在介紹指令系統(tǒng)前,我們先了解一些特殊符號的意義,這對今后程序的編寫都是相當(dāng)有用的。

Rn——當(dāng)前選中的寄存器區(qū)的8個工作寄存器R0—R7(n=0-7)。

Ri——當(dāng)前選中的寄存器區(qū)中可作為地址寄存器的兩個寄存器R0和R1(i=0,1)

direct—內(nèi)部數(shù)據(jù)存儲單元的8位地址。包含0—127(255)內(nèi)部存儲單元地址和特殊功能寄存地址。

#data—指令中的8位常數(shù)。

#data16—指令中的16位常數(shù)。

addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空間為64kB程序存儲器地址。

#addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必須放在與下條指令第一個字節(jié)同一個2kB程序存儲器空間之中。

rel—8位帶符號的偏移字節(jié),用于所有的條件轉(zhuǎn)移和SJMP等指令中,偏移字節(jié)對于下條指令的第一個字節(jié)開始的-128——+127范圍內(nèi)。

@—間接寄存器尋址或基址寄存器的前綴。

/—為操作的前綴,聲明對該位操作書取反。

DPTR—數(shù)據(jù)指針。

bit—內(nèi)部RAM和特殊功能寄存器的直接尋址位。

A—累加器。

B—累加器B。用于乘法和除法指令中。

C—進(jìn)位標(biāo)志位。

(x)—某地址單元中的內(nèi)容。

((x))—由X尋址單元中的內(nèi)容。

 

MCS-51的尋址方式

尋址的“地址”即為操作數(shù)所在單元的地址,絕大部分指令執(zhí)行時都需要用到操作數(shù),那么到哪里去取得操作數(shù)呢?最易想到的就是告訴CPU操作數(shù)所在的地址單元,從那里可取得響應(yīng)的操作數(shù),這便是“尋址”之意。MCS-51的尋址方式很多,使用起來也相當(dāng)方便,功能也很強(qiáng)大,靈活性強(qiáng)。這便是MCS-51指令系統(tǒng)“好用”的原因之一。下面我們分別討論幾種尋址方式的原理。

[1].直接尋址

指令中操作數(shù)直接以單元地址形式出現(xiàn),例如:

MOV A,68H

這條指令的意義是把內(nèi)部RAM中的68H單元中的數(shù)據(jù)內(nèi)容傳送到累加器A中。值得注意的是直接尋址方式只能使用8位二進(jìn)制地址,因此這種尋址方式僅限于內(nèi)部 RAM進(jìn)行尋址。低128位單元在指令中直接以單元地址的形式給出。對于特殊功能寄存器可以使用其直接地址進(jìn)行訪問,還可以以它們的符號形式給出,只是特殊功能寄存器只能用直接尋址方式訪問,而無其它方法。

[2].寄存器尋址

寄存器尋址對選定的8個工作寄存器R0-R7進(jìn)行操作,也就是操作數(shù)在寄存器中,因此指定了寄存器就得到了操作數(shù),寄存器尋址的指令中以寄存器的符號來表示寄存器,例如:

MOV A,R1

這條指令的意義是把所用的工作寄存器組中的R3的內(nèi)容送到累加器A中。

值得一提的是工作狀態(tài)寄存器的選擇是通過程序狀態(tài)字寄存器來控制的,在這條指令前,應(yīng)通過PSW設(shè)定當(dāng)前工作寄存器組。

[3].寄存器間接尋址

寄存器尋址方式,寄存器中存放的是操作數(shù),而寄存器間接尋址方式,寄存器中存放的則為操作數(shù)的地址,也即操作數(shù)是通過寄存器指向的地址單元得到的,這便是寄存器間接尋址名稱的由來。

例如指令:

MOV A,@R0

這條指令的意義是R0寄存器指向地址單元中的內(nèi)容送到累加器A中。假如R0=#56H,那么是將56H單元中的數(shù)據(jù)送到累加器A中。

寄存器間接尋址方式可用于訪問內(nèi)部RAM或外部數(shù)據(jù)存儲器。訪問內(nèi)部RAM或外部數(shù)據(jù)存儲器的低256字節(jié)時,可通過R0和R1作為間接寄存器。然而有必要指出,內(nèi)部RAM的高128字節(jié)地址與專用積存器的地址是重疊的,所以這種尋址方式不能用于訪問特殊功能寄存器。

外部數(shù)據(jù)存儲器的空間為64kB,這時可采用DPTR作為間址寄存器進(jìn)行訪問,指令如下:

MOVX A,@DPTR

這條指令的意義是與上述類似,不再贅述。

[4].立即尋址

立即尋址就是把操作數(shù)直接在指令中給出,即操作數(shù)包含在指令中,指令操作碼的后面緊跟著操作數(shù),一般把指令中的操作數(shù)稱為立即數(shù),因此而得名。為了與直接尋址方式相區(qū)別,在立即數(shù)前加上“#”符號,例如:

MOVX A,#0EH

這條指令的意義是將0EH這個操作數(shù)送到累加器A中。

[5].變址尋址

變址尋址是以DPTR或PC作為基址寄存器,以累加器A作為變址寄存器,將兩寄存器的內(nèi)容相加形成16位地址形成操作數(shù)的實際地址。例如:

MOV A,@A+DPTR

MOVX A,@A+PC

JMP @A+DPTR

在這三條指令中,A作為偏移量寄存器,DPTR或PC作為變址寄存器,A作為無符號數(shù)與DPTR或PC的內(nèi)容相加,得到訪問的實際地址。其中前兩條是程序存儲器讀指令,后一條是無條件轉(zhuǎn)移指令。

[6].位尋址

MCS-51單片機(jī)中,RAM中的20H—2FH字節(jié)單元對應(yīng)的位地址為00H—7FH,特殊功能寄存器中的某些位也可進(jìn)行為尋址,這些單元既可以采用字節(jié)方式訪問它們,也可采用位尋址的方式訪問它們。

[7].相對尋址

相對尋址方式是為了程序的相對轉(zhuǎn)移而設(shè)計的,其夜里是以PC的內(nèi)容為基址,加上給出的偏移量作為轉(zhuǎn)移地址,從而實現(xiàn)程序的轉(zhuǎn)移。轉(zhuǎn)移的目的地址可參見如下表達(dá)式:

目的地址=轉(zhuǎn)移指令地址+轉(zhuǎn)移指令字接數(shù)+偏移量

值得注意的是,偏移量是有正負(fù)號之分的,偏移量的取值范圍是當(dāng)前PC值的-128—+127之間。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(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)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

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