(玩電(dian)子) 電(dian)子技術學習(xi)與研xin)/div>
當前(qian)位置(zhi)︰單(dan)片(pian)機教程網 >> 基礎教程 >> 瀏覽文章

淘宝娱乐官网

作(zuo)者:佚名   來源:本(ben)站原創   點(dian)擊數:x  更新時間︰2020年02月25日   【字體︰

不帶進位位的單(dan)片(pian)機加法指令(ling)

ADD A,#DATA ;例(li)︰ADD A,#10H

ADD A,direct ;例(li)︰ADD A,10H

ADD A,Rn ;例(li)︰ADD A,R7

ADD A,@Ri ;例(li)︰ADD A,@R0

用途︰將A中的值與其(qi)後(hou)面的值相加,最終(zhong)結果(guo)否是回到A中。

例(li)︰MOV A,#30H

ADD A,#10H

則執行完本(ben)條指令(ling)後(hou),A中的值為40H。

下(xia)面的題目自行練(lian)習(xi)

MOV 34H,#10H

MOV R0,#13H

MOV A,34H

ADD A,R0

MOV R1,#34H

ADD A,@R1

帶進位位的加法指令(ling)

ADDC A,Rn

ADDC A,direct

ADDC A,@Ri

ADDC A,#data

用途︰將A中的值和其(qi)後(hou)面的值相加,並且加上進位位C中的值。

說明︰由于51單(dan)片(pian)機是一種8位機,所以只能做8位的數學運算(suan),但8位運算(suan)的範圍只有0-255,這在實際工作(zuo)中是不夠(gou)的,因此就(jiu)要進行擴展(zhan),一般(ban)是將2個8位的數學運算(suan)合起來,成為一個16位的運算(suan),這樣(yang),能表達的數的範圍就(jiu)能達到0-65535。如何合並呢?其(qi)實很(hen)簡單(dan),讓我們看一個10進制(zhi)數的例(li)程︰

66+78。

這兩個數相加,我們根本(ben)不在意這的過(guo)程,但事實上我們是這樣(yang)做的︰先做6+8(低位),然(ran)後(hou)再做6+7,這是高位。做了(liao)兩次加法,只是我們做的時候(hou)並沒(mei)有刻意分成兩次加法來做罷了(liao),或者說我們並沒(mei)有意識到我們做了(liao)兩次加法。之所以要分成兩次來做,是因為這兩個數超過(guo)了(liao)一位數所能表達的範置(zhi)(0-9)。

在做低位時產(chan)生了(liao)進位,我們做的時候(hou)是在適當的位置(zhi)點(dian)一下(xia),然(ran)後(hou)在做高位加法是將這一點(dian)加進去(qu)。那麼計(ji)算(suan)機中做16位加法時同樣(yang)如此,先做低8位的,如果(guo)兩數相加產(chan)生了(liao)進位,也要“點(dian)一下(xia)”做個標記,這個標記就(jiu)是進位位C,在PSW中。在進行高位加法是將這個C加進去(qu)。例(li)︰1067H+10A0H,先做67H+A0H=107H,而107H顯然(ran)超過(guo)了(liao)0FFH,因此最終(zhong)保存(cun)在A中的是7,而1則到了(liao)PSW中的CY位了(liao),換言之,CY就(jiu)相當于是100H。然(ran)後(hou)再做10H+10H+CY,結果(guo)是21H,所以最終(zhong)的結果(guo)是2107H。

帶借位的單(dan)片(pian)機減法指令(ling)

SUBB A,Rn

SUBB A,direct

SUBB A,@Ri

SUBB A,#data

設(每個H,(R2)=55H,CY=1,執行指令(ling)SUBB A,R2之後(hou),A中的值為73H。

說明︰沒(mei)有不帶借位的單(dan)片(pian)機減法指令(ling),如果(guo)需(xu)要做不帶位的減法指令(ling)(在做第一次相減時),只要將CY清零即(ji)可。

乘法指令(ling)

MUL AB

此單(dan)片(pian)機指令(ling)的功能是將A和B中的兩個8位無符號數相乘,兩數相乘結果(guo)一般(ban)比(bi)較大,因此最終(zhong)結果(guo)用1個16位數來表達,其(qi)中高8位放在B中,低8位放在A中。在乘積大于FFFFFH(65535)時,0V置(zhi)1(溢出),不然(ran)OV為0,而CY總是0。

例(li)︰(A)=4EH,(B)=5DH,執行指令(ling)

MUL AB後(hou),乘積是1C56H,所以在B中放的是1CH,而A中放的則是56H。

除法指令(ling)

DIV AB

此單(dan)片(pian)機指令(ling)的功能是將A中的8位無符號數除了(liao)B中的8位無符號數(A/B)。除法一般(ban)會出現小數,但計(ji)算(suan)機中可沒(mei)法直接(jie)表達小數,它用的是我們小學生還沒(mei)接(jie)觸(chu)到小數時用的商和余(yu)數的概念(nian),如13/5,其(qi)商是2,余(yu)數是3。除了(liao)以後(hou),商放在A中,余(yu)數放在B中。CY和OV都(du)是0。如果(guo)在做除法前(qian)B中的值是00H,也就(jiu)是除數為0,那麼0V=1。

加1指令(ling)

INC A

INC Rn

INC direct

INC @Ri

INC DPTR

用途很(hen)簡單(dan),就(jiu)是將後(hou)面目標中的值加1。例(li)︰(A)=12H,(R0)=33H,(21H)=32H,(34H)=22H,DPTR=1234H。執行下(xia)面的指令(ling)︰

INC A (A)=13H

INC R2 (R0)=34H

INC 21H (21H)=33H

INC @R0 (34H)=23H

INC DPTR ( DPTR)=1235H

後(hou)結果(guo)如上所示。

說明︰從結果(guo)上看INC A和ADD A,#1差(cha)不多,但INC A是單(dan)字節(jie),單(dan)周期指令(ling),而ADD #1則是雙字節(jie),雙周期指令(ling),而且INC A不會影響PSW位,如(A)=0FFH,INC A後(hou)(A)=00H,而CY依然(ran)保持(chi)不變。如果(guo)是ADD A ,#1,則(A)=00H,而CY一定是1。因此加1指令(ling)並不適合做加法,事實上它主要是用來做計(ji)數、地址增加等用途。另(ling)外,加法類指令(ling)都(du)是以A為核心的��其(qi)中一個數必(bi)須放在A中,而運算(suan)結果(guo)也必(bi)須放在A中,而加1類指令(ling)的對象(xiang)則廣(guang)泛得多,能是寄存(cun)器、內存(cun)地址、間址尋址的地址等等。

減1指令(ling)

減1指令(ling)

DEC A

DEC RN

DEC direct

DEC @Ri

與加1指令(ling)類似,就(jiu)不多說了(liao)。

綜合練(lian)習(xi)︰

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

先寫出每步運行結果(guo),然(ran)後(hou)將以上題目建入,並在軟件仿真(zhen)中運行,觀察寄存(cun)器及有關(guan)單(dan)元(yuan)的內容(rong)的變化(hua),是否與自已(yi)的預(yu)想結果(guo)相同。
 

淘宝娱乐官网

淘宝娱乐官网 | 下一页