日本欧美一区-日本欧美一区二区三区片-日本强好片久久久久久AAA-日本-区一区二区三区A片-日本人伦一区二区三区-日本人妻A片成人免费看

電子開(kāi)發(fā)網(wǎng)

電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

51單片機(jī)指令系統(tǒng)(1)

作者:佚名    文章來(lái)源:網(wǎng)上收集    點(diǎn)擊數(shù):    更新時(shí)間:2008-11-4
第十九課:匯編語(yǔ)言基礎(chǔ)
所謂指令,就是規(guī)定計(jì)算機(jī)進(jìn)行某種操作的命令。

計(jì)算機(jī)按程序一條一條地依次執(zhí)行指令,從而完成指定任務(wù)。一條指令只能完成有限的功能,為使計(jì)算機(jī)完成一定的或者復(fù)雜的功能,就需要一系列指令。一般來(lái)說(shuō),一臺(tái)計(jì)算機(jī)的指令越豐富,尋址方式越多,且每條指令的執(zhí)行速度越快,則它的總體功能就越強(qiáng)。

程序設(shè)計(jì)語(yǔ)言:
機(jī)器語(yǔ)言
匯編語(yǔ)言
高級(jí)語(yǔ)言

我們學(xué)習(xí)的80C51單片機(jī)共有111條指令,這111條指令共有七種尋址方式。其中:

數(shù)據(jù)傳送類(lèi)指令  29條

算術(shù)運(yùn)算類(lèi)指令  24條

邏輯運(yùn)算及移位類(lèi)指令  24條

控制轉(zhuǎn)移類(lèi)指令  17條

位操作指令      17條

這111條指令的具體功能我們?cè)诤竺娴恼n程中將會(huì)逐條的與大家進(jìn)行分析。

由于計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù),所以計(jì)算機(jī)的指令均由二進(jìn)制代碼組成。為了閱讀和書(shū)寫(xiě)的方便,常把它寫(xiě)成十六進(jìn)制形式,通常稱(chēng)這樣的指令為機(jī)器指令。現(xiàn)在一般的計(jì)算機(jī)都有幾十甚至幾百種指令。顯然即便用十六進(jìn)制去書(shū)寫(xiě)和記憶也是不容易的,為了便于記憶和使用的方便,制造廠(chǎng)家對(duì)指令系統(tǒng)的每一條指令都給出了助記符。助記符是根據(jù)機(jī)器指令不同的功能和操作對(duì)象來(lái)描述指令的符號(hào)。由于助記符是用英文縮寫(xiě)來(lái)描述指令的特征,因此它不但便于記憶,也便于理解和分類(lèi)。這種用助記符形式來(lái)表示的機(jī)器指令稱(chēng)為匯編語(yǔ)言指令。

匯編語(yǔ)言有如下特點(diǎn):

① 助記符指令和機(jī)器指令一一對(duì)應(yīng),所以用匯編語(yǔ)言編寫(xiě)的程序效率高,占用存儲(chǔ)空間小,運(yùn)行速度快,因此匯編語(yǔ)言能編寫(xiě)出最優(yōu)化的程序。

② 使用匯編語(yǔ)言編程比使用高級(jí)語(yǔ)言困難。因?yàn)閰R編語(yǔ)言是面向計(jì)算機(jī)的,匯編語(yǔ)言的程序設(shè)計(jì)人員必須對(duì)計(jì)算機(jī)硬件有相當(dāng)深入的了解。

③ 匯編語(yǔ)言能直接訪(fǎng)問(wèn)存儲(chǔ)器及接口電路,也能處理中斷,因此匯編語(yǔ)言程序能直接管理和控制硬件設(shè)備。

④ 匯編語(yǔ)言缺乏通用性,程序不易移植,各種計(jì)算機(jī)都有自己的匯編語(yǔ)言,不同計(jì)算機(jī)的匯編語(yǔ)言之間不能通用。

匯編指令的格式

MCS-51匯編語(yǔ)言的語(yǔ)句格式表示如下:

  〔<標(biāo)號(hào)>〕:<操作碼>〔<操作數(shù)>〕;〔<注釋?zhuān)尽?BR>
  即一條匯編語(yǔ)句是由標(biāo)號(hào)、操作碼、操作數(shù)和注釋四個(gè)部分所組成,其中方括號(hào)括起來(lái)的是可選擇部分,可有可無(wú),視需要而定。

指令通常兩部份組成:操作碼、操作數(shù)

操作碼:是由助記符表示的字符串,操作碼其實(shí)就是告訴我們這條指令是起什么樣的一個(gè)功能,是加?減?傳送?還是控制?等等。

操作數(shù):是指參加操作的數(shù)據(jù)或者是數(shù)據(jù)地址。

注釋?zhuān)簽榱吮阌谖覀冮喿x程序,通常我們?cè)谥噶畹暮竺娑紩?huì)加上注釋。

標(biāo)號(hào):用來(lái)表示子程序名稱(chēng)或程序執(zhí)行條件跳轉(zhuǎn)時(shí)的程序跳轉(zhuǎn)地址,實(shí)際上是表示一個(gè)地址值。

在80C51指令系統(tǒng)中,操作數(shù)可以是1、2、3個(gè),也可以沒(méi)有。不同功能的指令,操作數(shù)作用也不同。例如,傳送類(lèi)指令多數(shù)有兩個(gè)操作數(shù),寫(xiě)在左面的稱(chēng)為目的操作數(shù)(表示操作結(jié)果存放的單元地址),寫(xiě)在右面的稱(chēng)為源操作數(shù)(指出操作數(shù)的來(lái)源)。

操作碼與操作數(shù)之間必須用空格分開(kāi),操作數(shù)與操作數(shù)之間必須用逗號(hào)“,”分開(kāi)。帶方括號(hào)的項(xiàng)可有可無(wú),稱(chēng)為可選項(xiàng)。由指令格式可見(jiàn),操作碼是指令的核心,不可缺少。

例如一條傳送指令的書(shū)寫(xiě)格式如為:MOV  A,3AH   ;(3AH)A
它表示將3AH存儲(chǔ)單元的內(nèi)容送到累加器A中。

指令的長(zhǎng)度

所謂指令的長(zhǎng)度,就是描述一條指令所需要的字節(jié)數(shù),用一個(gè)字節(jié)能描述的指令我們叫1字節(jié)指令,同理,用兩個(gè)字節(jié)描述的叫2字節(jié)指令,用三個(gè)字節(jié)描述的指令就叫3字節(jié)指令。在這里我們對(duì)80C51的111條指令進(jìn)行了分類(lèi):
1字節(jié)指令共有49條
2字節(jié)指令共有45條
3字節(jié)指令共有17條
到底哪條指令是1字節(jié)、2字節(jié)或者3字節(jié)指令,在我們后面的指令表中都可以查閱到的。

這里有一個(gè)問(wèn)題請(qǐng)大家引起注意,在前面的課程中,我們學(xué)習(xí)過(guò)指令計(jì)數(shù)器PC,PC是一個(gè)16位的計(jì)數(shù)器,那么這個(gè)指令計(jì)數(shù)器是怎樣來(lái)計(jì)數(shù)的呢?我們的指令有1字節(jié)、2字節(jié)、3字節(jié)指令。是不是每執(zhí)行一個(gè)字節(jié),這個(gè)指令計(jì)數(shù)器PC就自動(dòng)加1?答案是錯(cuò)誤的!!實(shí)際上,PC始終是跟蹤著指令的,并不是以字節(jié)數(shù)來(lái)相加。在我們存放程序的ROM中,是一個(gè)字節(jié)一個(gè)字節(jié)的向后執(zhí)行,但程序計(jì)數(shù)器PC并不是每加一個(gè)字節(jié)就加1,它是對(duì)特定的某一條指令執(zhí)行完了之后,相應(yīng)的程序計(jì)數(shù)器PC才加1,那么這條指令可能是1個(gè)字節(jié),也可能是2個(gè)或者3個(gè)字節(jié)。這個(gè)大家要引起重視。

在學(xué)習(xí)指令系統(tǒng)時(shí),先要了解某些符號(hào)的意義,現(xiàn)說(shuō)明如下:

Rn        :當(dāng)前選中的工作寄存器組R0-R7(n=0-7)。它在片內(nèi)數(shù)據(jù)存儲(chǔ)器中的地址由PSW中的RS1和RS0確定,可以是00H-07H(第0組)、08H-0FH(第1組)、10H-17H(第2組)、18H-1FH(第3組)。

Ri        :當(dāng)前選中的工作寄存器組中可作為地址指針的兩個(gè)工作寄存器R0和R1(i=0或i=1)。它在片內(nèi)數(shù)據(jù)存儲(chǔ)器中的地址由RS0及RS1確字,分別為00H、01H;08H、09H;10H、11H;18H、19H。

Direct    :8位片內(nèi)RAM單元(包含SFR)的直接地址

#data     :代表指令中8位的常量數(shù)據(jù)

#data16   :代表指令中16位的常量數(shù)據(jù)

addr16    :LCALL與LJMP所使用的16位目的地址

addr11    :ACALL與AJMP所使用的11位目的地址

rel       :指程序遇條件跳躍時(shí)的相對(duì)地址,往前最多可以跳128個(gè)字節(jié),往后最多可以跳127個(gè)字節(jié)。

bit       :特殊目的寄存器或內(nèi)部數(shù)據(jù)RAM中可直接尋址的位。

@         :間接尋址方式中,表示間址寄存器的符號(hào)

/         :位操作指令中,表示對(duì)該位先取反再參與操作,但不影響該位原值。

X         :片內(nèi)RAM的直接地址或寄存器

(X)     :在址接尋址方式中,表示直接地址X中的內(nèi)容;在間接尋址方式中,表示由間址寄存器X指出的地址單元中的內(nèi)容。

→       :指令操作流程,將箭頭左邊的內(nèi)容送入箭頭右邊的單元內(nèi)。



←       :指令操作流程,將箭頭右邊的內(nèi)容送入箭頭左邊的單元內(nèi)。
Tags:單片機(jī)開(kāi)發(fā),倒計(jì)時(shí)器,倒計(jì)時(shí)設(shè)計(jì),電路設(shè)計(jì)  
責(zé)任編輯:admin
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱(chēng):
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線(xiàn)幫助 - 文章列表
返回頂部
刷新頁(yè)面
下到頁(yè)底
晶體管查詢(xún)