版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
任務(wù)1數(shù)據(jù)傳送類指令的應(yīng)用任務(wù)2
算術(shù)運算類指令的應(yīng)用任務(wù)3控制轉(zhuǎn)移類指令和位操作類指令的應(yīng)用任務(wù)4
邏輯運算類指令的應(yīng)用任務(wù)1數(shù)據(jù)傳送類指令的應(yīng)用1.掌握MCS-51單片機的尋址方式。2.掌握數(shù)據(jù)傳送類指令的功能及用法。將LED0~LED7八只發(fā)光二極管接在單片機的P1.0~P1.7,如圖所示。編程實現(xiàn)如下功能,并在Protues軟件中進(jìn)行仿真。1.分別運用立即數(shù)尋址、直接尋址、寄存器尋址和寄存器間接尋址方式結(jié)合數(shù)據(jù)傳送指令實現(xiàn)LED0、LED2、LED4、LED6亮,LED1、LED3、LED5、LED7滅。2.運用交換指令實現(xiàn)LED0、LED1、LED2、LED3亮,LED4、LED5、LED6、LED7滅。一、指令的格式一條指令通常由操作碼和操作數(shù)兩部分組成。操作碼是用來規(guī)定指令所完成的操作的,而操作數(shù)則表示操作的對象。在51系列的指令中,有單字節(jié)、雙字節(jié)和三字節(jié)等不同長度的指令。1.單字節(jié)指令指令只有一個字節(jié),操作碼和操作數(shù)在同一個字節(jié)中。在51系列的指令系統(tǒng)中,共有49條單字節(jié)指令。[例]INCA2.雙字節(jié)指令雙字節(jié)指令包括兩個字節(jié)。其中一個字節(jié)為操作碼,另一個字節(jié)為操作數(shù)。在51系列的指令系統(tǒng)中,共有45條雙字節(jié)指令。[例]MOVA,#data3.三字節(jié)指令在三字節(jié)指令中,操作碼占一個字節(jié),操作數(shù)占兩個字節(jié),其中操作數(shù)既可能是數(shù)據(jù),也可能是地址。在51系列的指令系統(tǒng)中,共有17條三字節(jié)指令。[例]CJNEA,#data,rel匯編語言指令基本格式見下表:標(biāo)號:操作碼助記符操作數(shù)1,操作數(shù)2,操作數(shù)3;注釋LOOP:MOVA,30H---;A
(30)MAIN:INCA------;A
A+1DELAY:CJNEA,#30H,LOOP;比較指令二、常用符號與助記符◆Rn:工作寄存器中的寄存器Rn,R1…R7之一。◆Ri:工作寄存器中的寄存器R0或R1。◆#data:8位立即數(shù)?!?data16:16位立即數(shù)?!鬱irect:片內(nèi)RAM或SFR的地址(8位)。◆@Ri(i=0,1):間接尋址寄存器?!鬊it:片內(nèi)RAM或SFR的位地址。1.常用符號◆addr11:11位目的地址?!鬭ddr16:16位目的地址?!魊el:補碼形式的8位地址偏移量,偏移范圍為-128~127?!?:位操作指令中,該位求反后參與操作,不影響該位。◆X:片內(nèi)RAM的直接地址或寄存器。◆(X):相應(yīng)地址單元中的內(nèi)容?!?(X)):由X尋址的單元中的內(nèi)容?!?/p>
←:箭頭右邊的內(nèi)容傳送到箭頭的左邊。2.助記符助記符用于規(guī)定指令進(jìn)行何種操作,共42種,一般由2~5個英文字母組成。常用助記符及其功能見下表:助記符常見格式功能MOVA,R0對內(nèi)部數(shù)據(jù)寄存器RAM和特殊功能寄存器SFR的數(shù)據(jù)進(jìn)行傳送MOVXA,@R0對外部RAM的數(shù)據(jù)進(jìn)行傳送MOVCA,@A+DPTR程序存儲器內(nèi)容與其他存儲單元間數(shù)據(jù)進(jìn)行傳送XCHA,R0字節(jié)交換XCHDA,@R0低半字節(jié)交換助記符常見格式功能SWAPA低4位與高4位交換PUSHA入棧POPA出棧SETBC置1CLRC清0ANLA,R0邏輯與JNZLOOPA不為0則轉(zhuǎn)移(續(xù)表)三、
MCS—51單片機的尋址方式1.立即尋址尋址方式是指某一個CPU指令系統(tǒng)中規(guī)定的尋找操作數(shù)所在地址的方式。立即尋址即直接在指令中給出操作數(shù),一般把指令中的操作數(shù)稱為立即數(shù)。為了與直接尋址相區(qū)別,在操作數(shù)前加“#”表示。[例]MOVA,#30H;
A
30HMOVDPTR,#40H;DPTR
40H[例]
MOVA,30H;A
(30H)
MOV40H,30H;(40H)
(30H)2.直接尋址直接尋址就是在指令中給出操作數(shù)的地址。3.寄存器尋址寄存器尋址就是將寄存器中的內(nèi)容作為操作數(shù),寄存器一般指累加器A或工作寄存器R0~R7。[例]
MOVA,Rn;A
(Rn)
MOVRn,A;Rn
(A)MOVB,A;B
(A)[例]
MOVA,
@Ri;A
((Ri))
4.寄存器間接尋址5.變址尋址[例]MOVCA,@A+DPTR;A
((A)+(DPTR))
MOVCA,@A+PC;A
((A)+(PC))寄存器間接尋址就是以寄存器中的內(nèi)容作為地址,將該地址內(nèi)的數(shù)作為操作數(shù)。變址尋址用于訪問程序存儲器中的數(shù)據(jù)表格,它以基址寄存器(DPTR或PC)的內(nèi)容為基本地址,加上變址寄存器A的內(nèi)容形成16位的地址,訪問程序存儲器中的數(shù)據(jù)表格。[例]
JNZ60H;A=0PC
PC+2
;A≠0PC
PC+60H
6.相對尋址相對尋址是以程序計數(shù)器PC的當(dāng)前值作為基地址,與指令中給出的相對偏移量rel進(jìn)行相加,把所得之和作為程序的轉(zhuǎn)移地址。轉(zhuǎn)移的范圍為-128~+127,使用中應(yīng)注意rel的范圍不要超出。該指令中60H為偏移量,偏移量為一個8位有符號數(shù),其取值范圍在-128~+127之間,所以程序既可以向上轉(zhuǎn)移,也可以向下轉(zhuǎn)移。[例]
SETBTR0;TR0
1CLR00H;(00H)
0MOVC,bit;C
bitANLC,bit;C
C∧bit7.位尋址位尋址就是對位地址空間的每個位進(jìn)行位狀態(tài)傳送、狀態(tài)控制、邏輯運算操作。在51系列單片機中,與外部存儲器RAM打交道的只能是A累加器。所有需要傳送入外部RAM的數(shù)據(jù)必需通過A送去,而所有要讀入的外部RAM中的數(shù)據(jù)也必需通過A讀入。在此能看出內(nèi)外部RAM的區(qū)別,內(nèi)部RAM間能直接進(jìn)行數(shù)據(jù)的傳遞,而外部則不行。除了目的操作數(shù)為ACC的指令影響奇偶標(biāo)志P外,其他一般不影響標(biāo)志位。四、數(shù)據(jù)傳送類指令(共29條)1.以累加器A為目的操作數(shù)類指令數(shù)據(jù)傳送類指令一般的操作是把源操作數(shù)傳送到目的操作數(shù),指令執(zhí)行完成后,源操作數(shù)不變,目的操作數(shù)等于源操作數(shù)。MOVA,data;(A)
(data)MOVA,#data;(A)
#dataMOVA,Rn;(A)
(Rn)MOVA,@Ri;(A)
((Ri))功能:把源操作數(shù)的內(nèi)容送到累加器A。尋址方式:直接、立即、寄存器和寄存器間接4種尋址方式。2.以寄存器Rn為目的操作數(shù)的指令MOVRn,data;(Rn)
(data)MOVRn,#data;(Rn)
#dataMOVRn,A;(Rn)
(A)功能:把源操作數(shù)指定的內(nèi)容送到所選定的工作寄存器Rn中。尋址方式:直接、立即和寄存器3種尋址方式。3.以直接地址為目的操作數(shù)的指令功能:把源操作數(shù)指定的內(nèi)容送到由直接地址data所選定的片內(nèi)RAM中。尋址方式:直接、立即、寄存器和寄存器間接4種尋址方式。MOVdata,data;(data)
(data)MOVdata,#data;(data)
#dataMOVdata,A;(data)
(A)MOVdata,Rn;(data)
(Rn)MOVdata,@Ri;(data)
((Ri))4.以間接地址為目的操作數(shù)的指令功能:把源操作數(shù)指定的內(nèi)容送到以Ri中的內(nèi)容為地址的片內(nèi)RAM中。
尋址方式:直接、立即和寄存器3種尋址方式。MOV@Ri,data;((Ri))
(data)MOV@Ri,#data;((Ri))
#dataMOV@Ri,A;((Ri))
(A)5.查表指令功能:對存放于程序存儲器中的數(shù)據(jù)表格進(jìn)行查找傳送。尋址方式:使用變址尋址方式。MOVCA,@A+DPTR;(A)
((A)+(DPTR))MOVCA,@A+PC;(A)
((A)+(PC))6.累加器A與片外數(shù)據(jù)存儲器RAM傳送指令功能:
用于累加器A與片外RAM間的數(shù)據(jù)傳送。尋址方式:使用寄存器尋址方式。MOVX@DPTR,A;((DPTR))
(A)MOVXA,@DPTR;(A)
((DPTR))MOVXA,@Ri;(A)
((Ri))MOVX@Ri,A;((Ri))
(A)7.堆棧操作類指令功能:把直接尋址單元的內(nèi)容傳送到堆棧指針SP所指的單元中,以及把SP所指單元的內(nèi)容送到直接尋址單元中。PUSHdata;SP
SP+1,((SP))
(data)POPdata;(data)
(SP)SP
(SP)-1這類指令只有兩條,第一條稱為入棧操作指令,第二條稱為出棧操作指令。1.單片機開機復(fù)位后,(SP)默認(rèn)為07H,但一般都需要重新賦值,設(shè)置新的SP首址。入棧的第一個數(shù)據(jù)必須存放于SP+1所指存儲單元,故實際的堆棧底為SP+1所指的存儲單元。2.進(jìn)棧是堆棧指針首先加1,然后直接尋址單元中的數(shù)據(jù)再送到堆棧指針SP所指的單元中。而出棧是指針SP所指的單元數(shù)據(jù)先送到直接尋址單元中,然后堆棧指針SP再進(jìn)行減1操作。8.交換指令功能:把累加器A中的內(nèi)容與源操作數(shù)所指的數(shù)據(jù)相互交換。XCHD是把累加器A中的內(nèi)容的低4位與源操作數(shù)所指的數(shù)據(jù)的低4位相互交換。SWAP將A中的值的高4位與低4位進(jìn)行交換。XCHA,Rn;(A)←→(Rn)XCHA,@Ri;(A)←→((Ri))XCHA,data;(A)←→(data)XCHDA,@Ri;(A3-0)←→((Ri)3-0)SWAPA;(A3-0)←→(A7-4)9.十六位數(shù)據(jù)傳送指令
功能:把16位常數(shù)送入數(shù)據(jù)指針寄存器,其中高8位送到DPH,低8位送到DPL。MOVDPTR,#data16;(DPH)
#dataH,;(DPL)
#dataL一、在Proteus中繪制仿真電路圖二、數(shù)據(jù)傳送類指令1.ASM1.編寫程序2.編譯程序并仿真三、數(shù)據(jù)傳送類指令2.ASM1.編寫程序單擊此處返回目錄2.編譯程序并仿真任務(wù)2算術(shù)運算類指令的應(yīng)用1.理解MCS-51單片機算術(shù)運算類指令的功能。2.掌握算術(shù)運算類指令的用法。3.通過編程計算梯形的面積,掌握算術(shù)運算類指令的應(yīng)用。51系列單片機為單芯片微控制器(簡稱MCU),內(nèi)部含有具有數(shù)據(jù)運算處理能力的CPU。而在一些單片機應(yīng)用系統(tǒng)中,往往需要對外部復(fù)雜數(shù)據(jù)進(jìn)行運算處理。本任務(wù)主要通過編程計算圖示梯形的面積來學(xué)習(xí)對外部數(shù)據(jù)進(jìn)行算數(shù)運算處理的方法(已知梯形的上底長為a,下底長為b,高是h)。算術(shù)運算類指令主要包括ADD、ADDC、SUBB、MUL、DIV、INC、DEC和DA等,如圖所示。一、不帶進(jìn)位的加法指令A(yù)DDA,Rn;A
(A)+(Rn)ADDA,direct;A
(A)+(direct)ADDA,@Ri;A
(A)+((Ri))ADDA,#data;A
(A)+data
[例](A)=85H,R0=20H,(20H)=0AFH,執(zhí)行指令:ADDA,@R0結(jié)果:(A)=34H;CY=1;AC=1;OV=1。二、帶進(jìn)位的加法指令A(yù)DDCA,Rn;A
(A)+(Rn)+(CY)ADDCA,direct;A
(A)+(direct)+(CY)ADDCA,@Ri;A
(A)+((Ri))+(CY)ADDCA,#data;A
(A)+data+(CY)
[例]
(A)=85H,(20H)=0FFH,CY=1,執(zhí)行指令:ADDCA,20H結(jié)果:(A)=85H;CY=1;AC=1;OV=0。三、帶借位的減法指令SUBBA,Rn;A
(A)-(Rn)-(CY)SUBBA,direct;A
(A)-(direct)-(CY)SUBBA,@Ri;A
(A)-(Ri)-(CY)SUBBA,#data;A
(A)-data-(CY)
[例](A)=4EH,R0=5DH,執(zhí)行指令:
SUBBA,R0結(jié)果:(A)=F1H,CY=1(有借位),OV=0。四、乘法指令沒有不帶借位的減法指令,如果需要做不帶借位的減法指令(在做第一次相減時),只要將CY清零即可。MULAB;B
高8位,A
低八位
[例1](A)=4EH,(B)=5DH,執(zhí)行指令:MULAB結(jié)果:(B)=1CH,(A)=56H(即乘積為1C56H)CY=0,OV=0。
[例2](A)=50H,(B)=0A0H,執(zhí)行指令:MULAB;結(jié)果:(B)=32H,(A)=00H(即乘積為3200H),CY=0,OV=1。五、除法指令DIVAB;A
商,B
余數(shù)CY位和OV位都是“0”,如果在做除法前B中的值是00H,那么OV=1。
[例](A)=3FH,(B)=0AH,執(zhí)行指令:DIVAB;結(jié)果:(B)=03H,(A)=06H(即乘積為3200H),CY=0,OV=1。六、加1指令
[例]
(A)=12H,(R3)=0FH,(35H)=4AH,(R0)=56H,(56H)=00H,執(zhí)行如下指令:INCA;執(zhí)行后(A)=13HINCR3;執(zhí)行后(R3)=10HINC35H;執(zhí)行后(35H)=4BHINC@R0;執(zhí)行后(56H)=01HINCA;A
(A)+1INCRn;Rn
(Rn)+1INCdirect;direct
(direct)+1INC@Ri;(Ri)
((Ri))+1INCDPTR;DPTR
(DPTR)+1七、減1指令
[例]
(A)=12H,(R3)=0FH,(35H)=4AH,(R0)=56H,(56H)=00H,執(zhí)行如下指令:DECA;執(zhí)行后(A)=11HDECR3;執(zhí)行后(R3)=0EHDEC35H;執(zhí)行后(35H)=3FHDEC@R0;執(zhí)行后(56H)=0FFHDECA;A
(A)-1DECRn;Rn
(Rn)-1DECdirect;direct
(direct)-1DEC@Ri;(Ri)
((Ri))-1要實現(xiàn)梯形面積的運算,主要分為三步:計算a+b;計算(a+b)×h;計算(a+b)×h÷2。在匯編語言中,除法運算是取余,因此此計算梯形的方法僅適用于上底加下底結(jié)果為偶數(shù)的梯形。此外,為了使梯形的面積值便于觀察,程序中分別定義梯形的上底長a、下底長b、高h(yuǎn)的數(shù)值都比較小,這樣(a+b)×
h的數(shù)值不會超過0FFH。根據(jù)上面的分析,先分配上底、下底、高的具體數(shù)據(jù)存儲單元,見下表。數(shù)據(jù)名稱數(shù)據(jù)存放地址數(shù)據(jù)名稱數(shù)據(jù)存放地址上底30H高32H下底31H面積33H1.將編寫完的程序輸入WAVE軟件并編譯。梯形面積.ASM2.修改上底、下底、高的數(shù)據(jù)。單擊此處返回目錄3.運行并調(diào)試。任務(wù)3控制轉(zhuǎn)移類指令和位操作類指令的應(yīng)用1.掌握控制轉(zhuǎn)移類和位操作類指令的功能與使用技巧。2.掌握用冒泡法對無符號數(shù)進(jìn)行排序的編程方法。編寫一段程序,對內(nèi)存為50H~59H十個單元中存放的數(shù)據(jù)進(jìn)行從小到大排序,從而掌握使用控制轉(zhuǎn)移類指令和位操作類指令進(jìn)行編程的方法。一、控制轉(zhuǎn)移類指令控制轉(zhuǎn)移指令共有17條,包括64K范圍的長調(diào)用、長轉(zhuǎn)移指令;2KB范圍的絕對調(diào)用和絕對轉(zhuǎn)移指令;全空間的長相對轉(zhuǎn)移和一頁范圍內(nèi)的短相對轉(zhuǎn)移指令以及多種條件轉(zhuǎn)移指令。但不包括按布爾變量控制程序轉(zhuǎn)移指令。控制轉(zhuǎn)移類指令用到的助記符共有10種:AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNZ。1.無條件轉(zhuǎn)移指令A(yù)JMPaddr11;PC=PC+2,
PC10~0
addr11[例]
程序存儲器的2070H地址單元有絕對轉(zhuǎn)移指令:2070HAJMP16AH(000101101010B)則程序計數(shù)器PC當(dāng)前=PC+2=2070H+02H=2072H(0010000001110010),取其高5位00100和指令機器代碼給出的11位地址00101101010最后形成的目的地址為:0010000101101010B=216AH。(1)絕對轉(zhuǎn)移指令(2)相對轉(zhuǎn)移指令SJMPrel;PC=PC+2,PC
PC+rel源地址是SJMP指令操作碼所在的地址。相對偏移量rel是一個用補碼表示的8位帶符號數(shù),轉(zhuǎn)移范圍為當(dāng)前PC值的-128~+127,共256個單元。MCS-51沒有專用的停機指令,若要求動態(tài)停機可用SJMP指令來實現(xiàn):HERE:SJMPHERE;動態(tài)停機(80H,F(xiàn)EH)或SJMP$;“$”表示本指令首字節(jié)所在單元;
的地址,使用它可省略標(biāo)號。(3)長跳轉(zhuǎn)指令LJMPaddr16;PC
addr16轉(zhuǎn)移指令的目標(biāo)地址可在64KB程序存儲器地址空間的任何地方,不影響任何標(biāo)志。(4)間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)JMP@A+DPTR;PC
A+DPTR間接轉(zhuǎn)移指令采用變址方式實現(xiàn)無條件轉(zhuǎn)移,其特點是轉(zhuǎn)移地址可以在程序運行中加以改變。2.條件轉(zhuǎn)移指令JZrel;若(A)=0,則轉(zhuǎn)移PC←(PC)+2+relJNZrel;若(A)≠0,則轉(zhuǎn)移PC←(PC)+2+rel這類指令是依據(jù)累加器A的內(nèi)容是否為0的條件轉(zhuǎn)移指令。條件滿足時轉(zhuǎn)移(相當(dāng)于一條相對轉(zhuǎn)移指令),條件不滿足時則順序執(zhí)行下面一條指令。轉(zhuǎn)移的目標(biāo)地址在以下一條指令的起始地址為中心的256個字節(jié)范圍之內(nèi)(-128~+127)。3.比較轉(zhuǎn)移指令CJNEA,direct,rel;若(A)
(direct),則轉(zhuǎn)移;PC←(PC)+3+relCJNEA,#data,rel;若(A)
data,則轉(zhuǎn)移;PC←(PC)+3+relCJNERn,#data,rel;若(Rn)
data,則轉(zhuǎn)移;PC←(PC)+3+relCJNE@Ri,#data,rel;若((Ri))
data,則轉(zhuǎn)移;PC←(PC)+3+rel這組指令是比較前面兩個操作數(shù)的大小,如果它們的值不相等則轉(zhuǎn)移。如果第一個操作數(shù)(無符號整數(shù))小于第二個操作數(shù),則進(jìn)位標(biāo)志CY置“1”,否則清“0”,但不影響任何操作數(shù)的內(nèi)容。4.減1不為0轉(zhuǎn)移指令DJNZRn,rel;若Rn
(Rn)-1
0,則轉(zhuǎn)移;PC←(PC)+2+relDJNZdirect,rel;若direct
(direct)-1
0,則轉(zhuǎn)移;PC←(PC)+2+rel這兩條指令把源操作數(shù)減1,結(jié)果回送到源操作數(shù)中去,如果結(jié)果不為0則轉(zhuǎn)移。5.調(diào)用及返回指令(1)絕對調(diào)用指令A(yù)CALLaddr11;PC
PC+2;SP
(SP)+1,(SP)
(PC)7~0;SP
(SP)+1,(SP)
(PC)15~8;PC10~0
addr11執(zhí)行該指令時,所調(diào)用的子程序的首地址必須與ACALL指令后面的第一個字母在同一個2KB區(qū)域內(nèi),指令執(zhí)行后不影響任何標(biāo)志。(2)長調(diào)用指令LCALLaddr16;PC
PC+3;SP
(SP)+1,(SP)
(PC)7~0;SP
(SP)+1,(SP)
(PC)15~8;PC10~0
addr16LCALL指令無條件調(diào)用位于16位地址addr16的子程序。LCALL指令可以調(diào)用64KB范圍內(nèi)任何地方的子程序。指令執(zhí)行后不影響任何標(biāo)志。(3)子程序返回指令RET;(PC)15~8
(SP),SP
(SP)-1
;(PC)7~0
(SP),SP
(SP)-1RET指令是把棧頂相鄰兩個單元的內(nèi)容彈出送到PC,SP的內(nèi)容減2,程序返回PC值所指的指令處執(zhí)行。RET指令通常安排在子程序的末尾,使程序能從子程序返回到主程序。(4)中斷返回指令(5)空操作指令RETI;(PC)15~8
(SP),SP
(SP)-1
;(PC)7~0
(SP),SP
(SP)-1NOP;PC
PC+1空操作也是CPU控制指令,它沒有使程序轉(zhuǎn)移的功能。只消耗一個機器周期的時間。常用于程序的等待或時間的延遲。RETI指令通常安排在中斷服務(wù)程序的最后。二、位操作指令位操作指令的操作對象是內(nèi)部RAM的位尋址區(qū),即字節(jié)地址為20H~2FH單元中連續(xù)的128位(位地址為00H~7FH),以及特殊功能寄存器中可以進(jìn)行位尋址的各位。位操作指令包括控制轉(zhuǎn)移、布爾變量的傳送、邏輯運算等指令,所用到的助記符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC共11種。在布爾處理機中,進(jìn)位標(biāo)志CY的作用相當(dāng)于CPU中的累加器A,通過CY完成位的傳送和邏輯運算。指令中位地址的表達(dá)方式有以下幾種(以允許中斷控制寄存器IE中的位0為例):◆直接地址方式:如0A8H?!酎c操作符方式:如IE.0。◆位名稱方式:如EX0?!粲脩舳x名方式:如用偽指令BIT定義,WBZD0BITEX0
。定義后,允許指令中使用WBZD0代替EX0
1.位數(shù)據(jù)傳送指令MOVC,bit;CY
(bit)
MOVbit,C;bit
(CY)位數(shù)據(jù)傳送指令的功能是:把源操作數(shù)指出的布爾變量送到目的操作數(shù)指定的位地址單元,其中一個操作數(shù)必須為進(jìn)位標(biāo)志CY,另一個操作數(shù)可以是任何可直接尋址位。2.位變量修改指令CLRC;CY
0CLRbit;bit
0CPLC;CY
(CY)CPLbit;bit
(bit)SETBC;CY
1SETBbit;bit
1這組指令對操作數(shù)所指出的位進(jìn)行清“0”、取反、置“1”的操作,不影響其他標(biāo)志。3.位變量邏輯與指令A(yù)NLC,bit;CY
(CY)
(bit)ANLC,/bit;CY
(CY)
(/bit)4.位變量邏輯或指令ORLC,bit;CY
(CY)
(bit)ORLC,/bit;CY
(CY)
(/bit)5.位變量條件轉(zhuǎn)移指令JCrel;若(CY)=1,則轉(zhuǎn)移PC←(PC)+2+relJNCrel;若(CY)=0,則轉(zhuǎn)移PC←(PC)+2+relJBbit,rel;若(bit)=1,則轉(zhuǎn)移PC←(PC)+3+relJNBbit,rel;若(bit)=0,則轉(zhuǎn)移PC←(PC)+3+relJBCbit,rel;若(bit)=1,則轉(zhuǎn)移PC←(PC)+3+rel,bit←0前4條指令在執(zhí)行中不改變條件位的布爾值,最后一條指令,在轉(zhuǎn)移時將bit清“0”。實現(xiàn)數(shù)據(jù)從小到大的排序在單片機編程中典型的算法是冒泡法。其基本思路是從數(shù)組的第1個數(shù)開始,相鄰兩單元的數(shù)相比較,即第1個數(shù)和第2個數(shù)相比較。如果第2個單元的數(shù)大,則兩者交換,否則不動;再進(jìn)行第2單元數(shù)和第3單元數(shù)比較。這樣依次比較下去,重復(fù)上述過程N-1次后,才能將N個數(shù)中最大的值沉降到數(shù)據(jù)區(qū)的最后一個單元中;然后又從頭開始第二輪的比較,經(jīng)過N-2次的比較后,才能把第2個最大值沉降到數(shù)據(jù)區(qū)的倒數(shù)第2個單元。循環(huán)N-1輪后,N個數(shù)據(jù)便會由小到大排列在原數(shù)據(jù)區(qū)中。設(shè)R7存放外循環(huán)計數(shù)值,R6存放內(nèi)循環(huán)計數(shù)值,A存放被比較數(shù),R0存放被比較數(shù)地址,R1存放比較數(shù)地址。則程序流程圖如右圖所示。1.程序設(shè)計2.將編寫完的程序輸入WAVE軟件并編譯。冒泡法.ASM3.將內(nèi)存單元50H~59H內(nèi)不按順序任意賦值。4.單步運行并觀察內(nèi)存單元50H~59H中數(shù)值的變化。交換幾組不同的賦值再運行。單擊此處返回目錄5.設(shè)置斷點在“CJNEA,30H,NEXT”處后全速運行。每次在斷點停下時,仔細(xì)分析數(shù)據(jù)變化的規(guī)律,然后單步運行,分析CJNE指令的跳轉(zhuǎn)規(guī)律(注意觀察A,30H和CY位的值及跳轉(zhuǎn)方向)。然后繼續(xù)運行,直至程序結(jié)束。任務(wù)4邏輯運算類指令的應(yīng)用1.理解MCS-51單片機邏輯運算類指令的功能。2.掌握邏輯運算類指令的用法。除算術(shù)運算外,單片機還具有強大的邏輯運算能力。在數(shù)字電路中學(xué)過的“與門”“或門”“非門”等邏輯同樣可以用單片機來實現(xiàn)。本任務(wù)就來利用單片機的邏輯運算指令實現(xiàn)下圖所示的邏輯功能。邏輯運算指令是指用于邏輯運算的指令。主要包括:CLR、CPL、ANL、ORL、XRL等常用邏輯指令以及RL、RLC、RR、RRC等循環(huán)移位指令。一、對累加器A的邏輯運算指令1.清零指令CLRA;A←0清零指令的效果同MOVA,#00H是一樣的,只不過它是單周期指令,而MOVA,#00H是雙周期指令。2.取反指令CPLA;A←取反指令是將累加器A逐位取反。相當(dāng)于數(shù)字電路的“非”邏輯。[例]A=12H,執(zhí)行指令CPLA;解:把12H化為二進(jìn)制是00010010,邏輯取反后為11101101,即執(zhí)行指令后結(jié)果為A=EDH。3.循環(huán)移位指令RLA;A←(A)循環(huán)左移RRA;A←(A)循環(huán)右移RLCA;A←(A)+C循環(huán)左移RRCA;A←(A)+C循環(huán)右移RL、RR指令執(zhí)行后不影響PSW中各位。RLC、RRC指令執(zhí)行后影響PSW中的進(jìn)位位CY和奇偶標(biāo)志位P。循環(huán)移位指令的執(zhí)行示意圖:[例]將30H單元中存放的數(shù)據(jù)除2。解:CPLCMOVA,30H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國控集團(tuán)招聘面試題及答案
- 煉金工成果轉(zhuǎn)化競賽考核試卷含答案
- 招聘崗位勝任力模型建設(shè)模板
- 耳機與人耳配置測試工安全生產(chǎn)規(guī)范知識考核試卷含答案
- 大地環(huán)境投資公司招聘面試題及答案
- 退煮漂操作工沖突解決知識考核試卷含答案
- 北方國際集團(tuán)招聘面試題及答案
- 盔帽工崗前技能實操考核試卷含答案
- 軌道作業(yè)車司機操作管理評優(yōu)考核試卷含答案
- 景區(qū)運營管理師安全知識宣貫評優(yōu)考核試卷含答案
- 2024年法律職業(yè)資格《客觀題卷一》試題及答案
- 鋼鐵廠勞務(wù)合同范本
- 2025年沈陽華晨專用車有限公司公開招聘筆試考試備考題庫及答案解析
- 職業(yè)技能競賽和技術(shù)比武活動方案
- 2025年山東省濟(jì)南市檢察院書記員考試題(附答案)
- 《面對挫折我不怕》課件
- 2025年麻精藥品培訓(xùn)試題附答案
- 租打碟機合同范本
- 果蔬汁濃縮工安全生產(chǎn)意識水平考核試卷含答案
- 2025-2026學(xué)年上學(xué)期北京小學(xué)數(shù)學(xué)三年級期末典型卷2
- 2025課堂懲罰 主題班會:馬達(dá)加斯加企鵝課堂懲罰 課件
評論
0/150
提交評論