![單片機(jī)原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/1b179db7-d5aa-45fe-9333-a829152b9e0a/1b179db7-d5aa-45fe-9333-a829152b9e0a1.gif)
![單片機(jī)原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/1b179db7-d5aa-45fe-9333-a829152b9e0a/1b179db7-d5aa-45fe-9333-a829152b9e0a2.gif)
![單片機(jī)原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/1b179db7-d5aa-45fe-9333-a829152b9e0a/1b179db7-d5aa-45fe-9333-a829152b9e0a3.gif)
![單片機(jī)原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/1b179db7-d5aa-45fe-9333-a829152b9e0a/1b179db7-d5aa-45fe-9333-a829152b9e0a4.gif)
![單片機(jī)原理及應(yīng)用-第三章-80C51指令系統(tǒng)課件_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/1b179db7-d5aa-45fe-9333-a829152b9e0a/1b179db7-d5aa-45fe-9333-a829152b9e0a5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 單片機(jī)原理及應(yīng)用單片機(jī)原理及應(yīng)用第三章 80C51指令系統(tǒng)本章重點(diǎn)本章重點(diǎn)尋址方式尋址方式指令格式指令格式操作結(jié)果及對(duì)標(biāo)志位影響操作結(jié)果及對(duì)標(biāo)志位影響3.1 概述分類(lèi)分類(lèi)數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令 2929數(shù)學(xué)運(yùn)算類(lèi)指令數(shù)學(xué)運(yùn)算類(lèi)指令 2424邏輯運(yùn)算類(lèi)指令邏輯運(yùn)算類(lèi)指令 2424控制轉(zhuǎn)移類(lèi)指令控制轉(zhuǎn)移類(lèi)指令 1717位操作指令位操作指令 1717111111條指令條指令按指令長(zhǎng)度分類(lèi)按指令長(zhǎng)度分類(lèi)單字節(jié)指令單字節(jié)指令雙字節(jié)指令雙字節(jié)指令三字節(jié)指令三字節(jié)指令指令執(zhí)行時(shí)間指令執(zhí)行時(shí)間1212個(gè)振蕩周期個(gè)振蕩周期 64642424個(gè)振蕩周期個(gè)振蕩周期 45454848個(gè)振蕩周期個(gè)振蕩周期 2
2、 2指令格式指令格式標(biāo)號(hào):操作碼標(biāo)號(hào):操作碼 (目的操作數(shù)),(源操作數(shù))(目的操作數(shù)),(源操作數(shù)) ;注釋?zhuān)蛔⑨屩噶畹姆?hào)地址指令的符號(hào)地址由字母打頭的字母數(shù)字串組成,長(zhǎng)度一由字母打頭的字母數(shù)字串組成,長(zhǎng)度一般不超過(guò)般不超過(guò)6 6個(gè)符號(hào)個(gè)符號(hào)指令操作的性質(zhì)指令操作的性質(zhì)用規(guī)定的匯編語(yǔ)言助記符表示指令操作的對(duì)象3.2 尋址方式和尋址空間概念:概念:說(shuō)明操作數(shù)所在的位置(地址),把操作數(shù)提取說(shuō)明操作數(shù)所在的位置(地址),把操作數(shù)提取出來(lái)的方法出來(lái)的方法基本尋址方式:1 1、寄存器尋址、寄存器尋址2 2、直接尋址、直接尋址3 3、寄存器間接尋址、寄存器間接尋址4 4、立即尋址、立即尋址5 5、相
3、對(duì)尋址、相對(duì)尋址 6 6、變址尋址、變址尋址7 7、位尋址、位尋址一、寄存器尋址操作數(shù)操作數(shù) 通用寄存器的內(nèi)容通用寄存器的內(nèi)容表示符號(hào)表示符號(hào) 寄存器名稱(chēng)寄存器名稱(chēng)尋址范圍尋址范圍工作寄存器工作寄存器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ù)存儲(chǔ)器片外數(shù)據(jù)存儲(chǔ)器ACCDPTRB二、直接尋
4、址操作數(shù)操作數(shù) 指令中直接地址的內(nèi)容指令中直接地址的內(nèi)容尋址范圍:1、內(nèi)部數(shù)據(jù)、內(nèi)部數(shù)據(jù)RAM的低的低128個(gè)字節(jié)單元個(gè)字節(jié)單元2、特殊功能寄存器、特殊功能寄存器3、位地址空間、位地址空間通用符號(hào):通用符號(hào):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ù)存儲(chǔ)儲(chǔ)器器片外數(shù)據(jù)存片外數(shù)據(jù)存儲(chǔ)儲(chǔ)器器三、寄存器間接尋址方式指令指定的寄存器內(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符號(hào)符號(hào) 寄存器名寄存器名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ù)存儲(chǔ)儲(chǔ)器器片外數(shù)據(jù)存片外數(shù)據(jù)存儲(chǔ)儲(chǔ)器器四、立即尋址方式指令直接給出操作數(shù),操作數(shù)為指令直接給出操作數(shù),操作數(shù)為8 8位或位或1616位位二進(jìn)制數(shù),稱(chēng)立即數(shù)二進(jìn)制數(shù),稱(chēng)立即數(shù)尋址范圍程序存儲(chǔ)器中的立即數(shù)程序存儲(chǔ)器中的立即數(shù)通用符號(hào)通用符號(hào): :#data (8位),位),#data16( (16位)位)五、相對(duì)尋址方式以以PC當(dāng)前值為基址,加上指令中給出的偏當(dāng)前值為基址,加上指令中給出的偏移量(移量(rel)形成有效的程序轉(zhuǎn)移地址。)形成有效的程序轉(zhuǎn)移地址??刂妻D(zhuǎn)移類(lèi)指令控制轉(zhuǎn)移類(lèi)指令轉(zhuǎn)移范圍: :以以PC當(dāng)前值為起始地址,相對(duì)當(dāng)前值為起始地址,相對(duì)偏移在偏移在+
7、127 -128個(gè)字節(jié)單元之間。個(gè)字節(jié)單元之間。偏移量偏移量rel 八位二進(jìn)制補(bǔ)碼八位二進(jìn)制補(bǔ)碼1005H: :JC 80H執(zhí)行過(guò)程:執(zhí)行過(guò)程:讀指令,完成后讀指令,完成后 (PC)=(PC)+2如如 C=1,則,則 (PC)=(PC)+rel 轉(zhuǎn)移至轉(zhuǎn)移至 1007H-80H=0F87H 單元單元如如C=0 則執(zhí)行則執(zhí)行1007H單元中的指令單元中的指令后向后向128個(gè)個(gè)單單元元前向前向127個(gè)個(gè)單單元元1005H 40H1006H 80H1007H 0F87H1086H六、變址間接尋址基址寄存器內(nèi)容加上間址寄存器內(nèi)容(地址偏基址寄存器內(nèi)容加上間址寄存器內(nèi)容(地址偏移量)為有效地址移量)為有
8、效地址基址寄存器: :PC, ,DPTR變址寄存器:A尋址范圍:程序存儲(chǔ)器尋址范圍:程序存儲(chǔ)器例:例: MOVC A, ,A+DPTR 設(shè)設(shè) A=11H DPTR=02F1H操作數(shù)地址為為 02F1H+11H=0302H操作:操作:( (0302H) )A七、位尋址MCS-51設(shè)有獨(dú)立的位處理器,位地址一般用直接位地設(shè)有獨(dú)立的位處理器,位地址一般用直接位地址方式給出,可歸入直接尋址方式址方式給出,可歸入直接尋址方式尋址范圍: 位尋址內(nèi)部位尋址內(nèi)部RAM 128位位 可位尋址的可位尋址的SFR 82位位位地址的表示方式:1 1、直接地址(位地址)、直接地址(位地址)2 2、位名稱(chēng)、位名稱(chēng)3 3、
9、第幾單元第幾位,寄存器名、第幾單元第幾位,寄存器名+ +位位4 4、用偽指令指定的符號(hào)地址、用偽指令指定的符號(hào)地址通用符號(hào) bit例:例: PSW中中F0(用戶(hù)標(biāo)志)可表示如下:(用戶(hù)標(biāo)志)可表示如下:D5HF0PSW.5AF( (AF EQU F0) )193.3 指令系統(tǒng)3.3.1 數(shù)據(jù)傳送類(lèi)指令按操作方式,分為三種:按操作方式,分為三種: 數(shù)據(jù)傳送數(shù)據(jù)傳送數(shù)據(jù)交換數(shù)據(jù)交換棧操作棧操作一、普通傳送類(lèi)指令格式: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說(shuō)明: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位二進(jìn)制地址碼 尋址內(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ù)存儲(chǔ)器與累加器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指令錯(cuò)誤指令錯(cuò)誤因?yàn)橐驗(yàn)?2H
13、是是DPL的地址值,對(duì)于的地址值,對(duì)于SFR,不,不能使用間接尋址方式能使用間接尋址方式正確指令:正確指令:MOV A, ,DPL 或或 MOV A, ,82H80C52 正確,尋址內(nèi)部正確,尋址內(nèi)部RAM3、內(nèi)部數(shù)據(jù)存、內(nèi)部數(shù)據(jù)存儲(chǔ)儲(chǔ)器中器中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ù)存儲(chǔ)器的數(shù)據(jù)傳送指令二、外部數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)傳送指令只能只能間接尋址間接尋址,且只能與,且只能與累加器累加器A進(jìn)行數(shù)據(jù)傳送進(jìn)行數(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ù)存儲(chǔ)單元中,(若片外數(shù)據(jù)存儲(chǔ)單元中,(3007H)=60HMOV DPTR, #3007HMOVX A, DPTR結(jié)果:結(jié)果:(A)=60H使用使用Ri作間址寄存器,此時(shí)需用作間址寄存器,此時(shí)需用P2口輸出高口輸出高八位地址,應(yīng)事先預(yù)置八位地址,應(yīng)事先預(yù)置P2,Ri的值的值以下程序功能與上例相同:以下程序功能與上例相同:MOV P2 , #30HMOV R0 , #07HMOVX A, R0三、程序存儲(chǔ)器向累加器三、程序存儲(chǔ)器向累加器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)容相加,求得程序存儲(chǔ)器某單元地址,再將該地址單元內(nèi)容送累加器A8位無(wú)符號(hào)位無(wú)符號(hào)整數(shù)整數(shù)說(shuō)明:說(shuō)明:1、以、以PC作為基址寄存器,因?yàn)樽鳛榛芳拇嫫?,因?yàn)镻C值不能任意更值不能任意更改,所以查表范圍為改,所以查表范圍為PC當(dāng)前值開(kāi)始后的當(dāng)前值開(kāi)始后的256字節(jié)。字節(jié)。偏移量計(jì)算式:偏移量計(jì)算式:DIS=表首地址(該指令所在地址表首地址(該指令所在地址+1)2、以、以DPTR作為基址寄存器,因?yàn)樽鳛榛芳拇嫫?,因?yàn)镈PTR的內(nèi)的內(nèi)容可以通過(guò)賦值改變,使
18、表格可以設(shè)置在容可以通過(guò)賦值改變,使表格可以設(shè)置在64KB程序存儲(chǔ)器的任意地址空間。程序存儲(chǔ)器的任意地址空間。例例1:編制根據(jù)累加器:編制根據(jù)累加器A中的數(shù)(中的數(shù)(09)查其平方表的)查其平方表的子程序。子程序。COUNT:PUSH DPH; 保護(hù)保護(hù)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)號(hào)開(kāi)始的連續(xù)單元中號(hào)開(kāi)始的連續(xù)單元中例例2:編子程序根據(jù):編子程序根據(jù)A中二進(jìn)制數(shù)查其中二進(jìn)制數(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、堆棧操作類(lèi)指令PUSH direct( (SP) ) ( (SP) )+1 (SP) (direct)POP direct(direct) (SP) (SP) (SP)-1要點(diǎn):入棧操作,先執(zhí)行要點(diǎn):入棧操作,先執(zhí)行SP+1,再入棧,再入棧 出棧操作,先出棧,再執(zhí)行出棧操作,先出棧,再執(zhí)行SP-1例:在中斷響應(yīng)時(shí),(例:在中斷響應(yīng)
22、時(shí),(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ù)運(yùn)算類(lèi)指令類(lèi)型:加,減,乘,除,增量、減量以及二類(lèi)型:加,減,乘,除,增量、減量以及二十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令A(yù)DD、ADDC、SUBB指令的執(zhí)行將影響標(biāo)指令的執(zhí)行將影響標(biāo)志位(志位(PSW中的中的OV,Cy,AC及及P)要求掌握要求掌握指令的操作結(jié)果指令的操作結(jié)果對(duì)標(biāo)志位的影響對(duì)標(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運(yùn)算均針對(duì)無(wú)符號(hào)二進(jìn)制數(shù)進(jìn)行,但結(jié)合運(yùn)算均針對(duì)無(wú)符號(hào)二進(jìn)制數(shù)進(jìn)行,但結(jié)合OV標(biāo)志標(biāo)志可實(shí)現(xiàn)有符號(hào)數(shù)運(yùn)算??蓪?shí)現(xiàn)有符號(hào)數(shù)運(yùn)算。結(jié)果將影響結(jié)果將影響OV,Cy,AC,P標(biāo)志標(biāo)志A源源+A當(dāng)最高位有進(jìn)位,當(dāng)最高位有進(jìn)位,Cy=1位位3向位向位4有進(jìn)位,有進(jìn)位,AC=1OV取決于取決于6、7兩位的進(jìn)位情況,同時(shí)兩位的進(jìn)位情況,同時(shí)有進(jìn)位或無(wú)進(jìn)位,則有進(jìn)位或無(wú)進(jìn)位,則OV=0;只有一位;只有一位有進(jìn)位,有進(jìn)位,OV=1A中有偶數(shù)
25、個(gè)中有偶數(shù)個(gè)1,P=0;否則,;否則,P=1例:設(shè)(例:設(shè)(A)=0C3H,(,(R0)=0AAH 執(zhí)行指令:執(zhí)行指令:ADD A,R0 寫(xiě)出執(zhí)行結(jié)果及對(duì)標(biāo)志位影響寫(xiě)出執(zhí)行結(jié)果及對(duì)標(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只對(duì)有符號(hào)數(shù)運(yùn)算有只對(duì)有符號(hào)數(shù)運(yùn)算有意義。兩負(fù)數(shù)相加,意義。兩負(fù)數(shù)相加,結(jié)果為正數(shù),溢出結(jié)果為正數(shù),溢出例:設(shè)(例:設(shè)(A)=0C3H,(,(R0)=0AAH 執(zhí)行指令:執(zhí)行指令:ADD A,R0 寫(xiě)出執(zhí)行結(jié)果及對(duì)標(biāo)志位影響寫(xiě)出執(zhí)行結(jié)果及對(duì)標(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無(wú)符號(hào)數(shù)無(wú)符號(hào)數(shù) 195 + 170 = 365有符號(hào)數(shù)有符號(hào)數(shù) -61 + (-86) = -147 109溢出 二、帶進(jìn)位加法指令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最高兩位同時(shí)有借位或無(wú)借位,最高兩位同時(shí)有借位或無(wú)借位,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只有在符號(hào)數(shù)相減時(shí),只有在符號(hào)數(shù)相減時(shí),OV才意味著溢出與否,如出才意味著溢出
29、與否,如出現(xiàn)以下兩種情況,現(xiàn)以下兩種情況,OV置置1:負(fù)負(fù)-正正=正正 正正-負(fù)負(fù)=負(fù)負(fù)四、增量指令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運(yùn)行結(jié)果:運(yùn)行結(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)對(duì)標(biāo)志位影響:對(duì)標(biāo)志位影響:當(dāng)當(dāng)B中除數(shù)為中除數(shù)為00H,除法運(yùn)算結(jié)果為不定值,除法運(yùn)算結(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八、二十進(jìn)制調(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因?yàn)橹噶钜靡驗(yàn)橹噶钜肅和和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對(duì)于無(wú)符號(hào)對(duì)于無(wú)符號(hào)BCD碼運(yùn)算,碼運(yùn)算,56+67=123使用此指令條件:使用此指令條件:1、兩個(gè)操作數(shù)均為壓縮、兩個(gè)操作數(shù)均為壓縮BCD碼碼2、不適合減法和增、不適合減法和增1運(yùn)算運(yùn)算例:對(duì)于十進(jìn)制減法運(yùn)算,可采用補(bǔ)碼相加的方法例:對(duì)于十進(jìn)制減法運(yùn)算,可采用補(bǔ)
35、碼相加的方法 即用即用9AH減去減數(shù)得到以十為模的補(bǔ)碼減去減數(shù)得到以十為模的補(bǔ)碼設(shè)被減數(shù)存設(shè)被減數(shù)存30H單元,減數(shù)存單元,減數(shù)存40H單元,結(jié)果單元,結(jié)果存存50H單元。程序如下:?jiǎn)卧?。程序如下:CLR C ;MOV A,#9AH;SUBB A, 40H ;ADD A , 30H;DA A ;MOV 50H, A清進(jìn)位位清進(jìn)位位求減數(shù)的十補(bǔ)碼求減數(shù)的十補(bǔ)碼補(bǔ)碼相加補(bǔ)碼相加調(diào)整至調(diào)整至BCD碼碼3.3.3 邏輯運(yùn)算類(lèi)指令按操作數(shù)分為兩類(lèi):?jiǎn)尾僮鲾?shù)指令雙操作數(shù)指令針對(duì)累加器A進(jìn)行A與第二操作數(shù)之間進(jìn)行操作:清零、求反、移位,與、或、異或一、單操作數(shù)邏輯運(yùn)算類(lèi)指令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連同進(jìn)位位連同進(jìn)位位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連同進(jìn)位位連同進(jìn)位位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ù)邏輯運(yùn)算類(lèi)指令1、邏輯、邏輯“與與”指令指令 ANL A , Rn ANL A , directANL A , RiANL A , #data 以以A為第一操作數(shù),為第一操作數(shù),邏輯邏輯“與與”運(yùn)算的結(jié)運(yùn)算的結(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 指令可用于對(duì)某些位取反指令可用于對(duì)某些位取反方法:欲取反的位用方法:欲取反的位用“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)移類(lèi)指令3類(lèi):類(lèi):無(wú)條件轉(zhuǎn)移無(wú)條件轉(zhuǎn)移條件轉(zhuǎn)移條件轉(zhuǎn)移子程序調(diào)用及返回子程序調(diào)用及返回一、無(wú)條件轉(zhuǎn)移指令1、絕對(duì)無(wú)條件轉(zhuǎn)移、絕對(duì)無(wú)條件轉(zhuǎn)移AJMP addr11;(PC) (PC)+2(PC 010) addr 010(PC 1115)不變)不變addr11:11位地址,
41、是轉(zhuǎn)移目的地址的低位地址,是轉(zhuǎn)移目的地址的低11位。位。 在匯編語(yǔ)言程序中,可寫(xiě)成在匯編語(yǔ)言程序中,可寫(xiě)成4位位16進(jìn)制地址,進(jìn)制地址,也可寫(xiě)成代表也可寫(xiě)成代表16位地址的標(biāo)號(hào)(符號(hào)地址)形式。位地址的標(biāo)號(hào)(符號(hào)地址)形式。注:不常用,注:不常用,MCS48兼容指令兼容指令轉(zhuǎn)移范圍:轉(zhuǎn)移范圍:2K字節(jié)字節(jié)例例1: 0345H:AJMP addr11 addr11取值可為取值可為000 0000 0000B111 1111 1111B執(zhí)行時(shí)執(zhí)行時(shí) (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是否正確是否正確正確正確錯(cuò)誤錯(cuò)誤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、長(zhǎng)轉(zhuǎn)移指令、長(zhǎng)轉(zhuǎn)移指令LIMP addr16 ; (PC) addr16轉(zhuǎn)移范圍:轉(zhuǎn)移范圍: 64KB 3、相對(duì)轉(zhuǎn)移指令、相對(duì)轉(zhuǎn)移指令SJMP rel ;(
44、PC) (PC)+2(PC) (PC)+relrel:8位二進(jìn)制補(bǔ)碼,可寫(xiě)成符號(hào)地址的形式位二進(jìn)制補(bǔ)碼,可寫(xiě)成符號(hào)地址的形式轉(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程序在此指令處無(wú)限循環(huán)程序在此指令處無(wú)限循環(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)容來(lái)選擇其中的的內(nèi)容來(lái)選擇其中的某一個(gè)分支轉(zhuǎn)移指令某一個(gè)分支轉(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)移表不超過(guò)不超過(guò)256B二、條件轉(zhuǎn)移指令二、條件轉(zhuǎn)移指令均為相對(duì)尋址方式,指令提供偏移量均為相對(duì)尋址方式,指令提供偏移量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ù)存儲(chǔ)器的一個(gè)數(shù)據(jù)塊傳送到內(nèi)部數(shù)例:將外部數(shù)據(jù)存儲(chǔ)器的一個(gè)數(shù)據(jù)塊傳送到內(nèi)部數(shù)據(jù)據(jù)RAM,兩者的首地址分別為,兩者的首地址分別為DATA1和和DATA2,遇到傳送的數(shù)據(jù)為遇到傳送的數(shù)據(jù)為0時(shí)停止傳送。時(shí)停止傳送。分析:數(shù)據(jù)塊傳送,長(zhǎng)度較短,均采用間接分析:數(shù)據(jù)塊傳送
47、,長(zhǎng)度較短,均采用間接尋址方式,其中尋址方式,其中R0尋址外部數(shù)據(jù)存儲(chǔ)器,尋址外部數(shù)據(jù)存儲(chǔ)器,R1尋址內(nèi)部尋址內(nèi)部RAM。傳送時(shí),要以累加器傳送時(shí),要以累加器A作為過(guò)渡,利用判零轉(zhuǎn)作為過(guò)渡,利用判零轉(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)備就緒信號(hào)輸入
49、端,為準(zhǔn)備就緒信號(hào)輸入端,當(dāng)該當(dāng)該4位輸入全位輸入全“1”說(shuō)明各項(xiàng)工作準(zhǔn)備好,單片說(shuō)明各項(xiàng)工作準(zhǔn)備好,單片機(jī)可順序執(zhí)行主程序,否則循環(huán)等待。機(jī)可順序執(zhí)行主程序,否則循環(huán)等待。程序片段如下:程序片段如下:L0:MOV A , P1 ;ANL A , #0FH ;CJNE A , #0FH , L0 ;MAN1:讀讀P1口內(nèi)容口內(nèi)容高高4位無(wú)意義,屏蔽位無(wú)意義,屏蔽低低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個(gè)機(jī)周個(gè)機(jī)周R2控制循環(huán),控制循環(huán),2個(gè)機(jī)器周期個(gè)機(jī)器周期執(zhí)行結(jié)果:執(zhí)行結(jié)果:三、子程序調(diào)用及返回指令三、子程序調(diào)用及返回指令1、長(zhǎng)調(diào)用指令、長(zhǎng)調(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)號(hào)并以標(biāo)號(hào)STR表示。即表示。即 2000H: LCALL STR執(zhí)行時(shí):執(zhí)行時(shí): (PC)=(PC)+3=2003H(SP)+1, (54H)= 03H(SP)+1,(,(55H)= 20H執(zhí)行結(jié)果:執(zhí)行結(jié)果:(SP)=(54H)=(55H)=(PC)=55H03H20H3000HSTR (PC)2 2、絕對(duì)調(diào)用指令、絕對(duì)調(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ù)斷點(diǎn),同)恢復(fù)
54、斷點(diǎn),同RETB)恢復(fù)中斷邏輯,使)恢復(fù)中斷邏輯,使CPU能接收同級(jí)能接收同級(jí)或低級(jí)中斷請(qǐng)求或低級(jí)中斷請(qǐng)求5 5、空操作指令、空操作指令NOP ; (PC) (PC)+1功能:無(wú)任何操作,繼續(xù)執(zhí)行下一條指令,功能:無(wú)任何操作,繼續(xù)執(zhí)行下一條指令,不影響任何標(biāo)志,產(chǎn)生一個(gè)機(jī)器周期的延時(shí)不影響任何標(biāo)志,產(chǎn)生一個(gè)機(jī)器周期的延時(shí)例:例: 利用利用NOP指令產(chǎn)生方波指令產(chǎn)生方波CLR P2.7 ;NOPNOPNOPSETB P2.7 ;P2.7清清0輸出輸出置位置位P2.7高電平輸出高電平輸出程 序 舉 例103在在3000H為首地址的存儲(chǔ)區(qū)域中,存放著為首地址的存儲(chǔ)區(qū)域中,存放著14個(gè)由個(gè)由ASCII
55、碼表示碼表示的的09之間的數(shù)。試編寫(xiě)程序,將它們轉(zhuǎn)換成之間的數(shù)。試編寫(xiě)程序,將它們轉(zhuǎn)換成BCD碼,并以碼,并以壓縮壓縮BCD碼的形式,存放在碼的形式,存放在2000H2006H單元。單元。分析:分析:1、外部、外部RAM數(shù)據(jù)塊操作,數(shù)據(jù)塊操作,14個(gè)數(shù)個(gè)數(shù) DPTR做源間址寄存器,做源間址寄存器,R0為目標(biāo)間址寄存器為目標(biāo)間址寄存器 R3做計(jì)數(shù)器做計(jì)數(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ù)塊首地址;計(jì)數(shù)器;計(jì)數(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程序存儲(chǔ)器程序存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器累加器(累加器(C)I/O口口數(shù)據(jù)數(shù)據(jù)RAM可位尋址空間可位尋址空間128位位SFR的可尋址位的可尋址位82位位位地址表示:位地址表示:bit在匯編語(yǔ)言中有在匯編語(yǔ)言中有5種表示方法:種表示方法: (以用戶(hù)標(biāo)志(以用戶(hù)標(biāo)志F0為例)為例)1、位地址、位地址 D5H2、字節(jié)地址、字節(jié)地址位位 D0H53、位寄
58、存器名稱(chēng)、位寄存器名稱(chēng) F04、寄存器名、寄存器名位位 PSW55、事先用偽指令定義的符號(hào)地址、事先用偽指令定義的符號(hào)地址 格式:格式: 字符名稱(chēng)字符名稱(chēng) BIT 位地址位地址 AF BIT F0一、位傳送指令一、位傳送指令MOV C , bit ; ( C ) (bit)MOV bit , C ; (bit) ( C )注:位傳送必須通過(guò)累加器注:位傳送必須通過(guò)累加器C進(jìn)行進(jìn)行例:將例:將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都代表位地址,試編寫(xiě)程序完成都代表位地址,試編寫(xiě)程序完成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;將運(yùn)算結(jié)果存入;將運(yùn)算結(jié)果存入D位操作必須通過(guò)位操作必須通過(guò)位累加器位累加器C C進(jìn)行進(jìn)行四、位控制轉(zhuǎn)移指令四、位控制轉(zhuǎn)移指令1、判、判C轉(zhuǎn)移
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球蒸汽甲烷重整藍(lán)氫行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)寵物蔓越莓補(bǔ)充劑行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球可調(diào)節(jié)軌道燈行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)核電用金屬管行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球可見(jiàn)光波段高光譜成像(HSI)設(shè)備行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球玻璃煙斗行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)魚(yú)雷泵行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球I型陽(yáng)極氧化服務(wù)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025農(nóng)村買(mǎi)房子合同范本
- 工程汽車(chē)租賃合同范本
- 《鍋爐安全培訓(xùn)》課件
- 中國(guó)移動(dòng)骨干光傳輸網(wǎng)介紹
- ASME B16.5-16.47法蘭尺寸對(duì)照表
- 對(duì)外漢語(yǔ)詞匯教學(xué)(第二版)PPT完整全套教學(xué)課件
- 產(chǎn)品報(bào)價(jià)單(5篇)
- 康復(fù)護(hù)理練習(xí)題庫(kù)(附答案)
- 不銹鋼欄桿施工工藝
- 陜西演藝集團(tuán)有限公司招聘筆試題庫(kù)2023
- 小型餐飲店退股協(xié)議書(shū)
- 第九講 全面依法治國(guó)PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 兩淮礦區(qū)地面定向多分支水平井鉆進(jìn)作業(yè)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論