51微控制器 8051指令簡介

2021-10-01 01:34:31 字數 2761 閱讀 9978

專業課本上包含的指令會比較全面,而在我的這篇博文中不會寫的那麼全。我只是簡單的介紹一些常見的指令,這些指令是我考試內容中必須要掌握的,是我對知識點的乙個簡單梳理。在開始之前先介紹一些必要的符號意義,這樣不至於在指令中看到太過於突兀。

傳送指令中常用的有mov,堆疊push\pop操作,累加器與外部資料的傳送、查表指令、位元組交換。

mov的操作比較好記,也便於理解。根據英語單詞move(移動,改變),我們可以知道mov的作用就是把內容進行轉移,至於轉移的內容可以是具體的內容,也可以是乙個位址,間接實現轉移內容。其實不難發現,很多指令根據一些單詞很容易記住其作用的,另外組合語言大小寫都可以,根據個人習慣。下面對mov進行簡單介紹:

mov 《目的運算元》,《源運算元》

累加器為目的運算元的指令:

mov a ,rn ; (rn) ——>a,把rn中的內容傳給a,暫存器定址方式

mov a,@ri ; ((ri))——>a,間接定址方式

mov a,direct; (direct)——>a,直接定址方式

例如:mov a,70h; (70h)——>a ,a中存入位址為70h中的內容

mov a,#direct; #direct——>a,立即數定址方式

例如:mov a,#70h; 70h——>a ,a中的內容為70h

這些指令的目的是把源運算元的內容送到累加器a中,以上四個指令還分別對應著暫存器定址方式、間接定址方式、直接定址方式、立即數定址方式。

暫存器間接位址為目的運算元的指令

mov @ri,a ;(a)——>((ri))

mov @ri,direct ;(direct)——>((ri))

mov @ri,#direct ;#direct——>((ri))

push(進棧指令),首先將棧指標sp加1,然後把內容送到sp所指的位址中

例如:

當(sp)= 60h,(a)= 30h,(b)= 70h,執行下面指令:

push acc ;(sp) + 1 = 61h ,(a) ——> 61h

push b ;(sp) + 1 = 62h ,(b) ——> 62h

結果:

(61h)= 30h,(62h)= 70h, (sp) = 62h

當(sp)= 62h,(62h)= 70h,(61h)= 30h時,

執行下面指令:

pop dph ; ((sp)) = dph ,sp-1——>sp,dph=70h

pop dpl ; ((sp)) = dpl ,sp-1——>sp,dpl=30h

結果:

(dptr)= 7030,(sp) = 60h

movx a,@dptr ;((dptr))——>a,讀取外部儲存器中的資料

movx @dptr,a ; (a)——>((dptr)),把內部資料寫入外部

這個地方主要注意區分一下mov與movx,例子的話可以看資料傳送片內到片外或者資料傳送片外到片內。

這類指令有兩條,均是採用基址暫存器加變址暫存器間接定址方式

當(a) = 30h時,執行1000h處指令

1000h:movc a,@a + pc

結果:

把1031h單元的中的內容送入a中,也許會有個疑問,為什麼不是1030h單元中的內容送入a中,這是因為這條指令的本身就佔了乙個單元格,下一條指令的起始位址為1001h,即(pc)= 1001h。

movc a,@a + dptr,該指令以dptr為基址暫存器。還是以栗子來看怎麼執行的:

(dptr) = 8100h,(a) = 40h,執行指令

movc a,@a + dptr

結果:

把8140h單元內容送入a中。

xch a,rn;(a)<——>(rn);

顧名思義,就是把兩個不同單元中內容進行交換,完全互換。區別於xchd a,rn(半位元組交換指令,只進行a中低四位與rn中高四位互換)。

加法

add a ,b; (a) = (a) + (b) 。

inc a ; 自加1,然後送入a中。

減法

dec a ; 自減1,然後送入a中。

乘法

mul ab ; ba = a*b;

除法

div ab; a = a/b(商),b = a/b(餘數);

anl : 與邏輯,全1為1,其餘為0

orl :或邏輯,全0為0,其餘為1

xrl : 異或邏輯,不同為1,相同為0

rl : 左迴圈

rr :右迴圈

jnb:內容為0,轉移

jb:內容為1,轉移

djnz:內容減1,不為0轉移

cjnz:比較結果不相等,轉移

(參考書籍《微控制器原理及應用》)

51微控制器系列 基礎指令

這學期開始學習51微控制器,感覺比彙編簡單,關鍵是51的彙編有乙個好的ide,練習起來也比較方便,這個系列主要記錄51的學習經驗。下面是基礎指令的練習 org 0000h ljmp main org 0030h main clr c cy 0 setb c cy 1 mov a,1111 0000b...

51微控制器

數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...

51微控制器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...