單片機原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第1頁
單片機原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第2頁
單片機原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第3頁
單片機原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第4頁
單片機原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第5頁
已閱讀5頁,還剩120頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1 單片機原理及應(yīng)用單片機原理及應(yīng)用第三章 80C51指令系統(tǒng)本章重點本章重點尋址方式尋址方式指令格式指令格式操作結(jié)果及對標(biāo)志位影響操作結(jié)果及對標(biāo)志位影響3.1 概述分類分類數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 2929數(shù)學(xué)運算類指令數(shù)學(xué)運算類指令 2424邏輯運算類指令邏輯運算類指令 2424控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 1717位操作指令位操作指令 1717111111條指令條指令按指令長度分類按指令長度分類單字節(jié)指令單字節(jié)指令雙字節(jié)指令雙字節(jié)指令三字節(jié)指令三字節(jié)指令指令執(zhí)行時間指令執(zhí)行時間1212個振蕩周期個振蕩周期 64642424個振蕩周期個振蕩周期 45454848個振蕩周期個振蕩周期 2

2、 2指令格式指令格式標(biāo)號:操作碼標(biāo)號:操作碼 (目的操作數(shù)),(源操作數(shù))(目的操作數(shù)),(源操作數(shù)) ;注釋;注釋指令的符號地址指令的符號地址由字母打頭的字母數(shù)字串組成,長度一由字母打頭的字母數(shù)字串組成,長度一般不超過般不超過6 6個符號個符號指令操作的性質(zhì)指令操作的性質(zhì)用規(guī)定的匯編語言助記符表示指令操作的對象3.2 尋址方式和尋址空間概念:概念:說明操作數(shù)所在的位置(地址),把操作數(shù)提取說明操作數(shù)所在的位置(地址),把操作數(shù)提取出來的方法出來的方法基本尋址方式:1 1、寄存器尋址、寄存器尋址2 2、直接尋址、直接尋址3 3、寄存器間接尋址、寄存器間接尋址4 4、立即尋址、立即尋址5 5、相

3、對尋址、相對尋址 6 6、變址尋址、變址尋址7 7、位尋址、位尋址一、寄存器尋址操作數(shù)操作數(shù) 通用寄存器的內(nèi)容通用寄存器的內(nèi)容表示符號表示符號 寄存器名稱寄存器名稱尋址范圍尋址范圍工作寄存器工作寄存器Rn(R0R7)寄存器寄存器ACC(累加器累加器A)寄存器寄存器B,DPTR,位寄存器,位寄存器Cy880C52片內(nèi)數(shù)據(jù)片內(nèi)數(shù)據(jù)RAM 位尋址區(qū)R7R0 3組R7R0 2組R7R0 1組R7R0 0組20H18H10H08H00H寄寄存存器器30H7FH80HFFH特殊特殊功能功能寄存寄存器器( (SFR) )RAM64KBFFFFH0000H片內(nèi)數(shù)據(jù)存儲器片外數(shù)據(jù)存儲器ACCDPTRB二、直接尋

4、址操作數(shù)操作數(shù) 指令中直接地址的內(nèi)容指令中直接地址的內(nèi)容尋址范圍:1、內(nèi)部數(shù)據(jù)、內(nèi)部數(shù)據(jù)RAM的低的低128個字節(jié)單元個字節(jié)單元2、特殊功能寄存器、特殊功能寄存器3、位地址空間、位地址空間通用符號:通用符號:direct1080C52片內(nèi)數(shù)據(jù)片內(nèi)數(shù)據(jù)RAM 位尋址區(qū)位尋址區(qū)R7R0 3組R7R0 2組R7R0 1組R7R0 0組20H18H10H08H00H寄寄存存器器30H7FH80HFFH特殊特殊功能功能寄存寄存器器( (SFR) )RAM64KBFFFFH0000H片內(nèi)數(shù)據(jù)存片內(nèi)數(shù)據(jù)存儲儲器器片外數(shù)據(jù)存片外數(shù)據(jù)存儲儲器器三、寄存器間接尋址方式指令指定的寄存器內(nèi)容為操作數(shù)地址指令指定的寄存

5、器內(nèi)容為操作數(shù)地址間址寄存器間址寄存器 R0, ,R1, ,DPTR, ,SP尋址范圍尋址范圍1、內(nèi)部、內(nèi)部RAM的低的低128字字節(jié)節(jié)( (00H7FH) ) R0, R1 (Ri ,i=0,1)2、外部、外部RAM的的64KB( (0000HFFFFH) ) DPTR, R0, R1符號符號 寄存器名寄存器名3、堆棧區(qū)、堆棧區(qū) SPSP為間址寄存器為間址寄存器1280C52片內(nèi)數(shù)據(jù)片內(nèi)數(shù)據(jù)RAM 位尋址區(qū)R7R0 3組R7R0 2組R7R0 1組R7R0 0組20H18H10H08H00H寄寄存存器器30H7FH80HFFH特殊特殊功能功能寄存寄存器器( (SFR) )RAM64KBFFF

6、FH0000H片內(nèi)數(shù)據(jù)存片內(nèi)數(shù)據(jù)存儲儲器器片外數(shù)據(jù)存片外數(shù)據(jù)存儲儲器器四、立即尋址方式指令直接給出操作數(shù),操作數(shù)為指令直接給出操作數(shù),操作數(shù)為8 8位或位或1616位位二進制數(shù),稱立即數(shù)二進制數(shù),稱立即數(shù)尋址范圍程序存儲器中的立即數(shù)程序存儲器中的立即數(shù)通用符號通用符號: :#data (8位),位),#data16( (16位)位)五、相對尋址方式以以PC當(dāng)前值為基址,加上指令中給出的偏當(dāng)前值為基址,加上指令中給出的偏移量(移量(rel)形成有效的程序轉(zhuǎn)移地址。)形成有效的程序轉(zhuǎn)移地址。控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令轉(zhuǎn)移范圍: :以以PC當(dāng)前值為起始地址,相對當(dāng)前值為起始地址,相對偏移在偏移在+

7、127 -128個字節(jié)單元之間。個字節(jié)單元之間。偏移量偏移量rel 八位二進制補碼八位二進制補碼1005H: :JC 80H執(zhí)行過程:執(zhí)行過程:讀指令,完成后讀指令,完成后 (PC)=(PC)+2如如 C=1,則,則 (PC)=(PC)+rel 轉(zhuǎn)移至轉(zhuǎn)移至 1007H-80H=0F87H 單元單元如如C=0 則執(zhí)行則執(zhí)行1007H單元中的指令單元中的指令后向后向128個個單單元元前向前向127個個單單元元1005H 40H1006H 80H1007H 0F87H1086H六、變址間接尋址基址寄存器內(nèi)容加上間址寄存器內(nèi)容(地址偏基址寄存器內(nèi)容加上間址寄存器內(nèi)容(地址偏移量)為有效地址移量)為有

8、效地址基址寄存器: :PC, ,DPTR變址寄存器:A尋址范圍:程序存儲器尋址范圍:程序存儲器例:例: MOVC A, ,A+DPTR 設(shè)設(shè) A=11H DPTR=02F1H操作數(shù)地址為為 02F1H+11H=0302H操作:操作:( (0302H) )A七、位尋址MCS-51設(shè)有獨立的位處理器,位地址一般用直接位地設(shè)有獨立的位處理器,位地址一般用直接位地址方式給出,可歸入直接尋址方式址方式給出,可歸入直接尋址方式尋址范圍: 位尋址內(nèi)部位尋址內(nèi)部RAM 128位位 可位尋址的可位尋址的SFR 82位位位地址的表示方式:1 1、直接地址(位地址)、直接地址(位地址)2 2、位名稱、位名稱3 3、

9、第幾單元第幾位,寄存器名、第幾單元第幾位,寄存器名+ +位位4 4、用偽指令指定的符號地址、用偽指令指定的符號地址通用符號 bit例:例: PSW中中F0(用戶標(biāo)志)可表示如下:(用戶標(biāo)志)可表示如下:D5HF0PSW.5AF( (AF EQU F0) )193.3 指令系統(tǒng)3.3.1 數(shù)據(jù)傳送類指令按操作方式,分為三種:按操作方式,分為三種: 數(shù)據(jù)傳送數(shù)據(jù)傳送數(shù)據(jù)交換數(shù)據(jù)交換棧操作棧操作一、普通傳送類指令格式:MOV (目的操作數(shù)),(源操作數(shù))操作碼助記符操作碼助記符操作:將源操作數(shù)單元內(nèi)容,傳送到目的操作數(shù)單元中,源操作數(shù)內(nèi)容不變。不影響標(biāo)志位Cy,AC和OV。操作數(shù)的組合關(guān)系1、立即數(shù)

10、的傳送MOV A, #data(A)#dataMOV Rn, #data (Rn)#dataMOV Ri, #data(Ri)#dataMOV direct, #data(direct)#dataMOV DPTR, #data16(DPTR)#data說明:a、MOV A,#data將將8位立即數(shù)送入累加器位立即數(shù)送入累加器A中中例:例:MOV A,#80H 操作結(jié)果:操作結(jié)果: (A)= 80Hb、 、MOV Rn, ,#data n=07將將8位立即數(shù)送入工作寄存器位立即數(shù)送入工作寄存器Rn中中例:例:MOV R4, ,#80H操作結(jié)果:操作結(jié)果: (R4)= 80Hc、 、MOV Ri,

11、 #data將8位立即數(shù)送入由Ri指定的地址單元中,i=0,1。Ri中的地址中的地址為為00H7FH( (8051) )00HFFH( (8052) )注:僅尋址內(nèi)部注:僅尋址內(nèi)部RAM,不能尋址,不能尋址SFR例:例:MOV R0,#32H 設(shè)設(shè) (R0)=70H , (70H)=11H執(zhí)行結(jié)果:(70H)=32Hd: :MOV direct, ,#data將將8位立即數(shù)送入由位立即數(shù)送入由direct直接尋址的地直接尋址的地址單元中。址單元中。direct:00HFFH,8位二進制地址碼 尋址內(nèi)部RAM(00H7FH)及SFR例:例:MOV 70H, ,#70H MOV P0, ,#70H

12、 MOV 80H, ,#70He: :MOV DPTR, ,#data唯一的16位數(shù)據(jù)傳送指令,把16位立即數(shù)送入DPTR中例:例:MOV DPTR, ,#2034H執(zhí)行結(jié)果:( (DPH) )=20H ( (DPL) )=34H2、內(nèi)部數(shù)據(jù)存儲器與累加器A傳送數(shù)據(jù)MOV A, direct(A)(direct)MOV direct, A(A)(direct)MOV A, Rn(A)(Rn)MOV Rn, A(A)(Rn)MOV A, Ri(A)(Ri)MOV Ri, A(Ri)(A)尋址方式的組合例:例:MOV R1, ,#82H MOV A, ,R180C51指令錯誤指令錯誤因為因為82H

13、是是DPL的地址值,對于的地址值,對于SFR,不,不能使用間接尋址方式能使用間接尋址方式正確指令:正確指令:MOV A, ,DPL 或或 MOV A, ,82H80C52 正確,尋址內(nèi)部正確,尋址內(nèi)部RAM3、內(nèi)部數(shù)據(jù)存、內(nèi)部數(shù)據(jù)存儲儲器中器中Rn、 、SFR和片內(nèi)數(shù)據(jù)和片內(nèi)數(shù)據(jù)RAM之之間間的數(shù)據(jù)的數(shù)據(jù)傳傳送送MOV direct,direct(direct目的目的)( (direct源)源)MOV direct, Rn(direct)(Rn)MOV Rn, direct(direct)(Rn)MOV direct, Ri(direct)(Ri)MOV Ri, direct(Ri)(dire

14、ct)例例1:設(shè):設(shè)PSW中標(biāo)志位中標(biāo)志位RS1,RS0為為“11”,則選中第三組工作寄存器則選中第三組工作寄存器MOV 40H, ,R0MOV 40H, ,18H結(jié)果相同用立即尋址指令為片內(nèi)用立即尋址指令為片內(nèi)RAM中中20H,25H和和P1口上置數(shù)口上置數(shù)例例2: :MOV 20H, #25HMOV 25H, #10HMOV P1, #0CAH執(zhí)行結(jié)果 ( (20H) )=25H,(,(25H) )=10H ( (P1) )=CAH將以上狀態(tài)作為初值,執(zhí)行以下程序,將以上狀態(tài)作為初值,執(zhí)行以下程序,結(jié)果如何結(jié)果如何MOV R0, #20HMOV A, R0MOV R1, AMOV B, R

15、1MOV R1, P1MOV P3, P1(R0)=20H(A)=(R0)=(20H)=25H(R1)=(A)=25H(B)=(R1)=(25H)=10H(R1)=P1 (25H)=CAHP3=P1=CAH(A)=?(R1)=?(B)=?(25H)=?(P3)=?(P1)=?(20H)=?25H25H10HCAHCAHCAH25H二、外部數(shù)據(jù)存儲器的數(shù)據(jù)傳送指令二、外部數(shù)據(jù)存儲器的數(shù)據(jù)傳送指令只能只能間接尋址間接尋址,且只能與,且只能與累加器累加器A進行數(shù)據(jù)傳送進行數(shù)據(jù)傳送格式:MOVX (目的操作數(shù)),(源操作數(shù))MOVX A, DPTR(A)(DPTR)MOVX DPTR, A(DPTR)

16、(A)MOVX A, Ri(A)(Ri)MOVX Ri, A(Ri)(A)例:例: 若片外數(shù)據(jù)存儲單元中,(若片外數(shù)據(jù)存儲單元中,(3007H)=60HMOV DPTR, #3007HMOVX A, DPTR結(jié)果:結(jié)果:(A)=60H使用使用Ri作間址寄存器,此時需用作間址寄存器,此時需用P2口輸出高口輸出高八位地址,應(yīng)事先預(yù)置八位地址,應(yīng)事先預(yù)置P2,Ri的值的值以下程序功能與上例相同:以下程序功能與上例相同:MOV P2 , #30HMOV R0 , #07HMOVX A, R0三、程序存儲器向累加器三、程序存儲器向累加器A A傳送指令傳送指令MOVCMOVCMOVC A , A+PC(P

17、C)(PC)+1(A)(A)+(PC)MOVC A, A+DPTR(A)(A)+(DPTR) ))功能:把A中內(nèi)容與基址寄存器(PC,DPTR)內(nèi)容相加,求得程序存儲器某單元地址,再將該地址單元內(nèi)容送累加器A8位無符號位無符號整數(shù)整數(shù)說明:說明:1、以、以PC作為基址寄存器,因為作為基址寄存器,因為PC值不能任意更值不能任意更改,所以查表范圍為改,所以查表范圍為PC當(dāng)前值開始后的當(dāng)前值開始后的256字節(jié)。字節(jié)。偏移量計算式:偏移量計算式:DIS=表首地址(該指令所在地址表首地址(該指令所在地址+1)2、以、以DPTR作為基址寄存器,因為作為基址寄存器,因為DPTR的內(nèi)的內(nèi)容可以通過賦值改變,使

18、表格可以設(shè)置在容可以通過賦值改變,使表格可以設(shè)置在64KB程序存儲器的任意地址空間。程序存儲器的任意地址空間。例例1:編制根據(jù)累加器:編制根據(jù)累加器A中的數(shù)(中的數(shù)(09)查其平方表的)查其平方表的子程序。子程序。COUNT:PUSH DPH; 保護保護DPTR內(nèi)容內(nèi)容 PUSH DPL; MOV DPTR,#TABLE ;賦表首地址給;賦表首地址給DPTR MOVC A, A+DPTR ; 根據(jù)根據(jù)A中內(nèi)容查表中內(nèi)容查表 POP DPL; 恢復(fù)恢復(fù)DPTR內(nèi)容內(nèi)容 POP DPH RET; 返回主程序返回主程序 ORG 1000HTABLE: :DB 00 DB 01 DB 04 DB 09

19、 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81DB:偽指令,作用是:偽指令,作用是把其后的值存入由標(biāo)把其后的值存入由標(biāo)號開始的連續(xù)單元中號開始的連續(xù)單元中例例2:編子程序根據(jù):編子程序根據(jù)A中二進制數(shù)查其中二進制數(shù)查其ASCII碼碼BITOASC: : ADD A, ,#02HMOVC A, A+PCSJMP BARETDB 30H, 31H, 32H, 33HDB 34H, 35H, 36H, 37HDB 38H, 39H, 41H, 42HDB 43H, 44H, 45H, 46HRETTABLE:BARET:;加偏移量調(diào)整;加偏移量調(diào)整;查表;查表;返回主程序;

20、返回主程序四、數(shù)據(jù)交換指令1、字節(jié)交換指令XCH A, RnXCH A, directXCH A, Ri (A) (Rn) (A) (direct) (A) (Ri) 例:例:設(shè)設(shè)( (R0) )=20H,(,(A) )=3FH,(,(20H) )=75H執(zhí)行指令:執(zhí)行指令:XCH A, ,R0執(zhí)行結(jié)果執(zhí)行結(jié)果:( (A) )=75H,(,(20H) )=3FH2、半字節(jié)交換指令XCHD A, Ri (A30) (Ri)30)常用于常用于BCD碼處理碼處理例:例:設(shè)設(shè)( (R1) )=30H,(,(A) )=67H,(,(30H) )=84H執(zhí)行指令:執(zhí)行指令:XCHD A, R1執(zhí)行結(jié)果執(zhí)行

21、結(jié)果:( (A) )=64H ( (30H) )=87H3、累加器A高4位與低4位內(nèi)容互換指令SWAP A ;(;( A 47) ) ( (A 03) )例:例:設(shè)設(shè)( (A) )=0CAH執(zhí)行指令:執(zhí)行指令:SWAP A執(zhí)行結(jié)果執(zhí)行結(jié)果:( (A) )=0ACH5、堆棧操作類指令PUSH direct( (SP) ) ( (SP) )+1 (SP) (direct)POP direct(direct) (SP) (SP) (SP)-1要點:入棧操作,先執(zhí)行要點:入棧操作,先執(zhí)行SP+1,再入棧,再入棧 出棧操作,先出棧,再執(zhí)行出棧操作,先出棧,再執(zhí)行SP-1例:在中斷響應(yīng)時,(例:在中斷響應(yīng)

22、時,(SP)=09H,數(shù)據(jù)指針,數(shù)據(jù)指針DPTR的內(nèi)容為的內(nèi)容為0123H執(zhí)行以下指令:執(zhí)行以下指令:PUSH DPLPUSH DPH(SP)+1,使(,使(SP)=0AH(DPL)壓入)壓入0AH單元單元(SP)+1,(,(SP)=0BH(DPH)壓入)壓入0BH單元單元執(zhí)行結(jié)果:執(zhí)行結(jié)果: ( (0AH) )=23H( (0BH) )=01H( (SP) )=0BH堆棧操作需遵循先入后出,后入先出原則,堆棧操作需遵循先入后出,后入先出原則,才能保持原單元內(nèi)容不變才能保持原單元內(nèi)容不變例:例:設(shè)設(shè)( (DPTR) )=0123HPUSH DPHPUSH DPL.POP DPLPOP DPH執(zhí)

23、行結(jié)果執(zhí)行結(jié)果:(DPTR)=0123H如執(zhí)行:PUSH DPHPUSH DPLPOP DPHPOP DPL執(zhí)行結(jié)果:執(zhí)行結(jié)果:( (DPTR) )=2301H3.3.2 算術(shù)運算類指令類型:加,減,乘,除,增量、減量以及二類型:加,減,乘,除,增量、減量以及二十進制調(diào)整指令十進制調(diào)整指令A(yù)DD、ADDC、SUBB指令的執(zhí)行將影響標(biāo)指令的執(zhí)行將影響標(biāo)志位(志位(PSW中的中的OV,Cy,AC及及P)要求掌握要求掌握指令的操作結(jié)果指令的操作結(jié)果對標(biāo)志位的影響對標(biāo)志位的影響一、加法指令一、加法指令A(yù)DD 目的操作數(shù)目的操作數(shù) 累加器累加器A 源操作數(shù)源操作數(shù) 4種尋址方式種尋址方式ADD A,Rn

24、 (A) (A)+(Rn) ADD A,direct (A) (A)+(direct)ADD A,Ri (A) (A)+(Ri)ADD A,#data (A) (A)+#data運算均針對無符號二進制數(shù)進行,但結(jié)合運算均針對無符號二進制數(shù)進行,但結(jié)合OV標(biāo)志標(biāo)志可實現(xiàn)有符號數(shù)運算??蓪崿F(xiàn)有符號數(shù)運算。結(jié)果將影響結(jié)果將影響OV,Cy,AC,P標(biāo)志標(biāo)志A源源+A當(dāng)最高位有進位,當(dāng)最高位有進位,Cy=1位位3向位向位4有進位,有進位,AC=1OV取決于取決于6、7兩位的進位情況,同時兩位的進位情況,同時有進位或無進位,則有進位或無進位,則OV=0;只有一位;只有一位有進位,有進位,OV=1A中有偶數(shù)

25、個中有偶數(shù)個1,P=0;否則,;否則,P=1例:設(shè)(例:設(shè)(A)=0C3H,(,(R0)=0AAH 執(zhí)行指令:執(zhí)行指令:ADD A,R0 寫出執(zhí)行結(jié)果及對標(biāo)志位影響寫出執(zhí)行結(jié)果及對標(biāo)志位影響 (A) 1 1 0 0 0 0 1 1 + (R0) 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1C=1AC=0OV=1P=1(A)=6DH只對有符號數(shù)運算有只對有符號數(shù)運算有意義。兩負數(shù)相加,意義。兩負數(shù)相加,結(jié)果為正數(shù),溢出結(jié)果為正數(shù),溢出例:設(shè)(例:設(shè)(A)=0C3H,(,(R0)=0AAH 執(zhí)行指令:執(zhí)行指令:ADD A,R0 寫出執(zhí)行結(jié)果及對標(biāo)志位影響寫出執(zhí)行結(jié)果及對標(biāo)志位影響

26、 (A) 1 1 0 0 0 0 1 1 + (R0) 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1C=1AC=0OV=1P=1(A)=6DH無符號數(shù)無符號數(shù) 195 + 170 = 365有符號數(shù)有符號數(shù) -61 + (-86) = -147 109溢出 二、帶進位加法指令A(yù)DDCADDC A, Rn ; (A) (A)+(C)+(Rn)ADDC A,direct ; (A) (A)+(C)+(direct)ADDC A,Ri ; (A) (A)+(C)+(Ri)ADDC A, #data ; (A) (A)+(C)+(#data)常用于多字節(jié)加法常用于多字節(jié)加法例:設(shè)(例

27、:設(shè)(A)=0C3H,(,(R0)=0AAH,C=1 執(zhí)行指令:執(zhí)行指令:ADDC A,R0 (A) 1 1 0 0 0 0 1 1+ (C) 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0+(R0) 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0C=1AC=0OV=1P=1(A)=6EH三、帶借位減法指令SUBBSUBB A,Rn ; (A) (A)-(C)-(Rn)SUBB A,direct ; (A) (A)-(C)-(direct)SUBB A,Ri ; (A) (A)-(C)-(Ri)SUBB A,#data ; (A) (A)-(C)-#data影響

28、標(biāo)志位:最高位有借位,最高位有借位,Cy=1位位3向位向位4有借位,有借位,AC=1最高兩位同時有借位或無借位,最高兩位同時有借位或無借位,OV=0;只有一位有借位,;只有一位有借位,OV=1例:設(shè)(例:設(shè)(A)=0C9H,(,(30H)=54H,C=1 執(zhí)行:執(zhí)行:SUBB A,30H (A) 1 1 0 0 1 0 0 1- (C) 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0- (30H) 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 0C=0AC=0OV=1P=0(A)=74H只有在符號數(shù)相減時,只有在符號數(shù)相減時,OV才意味著溢出與否,如出才意味著溢出

29、與否,如出現(xiàn)以下兩種情況,現(xiàn)以下兩種情況,OV置置1:負負-正正=正正 正正-負負=負負四、增量指令I(lǐng)NCINC A ; (A) (A)+1INC Rn ; (Rn) (Rn)+1INC direct ; (direct) (direct)+1INC Ri ; (Ri) (Ri)+1INC DPTR; (DPTR) (DPTR)+1操作:指定變量加操作:指定變量加1,結(jié)果仍存于原地址單,結(jié)果仍存于原地址單元中。除元中。除P外,不影響任何標(biāo)志位。外,不影響任何標(biāo)志位。例:設(shè)(例:設(shè)(R0)=7EH,(,(7EH)=0FFH (7FH)=40H執(zhí)行下列指令:執(zhí)行下列指令:INC R0 ;INC R

30、0 ;INC R0 ;(R0)=(R0)+1, (7EH)=00H(R0)=(R0)+1, (7FH)=41H(R0)=(R0)+1, (R0)=7FH運行結(jié)果:運行結(jié)果:(R0)=7FH,(,(7EH)=00H(7FH)=41H例:執(zhí)行指令序列例:執(zhí)行指令序列MOV DPTR, ,#1FFEH; ;INC DPTR ; ;INC DPTR ; ;INC DPTR ; ;( (DPTR) )=1FFEH( (DPTR) )=1FFFH( (DPTR) )=2000H( (DPTR) )=2001H五、減量指令DECDEC A ; (A) (A)-1DEC Rn ; (Rn) (Rn)-1DEC

31、 direct ; (direct) (direct)-1DEC Ri ; (Ri) (Ri)-1操作:指定變量減操作:指定變量減1 1,結(jié)果送回原地址單元,結(jié)果送回原地址單元,不影響標(biāo)志位(除不影響標(biāo)志位(除P P)。)。設(shè)(設(shè)(40H)=00H 執(zhí)行執(zhí)行 DEC 40H結(jié)果結(jié)果:(40H)=FFH不影響標(biāo)志位不影響標(biāo)志位六、乘法指令MUL AB ; ;( (A) )07( (B) )815( (A) )*( (B) )影響標(biāo)志位:影響標(biāo)志位:如乘積如乘積255 (0FFH) (即(即B0) ,OV=1C總是被清總是被清0,即,即C=0AC不變,影響不變,影響P例:設(shè)(例:設(shè)(A)=80H(

32、128),(),(B)=32H(50)執(zhí)行指令:執(zhí)行指令:MUL AB結(jié)果結(jié)果:乘積為:乘積為1900H(6400)( (A) )=( (B) )=00H19HOV=Cy=P=100七、除法指令DIV AB ;(A)(B)商商余數(shù)余數(shù)(A)/(B)對標(biāo)志位影響:對標(biāo)志位影響:當(dāng)當(dāng)B中除數(shù)為中除數(shù)為00H,除法運算結(jié)果為不定值,除法運算結(jié)果為不定值,則則A、B中內(nèi)容均為不定值,中內(nèi)容均為不定值,OV置置1C=0例:例: (A)=87H(135),(),(B)=0CH(12) DIV AB(A)=(B)=0BH(11)03HOV=C=00八、二十進制調(diào)整指令DA A ; 調(diào)整調(diào)整A中內(nèi)容為中內(nèi)容為

33、BCD碼碼調(diào)整方法:調(diào)整方法:根據(jù)根據(jù)C和和AC的狀態(tài),并結(jié)合的狀態(tài),并結(jié)合A的內(nèi)容的內(nèi)容IF (A03)9 OR (AC)=1, THEN (A03)=(A03)+06H;IF (A47)9 OR (C)=1 ,THEN (A47)=(A47)+60H因為指令要利用因為指令要利用C和和AC,所以必須跟在,所以必須跟在加法指令(加法指令(ADD,ADDC)后面)后面根據(jù)根據(jù)A中的數(shù)值及中的數(shù)值及PSW相應(yīng)標(biāo)志位的狀態(tài),可相應(yīng)標(biāo)志位的狀態(tài),可能的操作為能的操作為A加加06H,60H,66H例:例: (A)=0101 0110B(56) (R3)=0110 0111B(67)以上均為)以上均為BC

34、D碼碼 (C)=0執(zhí)行指令執(zhí)行指令: ADDC A,R3 DA A (A) 0 1 0 1 0 1 1 0+(R3) 0 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1A309,AC=0A749,C=0+66H調(diào)整調(diào)整+ 0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 1結(jié)果:結(jié)果: (A)=23H (C)=1對于無符號對于無符號BCD碼運算,碼運算,56+67=123使用此指令條件:使用此指令條件:1、兩個操作數(shù)均為壓縮、兩個操作數(shù)均為壓縮BCD碼碼2、不適合減法和增、不適合減法和增1運算運算例:對于十進制減法運算,可采用補碼相加的方法例:對于十進制減法運算,可采用補

35、碼相加的方法 即用即用9AH減去減數(shù)得到以十為模的補碼減去減數(shù)得到以十為模的補碼設(shè)被減數(shù)存設(shè)被減數(shù)存30H單元,減數(shù)存單元,減數(shù)存40H單元,結(jié)果單元,結(jié)果存存50H單元。程序如下:單元。程序如下:CLR C ;MOV A,#9AH;SUBB A, 40H ;ADD A , 30H;DA A ;MOV 50H, A清進位位清進位位求減數(shù)的十補碼求減數(shù)的十補碼補碼相加補碼相加調(diào)整至調(diào)整至BCD碼碼3.3.3 邏輯運算類指令按操作數(shù)分為兩類:單操作數(shù)指令雙操作數(shù)指令針對累加器A進行A與第二操作數(shù)之間進行操作:清零、求反、移位,與、或、異或一、單操作數(shù)邏輯運算類指令1、累加器、累加器A清零指令清零指

36、令 CLR A; (A) 02、累加器求反指令、累加器求反指令 CPL A; (A) (A)例:設(shè)(例:設(shè)(A)=0AAH(10101010B) 執(zhí)行:執(zhí)行:CPL A結(jié)果:結(jié)果: (A)=01010101B(55H)3、累加器、累加器A循環(huán)左移指令循環(huán)左移指令 RL A;例:例: (A)=0C5H(1100 0101B)RL A(A)=1000 1011B=8BH734、累加器、累加器A連同進位位連同進位位C循環(huán)左移指令循環(huán)左移指令RLC A;例:例: ( (A) )=45H( (0100 0101 B),(),(C) )=1RLC A ; ;( (A) )=1000 1011B=8BH(

37、(C) )=05、累加器、累加器A循環(huán)右移指令循環(huán)右移指令RR A ; ;6、累加器、累加器A連同進位位連同進位位C循環(huán)右移指令循環(huán)右移指令RRC A ; ;例:例: (A)=0C5H(1100 0101B),(),(C)=1執(zhí)行指令執(zhí)行指令: RRC A結(jié)果:結(jié)果: (A)=1110 0010B=0E2H(C)=1二、雙操作數(shù)邏輯運算類指令1、邏輯、邏輯“與與”指令指令 ANL A , Rn ANL A , directANL A , RiANL A , #data 以以A為第一操作數(shù),為第一操作數(shù),邏輯邏輯“與與”運算的結(jié)運算的結(jié)果存入果存入AANL direct, ,AANL direc

38、t, ,#data目的操作數(shù)為目的操作數(shù)為direct,源操作數(shù)為源操作數(shù)為A和立即數(shù)和立即數(shù)與指令常用于屏蔽某些不用位。與指令常用于屏蔽某些不用位。方法:欲屏蔽位該位與方法:欲屏蔽位該位與“0”相相“與與”, 保留位與保留位與“1”相相“與與”例例 ANL A,#1111 0000B; 屏蔽低屏蔽低4位,高位,高4位不變位不變2、邏輯“或”指令ORL A , RnORL A , directORL A , RiORL A , #dataORL direct , AORL direct , #dataORL指令常用于使字節(jié)中某些位置指令常用于使字節(jié)中某些位置1方法:欲置方法:欲置1的位與的位與

39、“1”相或,相或, 欲保留不變的位與欲保留不變的位與“0”相或相或如如 ORL A,#0FH; 高高4位不變,低位不變,低4位置位置13、邏輯“異或”指令XRL A , RnXRL A , directXRL A , RiXRL A , #dataXRL direct , AXRL direct , #dataXRL 指令可用于對某些位取反指令可用于對某些位取反方法:欲取反的位用方法:欲取反的位用“1”去異或,保留位用去異或,保留位用“0”去異或去異或如如 XRL A,#0FH;高;高4位不變,低位不變,低4位取反位取反例:例: 設(shè)設(shè)( (A) )=0C3H( (1100 0011B) ) (

40、 (R0) )=0AAH( (1010 1010B) )分別執(zhí)行以下指令:分別執(zhí)行以下指令:ANL A, ,R0 ; ;ORL A, ,R0 ; ;XRL A, ,R0 ; ;( (A) )=1000 0010B=82H( (A) )=1110 1011B=0EBH( (A) )=0110 1001B=69H3.3.4 控制轉(zhuǎn)移類指令3類:類:無條件轉(zhuǎn)移無條件轉(zhuǎn)移條件轉(zhuǎn)移條件轉(zhuǎn)移子程序調(diào)用及返回子程序調(diào)用及返回一、無條件轉(zhuǎn)移指令1、絕對無條件轉(zhuǎn)移、絕對無條件轉(zhuǎn)移AJMP addr11;(PC) (PC)+2(PC 010) addr 010(PC 1115)不變)不變addr11:11位地址,

41、是轉(zhuǎn)移目的地址的低位地址,是轉(zhuǎn)移目的地址的低11位。位。 在匯編語言程序中,可寫成在匯編語言程序中,可寫成4位位16進制地址,進制地址,也可寫成代表也可寫成代表16位地址的標(biāo)號(符號地址)形式。位地址的標(biāo)號(符號地址)形式。注:不常用,注:不常用,MCS48兼容指令兼容指令轉(zhuǎn)移范圍:轉(zhuǎn)移范圍:2K字節(jié)字節(jié)例例1: 0345H:AJMP addr11 addr11取值可為取值可為000 0000 0000B111 1111 1111B執(zhí)行時執(zhí)行時 (PC)=(PC)+2=0347H15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 00347H: 0 0 0 0 0 0 1

42、1 0 1 0 0 0 1 1 1 B轉(zhuǎn)移目標(biāo)地址范轉(zhuǎn)移目標(biāo)地址范圍:圍:PC 1115不變不變0 0 0 0 0 0 0 0 0 0 0 B 1 1 1 1 1 1 1 1 1 1 1 B有效轉(zhuǎn)移地址范圍:有效轉(zhuǎn)移地址范圍: 0000H07FFH例例2: 07FFH: AJMP adr11(PC)+2=07FFH+2=0801H0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1B0 0 0 0 0 0 0 0 0 0 1B1 1 1 1 1 1 1 1 1 1 1B0801H0801H0FFFH轉(zhuǎn)移轉(zhuǎn)移范圍范圍轉(zhuǎn)移范圍:包括當(dāng)前指令的下一條指令在內(nèi)的轉(zhuǎn)移范圍:包括當(dāng)前指令的下一條

43、指令在內(nèi)的同一同一2K字節(jié)內(nèi)字節(jié)內(nèi) addr11:在:在0801H0FFFH范圍內(nèi)范圍內(nèi)例例3: 0345H:AJMP 0123H 2567H:AJMP 29ABH是否正確是否正確正確正確錯誤錯誤2567H:0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 B1 1 1 1 1 1 1 1 1 1 1 B27FFH轉(zhuǎn)移地址最大為轉(zhuǎn)移地址最大為27FFH,29ABH大于大于27FFH,超出有效轉(zhuǎn)移地址范圍超出有效轉(zhuǎn)移地址范圍2、長轉(zhuǎn)移指令、長轉(zhuǎn)移指令LIMP addr16 ; (PC) addr16轉(zhuǎn)移范圍:轉(zhuǎn)移范圍: 64KB 3、相對轉(zhuǎn)移指令、相對轉(zhuǎn)移指令SJMP rel ;(

44、PC) (PC)+2(PC) (PC)+relrel:8位二進制補碼,可寫成符號地址的形式位二進制補碼,可寫成符號地址的形式轉(zhuǎn)移范圍:轉(zhuǎn)移范圍:PC當(dāng)前值為基準(zhǔn),當(dāng)前值為基準(zhǔn),-128+127例:例: 0345H:SJMP relPC 當(dāng)前值:當(dāng)前值:0347H向后向后128字節(jié)字節(jié) 02C7H向前向前127字節(jié)字節(jié) 03C6Hrel=80Hrel=7FH當(dāng)當(dāng)rel取值為取值為FEH(-2),則目的地址與源地址相),則目的地址與源地址相同同如如 設(shè)設(shè)rel=FEH,執(zhí)行指令,執(zhí)行指令 HERE:SJMP HERE程序在此指令處無限循環(huán)程序在此指令處無限循環(huán)4、間接轉(zhuǎn)移指令、間接轉(zhuǎn)移指令JMP

45、A+DPTR ; (PC) (A)+(DPTR)多分支轉(zhuǎn)移指令,多分支轉(zhuǎn)移指令,DPTR內(nèi)容為多分支轉(zhuǎn)移程內(nèi)容為多分支轉(zhuǎn)移程序的首地址,由累加器序的首地址,由累加器A的內(nèi)容來選擇其中的的內(nèi)容來選擇其中的某一個分支轉(zhuǎn)移指令某一個分支轉(zhuǎn)移指令例:例:MOV DPTR , #JMP_TBLJMP A+DPTR.AJMP LABEL0AJMP LABEL1AJMP LABEL2AJMP LABEL3JMP_TBL:A中內(nèi)容為偶數(shù)中內(nèi)容為偶數(shù)分支轉(zhuǎn)移表分支轉(zhuǎn)移表不超過不超過256B二、條件轉(zhuǎn)移指令二、條件轉(zhuǎn)移指令均為相對尋址方式,指令提供偏移量均為相對尋址方式,指令提供偏移量rel,轉(zhuǎn),轉(zhuǎn)移范圍為移范圍

46、為PC當(dāng)前值的當(dāng)前值的-128+1271、判零轉(zhuǎn)移指令、判零轉(zhuǎn)移指令JZ rel ;(PC) (PC)+2如(如(A)=0,則(,則(PC)=(PC)+rel否則,程序順序執(zhí)行否則,程序順序執(zhí)行JNZ rel ; (PC) (PC)+2如(如(A)=0,則(,則(PC)=(PC)+rel否則,程序順序執(zhí)行否則,程序順序執(zhí)行例:將外部數(shù)據(jù)存儲器的一個數(shù)據(jù)塊傳送到內(nèi)部數(shù)例:將外部數(shù)據(jù)存儲器的一個數(shù)據(jù)塊傳送到內(nèi)部數(shù)據(jù)據(jù)RAM,兩者的首地址分別為,兩者的首地址分別為DATA1和和DATA2,遇到傳送的數(shù)據(jù)為遇到傳送的數(shù)據(jù)為0時停止傳送。時停止傳送。分析:數(shù)據(jù)塊傳送,長度較短,均采用間接分析:數(shù)據(jù)塊傳送

47、,長度較短,均采用間接尋址方式,其中尋址方式,其中R0尋址外部數(shù)據(jù)存儲器,尋址外部數(shù)據(jù)存儲器,R1尋址內(nèi)部尋址內(nèi)部RAM。傳送時,要以累加器傳送時,要以累加器A作為過渡,利用判零轉(zhuǎn)作為過渡,利用判零轉(zhuǎn)移可以判別是否繼續(xù)傳送還是終止移可以判別是否繼續(xù)傳送還是終止程序如下:程序如下:MOV R0,#DATA1 ;MOV R1,#DATA2 ;MOVX A,R0 ;JZ STOP ;MOV R1,A ;INC R0 ;INC R1 ;SJMP LOOP ;LOOP:HERE:外部數(shù)據(jù)塊首址外部數(shù)據(jù)塊首址內(nèi)部數(shù)據(jù)塊首址內(nèi)部數(shù)據(jù)塊首址外部數(shù)據(jù)傳入外部數(shù)據(jù)傳入A為零則終止為零則終止不為零則傳送至內(nèi)部不為零

48、則傳送至內(nèi)部RAM單元單元修改地址指針修改地址指針繼續(xù)循環(huán)繼續(xù)循環(huán)STOP:2、比較轉(zhuǎn)移指令、比較轉(zhuǎn)移指令格式格式: CJNE (目的操作數(shù)),(源操作數(shù)),(目的操作數(shù)),(源操作數(shù)),rel根據(jù)目的和源操作數(shù)的尋址方式不同,共有根據(jù)目的和源操作數(shù)的尋址方式不同,共有4條條CJNE A , #data , relCJNE A , direct , relCJNE Rn , #data , relCJNE Ri , #data , rel三字節(jié)指令三字節(jié)指令例:設(shè)(例:設(shè)(R7)=56H,執(zhí)行指令,執(zhí)行指令CJNE R7,#60H,K1K1:例例2、設(shè)、設(shè)P1口口P10P13為準(zhǔn)備就緒信號輸入

49、端,為準(zhǔn)備就緒信號輸入端,當(dāng)該當(dāng)該4位輸入全位輸入全“1”說明各項工作準(zhǔn)備好,單片說明各項工作準(zhǔn)備好,單片機可順序執(zhí)行主程序,否則循環(huán)等待。機可順序執(zhí)行主程序,否則循環(huán)等待。程序片段如下:程序片段如下:L0:MOV A , P1 ;ANL A , #0FH ;CJNE A , #0FH , L0 ;MAN1:讀讀P1口內(nèi)容口內(nèi)容高高4位無意義,屏蔽位無意義,屏蔽低低4位不全為位不全為1,返回,返回L0,否則繼續(xù)執(zhí)行,否則繼續(xù)執(zhí)行3、循環(huán)轉(zhuǎn)移指令(減、循環(huán)轉(zhuǎn)移指令(減1條件轉(zhuǎn)移指令)條件轉(zhuǎn)移指令)DJNZ Rn,rel ;(PC) (PC)+2(Rn) (Rn)-1If(Rn)=0,(,(PC)

50、 (PC)+relElse,程序向下執(zhí)行,程序向下執(zhí)行DJNZ direct,rel;(PC) (PC)+3(direct) (direct)-1If (direct)=0, (PC) (PC)+relElse, 程序向下執(zhí)行程序向下執(zhí)行若循環(huán)變量為若循環(huán)變量為00H,則循環(huán)次數(shù)為,則循環(huán)次數(shù)為256次次例例1: (40H)=01H,(,(50H)=70H (60H)=15H,以下程序片段的執(zhí)行結(jié)果,以下程序片段的執(zhí)行結(jié)果DJNZ 40H,LABEL1;DJNZ 50H,LABEL2;DJNZ 60H,LABEL3;結(jié)束循環(huán)向下執(zhí)行結(jié)束循環(huán)向下執(zhí)行轉(zhuǎn)向轉(zhuǎn)向LABEL2執(zhí)行,繼續(xù)循環(huán)執(zhí)行,繼續(xù)循

51、環(huán)需等上條指令執(zhí)行完,才執(zhí)行需等上條指令執(zhí)行完,才執(zhí)行本指令本指令各單元內(nèi)容變?yōu)椋焊鲉卧獌?nèi)容變?yōu)椋海?0H)=00H,(,(50H)=6FH,(,(60H)=15H例例2:MOV R2,#8 ;CPL P17 ;DJNZ R2,TOGGLF;TOGGLF:循環(huán)次數(shù)送循環(huán)次數(shù)送R2P17取反,取反,1個機周個機周R2控制循環(huán),控制循環(huán),2個機器周期個機器周期執(zhí)行結(jié)果:執(zhí)行結(jié)果:三、子程序調(diào)用及返回指令三、子程序調(diào)用及返回指令1、長調(diào)用指令、長調(diào)用指令LCALL addr16 ;(PC)=(PC)+3(SP)=(SP)+1(SP)=(PC 07)(SP)=(SP)+1(SP)=(PC 815)(P

52、C)=addr 01564KB范圍內(nèi)子程序調(diào)用范圍內(nèi)子程序調(diào)用例:設(shè)(例:設(shè)(SP)=53H,子程序首址在,子程序首址在3000H單元,單元,并以標(biāo)號并以標(biāo)號STR表示。即表示。即 2000H: LCALL STR執(zhí)行時:執(zhí)行時: (PC)=(PC)+3=2003H(SP)+1, (54H)= 03H(SP)+1,(,(55H)= 20H執(zhí)行結(jié)果:執(zhí)行結(jié)果:(SP)=(54H)=(55H)=(PC)=55H03H20H3000HSTR (PC)2 2、絕對調(diào)用指令、絕對調(diào)用指令A(yù)CALL addr11 ; ;(PC)=(PC)+2(SP)=(SP)+1(SP)=(PC 07)(SP)=(SP)

53、+1(SP)=(PC 815)(PC 010) addr11(PC 1115)不不變變提供提供2KB范圍內(nèi)的子程序調(diào)用,調(diào)用范圍同范圍內(nèi)的子程序調(diào)用,調(diào)用范圍同AJMP指令指令3、返回指令、返回指令RET ;(PC 815) (SP)(SP) (SP)-1(PC 07) (SP)(SP) (SP)-1例:設(shè)(例:設(shè)(SP)=6BH,內(nèi)部,內(nèi)部RAM(6AH)=23H (6BH)=01H,執(zhí)行,執(zhí)行 RET (PC 815) (6BH)(PC 07) (6AH)執(zhí)行結(jié)果:執(zhí)行結(jié)果: (PC)=0123H(SP)=69H4、中斷返回指令、中斷返回指令RETI ;功能:功能: A)恢復(fù)斷點,同)恢復(fù)

54、斷點,同RETB)恢復(fù)中斷邏輯,使)恢復(fù)中斷邏輯,使CPU能接收同級能接收同級或低級中斷請求或低級中斷請求5 5、空操作指令、空操作指令NOP ; (PC) (PC)+1功能:無任何操作,繼續(xù)執(zhí)行下一條指令,功能:無任何操作,繼續(xù)執(zhí)行下一條指令,不影響任何標(biāo)志,產(chǎn)生一個機器周期的延時不影響任何標(biāo)志,產(chǎn)生一個機器周期的延時例:例: 利用利用NOP指令產(chǎn)生方波指令產(chǎn)生方波CLR P2.7 ;NOPNOPNOPSETB P2.7 ;P2.7清清0輸出輸出置位置位P2.7高電平輸出高電平輸出程 序 舉 例103在在3000H為首地址的存儲區(qū)域中,存放著為首地址的存儲區(qū)域中,存放著14個由個由ASCII

55、碼表示碼表示的的09之間的數(shù)。試編寫程序,將它們轉(zhuǎn)換成之間的數(shù)。試編寫程序,將它們轉(zhuǎn)換成BCD碼,并以碼,并以壓縮壓縮BCD碼的形式,存放在碼的形式,存放在2000H2006H單元。單元。分析:分析:1、外部、外部RAM數(shù)據(jù)塊操作,數(shù)據(jù)塊操作,14個數(shù)個數(shù) DPTR做源間址寄存器,做源間址寄存器,R0為目標(biāo)間址寄存器為目標(biāo)間址寄存器 R3做計數(shù)器做計數(shù)器2、ASCII碼轉(zhuǎn)換為壓縮碼轉(zhuǎn)換為壓縮BCD碼碼ASCII分離BCD碼壓縮BCD碼屏蔽高屏蔽高4 4位位移位、異或移位、異或程序104MOV DPTR, #3000HMOV R0, #00HMOV R3, #07HMOVX A, DPTRANL

56、 A, #0FHMOV R4, AINC DPTRMOVX A, DPTRANL A, #0FHSWAP AXRL A, R4MOV P2, #20HMOVX R0, AMOV P2, #0FFHINC DPTRINC R0DJNZ R3, LOOPLOOP:;源數(shù)據(jù)塊首地址;源數(shù)據(jù)塊首地址;目標(biāo)數(shù)據(jù)塊首地址;目標(biāo)數(shù)據(jù)塊首地址;計數(shù)器;計數(shù)器;取低位字節(jié);取低位字節(jié)ASCII碼碼;屏蔽高;屏蔽高4位,轉(zhuǎn)換為位,轉(zhuǎn)換為BCD碼碼;暫存;暫存;修改地址指針,指向高位字節(jié);修改地址指針,指向高位字節(jié);取高位字節(jié);取高位字節(jié)ASCII碼碼;轉(zhuǎn)換為;轉(zhuǎn)換為BCD碼碼;移位到高;移位到高4位位;異或,轉(zhuǎn)換

57、為壓縮;異或,轉(zhuǎn)換為壓縮BCD碼碼;高;高8位目標(biāo)地址位目標(biāo)地址;存放壓縮;存放壓縮BCD碼到外部碼到外部RAM;修改源地址指針;修改源地址指針;修改目標(biāo)地址;修改目標(biāo)地址;循環(huán);循環(huán)3.3.53.3.5 位操作指令位操作指令位處理器:位處理器:CPU程序存儲器程序存儲器數(shù)據(jù)存儲器數(shù)據(jù)存儲器累加器(累加器(C)I/O口口數(shù)據(jù)數(shù)據(jù)RAM可位尋址空間可位尋址空間128位位SFR的可尋址位的可尋址位82位位位地址表示:位地址表示:bit在匯編語言中有在匯編語言中有5種表示方法:種表示方法: (以用戶標(biāo)志(以用戶標(biāo)志F0為例)為例)1、位地址、位地址 D5H2、字節(jié)地址、字節(jié)地址位位 D0H53、位寄

58、存器名稱、位寄存器名稱 F04、寄存器名、寄存器名位位 PSW55、事先用偽指令定義的符號地址、事先用偽指令定義的符號地址 格式:格式: 字符名稱字符名稱 BIT 位地址位地址 AF BIT F0一、位傳送指令一、位傳送指令MOV C , bit ; ( C ) (bit)MOV bit , C ; (bit) ( C )注:位傳送必須通過累加器注:位傳送必須通過累加器C進行進行例:將例:將30H位的內(nèi)容傳送到位的內(nèi)容傳送到20H位位MOV C,30HMOV 20H,C二、位狀態(tài)控制指令二、位狀態(tài)控制指令1、位清零指令、位清零指令 CLR bit ; (bit) 0 CLR C ; (C) 0

59、2、位求反指令、位求反指令 CPL bit ; (bit) (bit) CPL C ; (C) (C)3、位置位指令、位置位指令 SETB bit ; (bit) 1 SETB C ; (C) 1例:例: 設(shè)(設(shè)(P1)=00110101 B 執(zhí)行以下指令:執(zhí)行以下指令: CLR P1.0 ; CPL P1.0 ; SETB P1.6 ;P1=00110100 BP1=00110101BP1=01110101 B三、位邏輯操作指令三、位邏輯操作指令1、位邏輯、位邏輯“與與” ANL C,bit ; (C) (C)與()與(bit) ANL C,/bit ; (C) (C)與()與(bit)2、

60、位邏輯、位邏輯“或或” ORL C,bit ; (C) ()或()或(bit) ORL C,/bit ; (C) (C)或()或(bit)例:設(shè)例:設(shè)E,B,D都代表位地址,試編寫程序完成都代表位地址,試編寫程序完成E、B內(nèi)容的異或操作。即內(nèi)容的異或操作。即D=EB+EB程序如下:程序如下:MOV C,B1ANL C,/EMOV F0,CMOV C,EANL C,/B1ORL C,F(xiàn)0MOV D,C;C=EB;暫存;暫存 EB;C=EB;C=EB+EB;將運算結(jié)果存入;將運算結(jié)果存入D位操作必須通過位操作必須通過位累加器位累加器C C進行進行四、位控制轉(zhuǎn)移指令四、位控制轉(zhuǎn)移指令1、判、判C轉(zhuǎn)移

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論