微控制器c指令右移指令 微控制器算術運算類指令整理

2021-10-18 11:09:49 字數 2850 閱讀 5593

一、不帶進製位的微控制器加法指令 

add a,#data ;例:add a,#10h 

add a,direct ;例:add a,10h 

add a,rn ;例:add a,r7 

add a,@ri ;例:add a,@r0

用途:將a中的值與其後面的值相加,最終結果否是回到a中。

例:mov a,#30h add a,#10h

則執行完本條指令後,a中的值為40h。 下面的題目自行練習 

mov 34h,#10h

mov r0,#13h 

mov a,34h 

add a,r0 

mov r1,#34h 

add a,@r1

二、帶進製位的加法指令

addc a,rn 

addc a,direct 

addc a,@ri 

addc a,#data

用途:將a中的值和其後面的值相加,並且加上進製位c中的值。

說明:由於51微控制器是一種8位機,所以只能做8位的數**算,但8位運算的範圍只有0-255,這在實際工作中是不夠的,因此就要進行擴充套件,一般是將2個8位的數**算合起來,成為乙個16位的運算,這樣,能表達的數的範圍就能達到0-65535。如何合併呢?其實很簡單,讓我們看乙個10進製數的例程: 66+78。

這兩個數相加,我們根本不在意這的過程,但事實上我們是這樣做的:先做6+8(低位),然後再做6+7,這是高位。做了兩次加法,只是我們做的時候並沒有刻意分成兩次加法來做罷了,或者說我們並沒有意識到我們做了兩次加法。之所以要分成兩次來做,是因為這兩個數超過了一位數所能表達的範置(0-9)。 在做低位時產生了進製,我們做的時候是在適當的位置點一下,然後在做高位加法是將這一點加進去。那麼計算機中做16位加法時同樣如此,先做低8位的,如果兩數相加產生了進製,也要「點一下」做個標記,這個標記就是進製位c,在psw中。在進行高位加法是將這個c加進去。例:1067h+10a0h,先做

67h+a0h=107h,而107h顯然超過了0ffh,因此最終儲存在a中的是7,而1則到了psw中的cy位了,換言之,cy就相當於是100h。然後再做10h+10h+cy,結果是21h,所以最終的結果是2107h。

三、帶借位的微控制器減法指令

subb a,rn 

subb a,direct 

subb a,@ri 

subb a,#data

設(每個h,(r2)=55h,cy=1,執行指令subb a,r2之後,a中的值為73h

說明:沒有不帶借位的微控制器減法指令,如果需要做不帶位的減法指令(在做第一次相減時),只要將cy清零即可。

四、乘法指令 mul ab

此微控制器指令的功能是將a和b中的兩個8位無符號數相乘,兩數相乘結果一般比較大,因此最終結果用1個16位數來表達,其中高8位放在b中,低8位放在a中。在乘積大於fffffh(65535)時,0v置1(溢位),不然ov為0,而cy總是0。

例:(a)=4eh,(b)=5dh,執行指令

mul ab後,乘積是1c56h,所以在b中放的是1ch,而a中放的則是56h。

5、除法指令div ab

此微控制器指令的功能是將a中的8位無符號數除了b中的8位無符號數(a/b),除法一般會出現小數,但計算機中可沒法直接表達小數,它用的是我們小學生還沒接觸到小數時用的商和餘數的概念,如13/5.其商是2,餘數是3。除了以後,商放在a中,餘數放在b中。cy和ov都是0。如果在做除法前b中的值是00h,也就是除數為0,那麼0v=1。

六、 加1指令 

inc a 

inc rn 

inc direct 

inc @ri

inc dptr

用途很簡單,就是將後面目標中的值加1。

例:(a)=12h,(r0)=33h,(21h)=32h,(34h)=22h,dptr=1234h。執行下面的指令: 

inc a (a)=13h 

inc r2 (r0)=34h 

inc 21h (21h)=33h 

inc @r0 (34h)=23h 

inc dptr ( dptr)=1235h 後結果如上所示。

說明:從結果上看inc a和add a,#1差不多,但inc a是單位元組,單週期指令,而add #1則是雙位元組,雙週期指令,而且inc a不會影響psw位,如(a)=0ffh,inc a後(a)=00h,而cy依然保持不變。如果是add a ,#1,則(a)=00h,而cy一定是1。因此加1指令並不適合做加法,事實上它主要是用來做計數、位址增加等用途。另外,加法類指令都是以a為核心的其中乙個數必須放在a中,而運算結果也必須放在a中,而加1類指令的物件則廣泛得多,能是暫存器、記憶體位址、間址定址的位址等等。

七、減1指令 

dec a 

dec rn 

dec direct 

dec @ri

與加1指令類似,就不多說了。 

綜合練習: 

mov a,#12h 

mov r0,#24h 

mov 21h,#56h 

add a,#12h 

mov dptr,#4316h 

add a,dph 

add a,r0 clr c 

subb a,dpl 

subb a,#25h 

inc a setb c 

addc a,21h 

inc r0 

subb a,r0 

mov 24h,#16h 

clr c 

add a,@r0

先寫出每步執行結果,然後將以上題目建入,並在軟體**中執行,觀察暫存器及有關單元的內容的變化,是否與自已的預想結果相同。

微控制器中XPL指令是什麼 小小微控制器!(一)

現在機械裝置的逐漸發達,慢慢已經形成了自動化的特點,但是我們想過沒有,是什麼讓機器有條不紊的在執行,是程式,現在的多數機器使用的是高階語言例如c,c 等等,但是它們的基礎是低階語言,微控制器,今天小白給大家介紹一下微控制器!現在的微控制器學習適用於剛剛學習機械的同學們,小白上學期剛剛和老師學習了一些...

單片微控制器

微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...

單片微控制器

微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...