版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章51單片機指令系統(tǒng)及匯編程序設(shè)計主 要 章 節(jié)3.1 指令系統(tǒng)概述3.2 51單片機的尋址方式3.3 51單片機的指令系統(tǒng)3.4 51單片機匯編程序設(shè)計概述3.5 51單片機常用匯編程序設(shè)計2022/9/1523.1 指令系統(tǒng)概述一、51單片機匯編指令格式標(biāo)號: 操作碼 操作數(shù)1,操作數(shù)2 ;注釋(1)操作碼指明指令的功能(2)操作數(shù)給指令操作提供數(shù)據(jù)、數(shù)據(jù)的地址或指令的地址(3)標(biāo)號是指令的符號地址,后面需帶冒號(4)注釋是對指令的解釋,前面需帶分號2022/9/1533.1 指令系統(tǒng)概述二、51單片機匯編指令常用符號(1)Ri和Rn (2)#data(3)#data16(4)rel(
2、5)addr16和addr11(6)direct(7)bit(8)(X)(9)/ 和符號2022/9/1543.2 51單片機的尋址方式一、立即尋址操作數(shù)是常數(shù),直接在指令中給出常數(shù)以“#”符號作前綴例如: MOV A,#30H2022/9/1553.2 51單片機的尋址方式二、寄存器尋址操作數(shù)存放在寄存器中指令中直接給出寄存器名稱寄存器:八個通用寄存器R0R7、累加器A、寄存器B和數(shù)據(jù)指針寄存器DPTR(DPH和DPL)例如: MOV A,R12022/9/1563.2 51單片機的尋址方式三、直接尋址操作數(shù)存放在存儲單元中指令中直接提供存儲單元的地址訪問對象:片內(nèi)數(shù)據(jù)存儲器和特殊功能寄存器
3、。例如: MOV A,30H2022/9/1573.2 51單片機的尋址方式四、寄存器間接尋址操作數(shù)存放在存儲單元中,存儲單元的地址又存放在寄存器中指令中通過相應(yīng)的寄存器來提供的存儲單元的地址間接尋址用到的寄存器:通用寄存器R0、R1和數(shù)據(jù)指針寄存器DPTR。訪問的對象為:片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器:用R0和R1作指針 (MOV)片內(nèi)數(shù)據(jù)存儲器:用R0和R1訪問低端的256字節(jié);(MOVX)用DPTR訪問整個64K;2022/9/1583.2 51單片機的尋址方式訪問形式:寄存器名例如:1)MOV R1,#30H MOV A,R12)MOV DPTR,#2000HMOV A,
4、DPTR2022/9/1593.2 51單片機的尋址方式五、變址尋址操作數(shù)存放在存儲單元中操作數(shù)的地址由指令中提供的基址寄存器和變址寄存器中的內(nèi)容相加得到基址寄存器是:數(shù)據(jù)指針寄存器DPTR和程序計數(shù)器PC;變址寄存器:累加器A訪問的對象只能是程序存儲器(MOVC)格式只有兩種:MOVC A, A+DPTRMOVC A, A+PC2022/9/15103.2 51單片機的尋址方式六、指令尋址操作對象是地址1. 絕對尋址直接提供目的位置的地址或地址的一部分2. 相對尋址以當(dāng)前程序計數(shù)器PC值加上指令中給出的偏移量rel得到目的位置的地址(1)當(dāng)前PC值是指轉(zhuǎn)移指令執(zhí)行時的PC值,它等于轉(zhuǎn)移指令的
5、地址加上轉(zhuǎn)移指令的字節(jié)數(shù)。(2)偏移量rel是8位有符號數(shù),以補碼表示,它的取值范圍為-128+127。 相對尋址的目的地址為:目的地址=當(dāng)前PC+rel=轉(zhuǎn)移指令的地址+轉(zhuǎn)移指令的字節(jié)數(shù)+rel2022/9/15113.2 51單片機的尋址方式七、位尋址位處理操作位的尋址方式位地址的表示:(1)直接位地址(00H0FFH)。例如:20H。(2)字節(jié)地址帶位號。例如:20H.2表示20H單元的2位。(3)特殊功能寄存器名帶位號。例如:P0.1表示P0口的1位。(4)位符號地址。例如:TR0是定時/計數(shù)器T0的啟動位。2022/9/15123.3 51單片機的指令系統(tǒng)3.3.1 數(shù)據(jù)傳送類指令
6、三組:普通傳送指令、數(shù)據(jù)交換指令、堆棧操作指令。用到的助記符有:MOV、MOVX、MOVC、XCH、XCHD、PUSH、POP和SWAP。1. 普通數(shù)據(jù)傳送指令 1)片內(nèi)數(shù)據(jù)存儲器傳送指令MOV 指令格式:MOV 目的操作數(shù),源操作數(shù)2022/9/15131. 普通數(shù)據(jù)傳送指令1)片內(nèi)數(shù)據(jù)存儲器傳送指令MOV2022/9/1514ARnRidirectARnRidirectDPTR#data16總共16條注意: MOV A,A指令沒有意義源操作數(shù)和目的操作數(shù)中的Rn和Ri不能相互配對1. 普通數(shù)據(jù)傳送指令2) 片外數(shù)據(jù)存儲器傳送指令MOVX 四條,格式:MOVX A,DPTR;A (DPTR)
7、MOVX DPTR,A;(DPTR) AMOVX A,Ri;A (Ri)MOVX Ri,A;(Ri) A2022/9/15151. 普通數(shù)據(jù)傳送指令3) 程序存儲器傳送指令MOVC兩條:一條是用DPTR基址變址尋址,一條是用PC基址變址尋址。格式如下:MOVC A, A+DPTR ;A (A+DPTR)MOVC A, A+PC ;A (A+PC)2022/9/15162. 數(shù)據(jù)交換指令有3個助記符XCH、XCHD和SWAP,5條指令,格式如下:XCH A,Rn ;A RnXCH A ,direct;A(direct)XCH A, Ri;A(Ri)XCHD A, Ri;A03(Ri)03SWAP
8、 A ;A03A472022/9/15173. 堆棧操作指令堆棧操作有兩種: “入?!?,助記符PUSH; “出棧”, 助記符POP;格式如下: PUSH direct ;SPSP+1, (SP) (direct) POP direct ;(direct)(SP), SP SP-12022/9/15183.3.2 算術(shù)運算類指令1. 加法指令1)一般的加法指令A(yù)DD四條,格式如下:ADD A,Rn;A A + RnADD A,direct;A A +(direct)ADD A,Ri;A A +(Ri)ADD A,#data;A A + #data2022/9/15191. 加法指令2) 帶進(jìn)位加
9、法指令A(yù)DDC四條,格式如下:ADDC A,Rn;A A + Rn + CADDC A,direct;A A +(direct)+ CADDC A,Ri;A A +(Ri)+ CADDC A,#data;A A + #data + C2022/9/15201. 加法指令3) 加1指令I(lǐng)NC5條,格式如下:INC A;A A + 1INC Rn;Rn Rn + 1INC direct;(direct) (direct)+ 1INC Ri;(Ri)(Ri)+ 1INC DPTR;DPTR DPTR + 12022/9/15212. 減法指令1) 帶借位減法指令SUBB四條,格式如下:SUBB A,
10、Rn;A A - Rn - CSUBB A,direct;A A -(direct)- CSUBB A,Ri;A A -(Ri)- CSUBB A,#data;A A - #data - C2022/9/15222. 減法指令2) 減1指令DEC四條,格式如下:DEC A;A A - 1DEC Rn;Rn Rn - 1DEC direct;direct (direct)- 1DEC Ri;(Ri)(Ri)- 12022/9/15233.3.2 算術(shù)運算類指令乘法指令MUL:(無符號數(shù)) MUL AB ;AB B A CY復(fù)位。對于OV:當(dāng)積大于255時,OV為1;否則,OV為0 除法指令DIV
11、 :(無符號數(shù)) DIV AB ;AB 商放A,余數(shù)放B 一般情況下CY和OV都清0,只有當(dāng)B寄存器中的除數(shù)為0時,CY和OV才被置12022/9/15243.3.2 算術(shù)運算類指令5) 十進(jìn)制調(diào)整指令 十進(jìn)制調(diào)整指令只有一條: DA A 調(diào)整過程為:(1)若累加器A的低四位為十六進(jìn)制的AF或輔助進(jìn)位標(biāo)志AC為1,則累加器A中的內(nèi)容做加06H調(diào)整。(2)若累加器A的高四位為十六進(jìn)制的AF或進(jìn)位標(biāo)志CY為1,則累加器A中的內(nèi)容做加60H調(diào)整。2022/9/15253.3.3 邏輯操作指令1. 邏輯與指令A(yù)NLANL A,Rn ;A A RnANL A,direct ; A A (direct)A
12、NL A,Ri ; A A (Ri)ANL A,#data ;A A dataANL direct,A ;(direct) (direct) AANL direct,#data ;(direct) (direct) data2022/9/15263.3.3 邏輯操作指令2. 邏輯或指令ORLORL A,Rn ;A A RnORL A,direct ;A A (direct)ORL A,Ri ;A A (Ri)ORL A,#data ;A A dataORL direct,A ;(direct) (direct) AORL direct,#data ;(direct) (direct) data
13、2022/9/15273.3.3 邏輯操作指令3. 邏輯異或指令XRLXRL A,Rn ;A A RnXRL A,direct ;A A (direct)XRL A,Ri ;A A (Ri)XRL A,#data ;A A dataXRL direct,A ;(direct) (direct) AXRL direct,#data ;(direct) (direct) data2022/9/15284. 清零和求反指令(1)清零指令:CLR A ;A 0(2)求反指令:CPL A ;A 2022/9/15295. 循環(huán)移位指令(1)累加器A循環(huán)左移RL: RL A(2)累加器A循環(huán)右移RR: R
14、R A(3)帶進(jìn)位的循環(huán)左移RLC: RLC A(4)帶進(jìn)位的循環(huán)右移RRC: RRC A2022/9/15303.3.4 控制轉(zhuǎn)移指令1. 無條件轉(zhuǎn)移指令1)無條件長轉(zhuǎn)移指令LJMP指令格式: LJMP addr16;PC PC + 2;PC addr16可以轉(zhuǎn)移到程序存儲器64KB空間的任意位置缺點是:執(zhí)行時間長,字節(jié)數(shù)多。2)無條件絕對轉(zhuǎn)移指令A(yù)JMP指令格式: AJMP addr11;PC100 addr11 當(dāng)前位置2KB范圍以內(nèi)轉(zhuǎn)移2022/9/15311. 無條件轉(zhuǎn)移指令3) 無條件相對轉(zhuǎn)移指令SJMP指令格式: SJMP rel;PC PC + 2;PC PC + rel轉(zhuǎn)移范
15、圍為-128+127HERE:SJMP HERE 或SJMP $4)無條件散轉(zhuǎn)指令JMP指令格式: JMP A+DPTR;PC A + DPTR2022/9/15322. 條件轉(zhuǎn)移指令1)累加器A判零條件轉(zhuǎn)移指令判0指令JZ:JZ rel ; PC PC + 2; 若 A = 0,則PC PC + rel;否則,順次執(zhí)行下一條指令判非0指令JNZ:JNZ rel ; PC PC + 2;若 A 0,則PC PC + rel;否則,順次執(zhí)行下一條指令2022/9/15332)比較轉(zhuǎn)移指令CJNE有四條,格式如下:CJNE A,#data,rel ; PC PC + 3; 若 A data,則C=
16、0,PC PC + rel,轉(zhuǎn)移; 若 A data,則C=0,PC PC + rel,轉(zhuǎn)移; 若 Rn data,則C=0,PC PC + rel,轉(zhuǎn)移; 若 (Ri) (direct),則C=0,PC PC + rel,轉(zhuǎn)移; 若 A (direct),則C=1,PC PC + rel,轉(zhuǎn)移; 若 A = (direct),不轉(zhuǎn)移, 順次執(zhí)行下一條指令2022/9/15353)減1不為零轉(zhuǎn)移指令DJNZ兩條,格式如下:DJNZ Rn,rel ; PC PC + 2, Rn Rn - 1; 若 Rn 0 , PC PC + rel,轉(zhuǎn)移;否則,順次執(zhí)行下一條指令DJNZ direct,rel
17、; PC PC + 2,(direct)(direct)- 1; 若(direct)0,PC PC + rel,轉(zhuǎn)移;否則,順次執(zhí)行下一條指令2022/9/15363. 子程序調(diào)用及返回指令1) 長調(diào)用指令指令格式:LCALL addr16; PC PC + 3; SP SP + 1;(SP) PC70; SP SP + 1;(SP) PC158; PC addr16,轉(zhuǎn)移到子程序去執(zhí)行2022/9/15372)絕對調(diào)用指令指令格式:ACALL addr11; PC PC + 2; SP SP + 1;(SP) PC70; SP SP + 1;(SP) PC158; PC100 addr11,
18、轉(zhuǎn)移到子程序去執(zhí)行2022/9/15383)子程序返回指令指令格式: RET ; PC PC + 1; PC158(SP); SP SP - 1; PC70 (SP); SP SP 1; 返回執(zhí)行調(diào)用指令的下一條指令2022/9/15393)中斷返回指令指令格式:RETI; PC PC + 1; PC158(SP); SP SP - 1; PC70 (SP); SP SP 1; 返回執(zhí)行中斷斷點位置的下一條指令 返回前先清除中斷的優(yōu)先級觸發(fā)器2022/9/15403.3.5 位操作類指令1. 位傳送指令MOVMOV C,bit;C(bit)MOV bit,C;(bit)C2. 位邏輯操作指令1
19、)位清0 CLR C; C 0CLR bit;(bit) 02)位置1SETB C; C 1SETB bit(bit) 12022/9/15412. 位邏輯操作指令3)位取反CPL C; C /CCPL bit;(bit) (bit)4)位與ANL C,bit; C C (bit)ANL C,/bit; C C (/bit)5)位或ORL C,bit; C C (bit)ORL C,/bit; C C (/bit)2022/9/15423. 位轉(zhuǎn)移指令1)以C為條件的位轉(zhuǎn)移指令JC rel; PC PC + 2; 若C=1 , PC PC + rel,轉(zhuǎn)移;否則,順次執(zhí)行下一條指令JNC re
20、l; PC PC + 2; 若C=0 , PC PC + rel,轉(zhuǎn)移;否則,順次執(zhí)行下一條指令2022/9/15432)以bit為條件的位轉(zhuǎn)移指令 JB bit,rel; PC PC + 3; 若(bit)=1 , PC PC + rel,轉(zhuǎn)移;否則,順次執(zhí)行下一條指令 JNB bit,rel; PC PC + 3; 若(bit)=0 , PC PC + rel,轉(zhuǎn)移;否則,順次執(zhí)行下一條指令 JBC bit,rel; PC PC + 3; 若(bit)=1 , PC PC + rel, 且(bit)0,轉(zhuǎn)移; 否則,順次執(zhí)行下一條指令4. 空操作指令NOP NOP ;PC PC+12022
21、/9/15443.4 51單片機匯編程序設(shè)計概述3.4.1 51單片機匯編程序設(shè)計過程(1)明確課題的具體內(nèi)容,對程序功能、運算精度、執(zhí)行速度等方面的要求及硬件條件。(2)把復(fù)雜問題分解為若干個模塊,確定各模塊的處理方法,畫出程序流程圖(簡單問題可以不畫)。對復(fù)雜問題可分別畫出分模塊流程圖和總的流程圖。(3)存儲器資源分配,如各程序段的存放地址、數(shù)據(jù)區(qū)地址、工作單元分配等。(4)編制程序,根據(jù)程序流程圖精心選擇合適的指令和尋址方式來編制源程序。(5)對程序進(jìn)行匯編、調(diào)試和修改。將編制好的源程序進(jìn)行匯編,檢查修改程序中的錯誤,執(zhí)行目標(biāo)程序,對程序運行結(jié)果進(jìn)行分析,直至正確為止。2022/9/15
22、453.4.2 51單片機匯編程序常用偽指令1. ORG偽指令格式: ORG addr ;通常用十六進(jìn)制數(shù)表示地址2. DB偽指令格式:標(biāo)號: DB 項或項表3. DW偽指令格式:標(biāo)號: DW 項或項表2022/9/15464. DS偽指令格式:標(biāo)號: DS 數(shù)值表達(dá)式5. EQU偽指令格式:符號 EQU 項6. DATA偽指令格式:符號 DATA 直接字節(jié)地址2022/9/15477. XDATA偽指令格式:符號 XDATA 直接字節(jié)地址8. BIT偽指令格式:符號 BIT 位地址9. END偽指令格式:END2022/9/15483.5 51單片機常用匯編程序設(shè)計3.5.1 數(shù)據(jù)傳送程序【
23、例3-18】把片內(nèi)RAM的30H3FH的16個字節(jié)的內(nèi)容傳送到片外RAM的1000H單元位置處。2022/9/1549程序如下:ORG 0000HLJMP MAINORG 1000HMAIN: MOV R2,#16MOV R0,#40HMOV DPTR,#2000HLOOP: MOV A,R0;R0 DPTRMOVX DPTR,AINC R0INC DPTRDJNZ R2,LOOPSJMP $END2022/9/15503.5.2 運算程序【例3-20】兩個兩字節(jié)無符號數(shù)相乘,其中:被乘數(shù)的高字節(jié)放在R7中,低字節(jié)放在R6中;乘數(shù)的高字節(jié)放在R5中,低字節(jié)放在R4中。乘得的積有4個字節(jié),按由低
24、字節(jié)到高字節(jié)的次序存于片內(nèi)RAM中以ADDR為首地址的區(qū)域中。2022/9/1551R3R2R1R02022/9/1552程序如下:ORG 0000HLJMP MAINORG 0100HMAIN:MOV R0,#ADDRMUL1:MOV A,R6MOV B,R4MUL AB ;R6R4,結(jié)果的低字節(jié)直接存入積的第一字節(jié)單元MOV R0,A ;結(jié)果的高字節(jié)存入R3中暫存起來MOV R3,BMUL2:MOV A,R7MOV B,R4MUL AB ;R7R4,結(jié)果的低字節(jié)與R3相加后,再存入R3中ADD A,R3MOV R3,AMOV A,B ;結(jié)果的高字節(jié)加上進(jìn)位位后存入R2中暫存起來ADDC A
25、,#00MOV R2,A2022/9/1553MUL3:MOV A,R6MOV B,R5MUL AB ;R6R5,結(jié)果的低字節(jié)與R3相加存入積的第二字節(jié)單元ADD A,R3INC R0MOV R0,AMOV A,R2ADDC A,B ;結(jié)果的高字節(jié)加R2再加進(jìn)位位后,再存入R2中MOV R2,AMOV A,#00ADDC A,#00 ;相加的進(jìn)位位存入R1中MOV R1,AMUL4:MOV A,R7MOV B,R5MUL AB ;R7R5,結(jié)果的低字節(jié)與R2相加存入積的第三字節(jié)單元ADD A,R2INC R0MOV R0,AMOV A,BADDC A,R1 ;結(jié)果的高字節(jié)加R1再加進(jìn)位位后存入
26、積的第四字節(jié)單元INC R0MOV R0,ASJMP $END3.5.3 代碼轉(zhuǎn)換程序【例3-22】一位十六進(jìn)制數(shù)轉(zhuǎn)換成8段式數(shù)碼管共陰極顯示碼。設(shè)數(shù)放在R2中,查得的顯示碼也放于R2中。2022/9/15541)用MOVC A,A+DPTR構(gòu)造的查表程序段:ORG 0200HCONVERT:MOV DPTR,#TAB ;DPTR指向表首地址MOV A,R2 ;轉(zhuǎn)換的數(shù)放于MOVC A, A+DPTR ;查表指令轉(zhuǎn)換MOV R2,ARETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,67H,77H,7CH,39H,5EH,79H,71H ;顯示碼表2022/9/15552)用“MOVC A,A+PC”構(gòu)造的查表程序段:ORG 0200HCONVERT:MOV A,R2 ;轉(zhuǎn)換的數(shù)放于ADD A,#03H;加查表指令相對于表首的位移量MOVC A, A+PC ;查表指令轉(zhuǎn)換MOV R2,ARETTAB:D
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024老勞動合同范本
- 2024新技術(shù)開發(fā)保密責(zé)任合同書版B版
- 2025年度公共場所消防安全管理合同細(xì)則3篇
- 2025年度數(shù)控車床采購合同(含刀具智能檢測技術(shù))4篇
- 2025年度特殊人群客運服務(wù)合同書-無障礙出行服務(wù)合作協(xié)議4篇
- 2025年度智慧醫(yī)療平臺建設(shè)出資擔(dān)保協(xié)議書4篇
- 2025年企業(yè)食堂承包及員工健康餐飲服務(wù)協(xié)議4篇
- 2024銷售人員提成獎金分配勞動合同3篇
- 2024蘋果期貨交易與風(fēng)險管理合同3篇
- 2025年度抖音平臺虛擬商品交易安全保障協(xié)議3篇
- 第二章 運營管理戰(zhàn)略
- 《三本白皮書》全文內(nèi)容及應(yīng)知應(yīng)會知識點
- 專題14 思想方法專題:線段與角計算中的思想方法壓軸題四種模型全攻略(解析版)
- 醫(yī)院外來器械及植入物管理制度(4篇)
- 圖像識別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 港口與港口工程概論
- 《念珠菌感染的治療》課件
- 個體戶店鋪租賃合同
- 門店裝修設(shè)計手冊
- 考研計算機學(xué)科專業(yè)基礎(chǔ)(408)研究生考試試卷與參考答案(2025年)
- 新概念英語第二冊考評試卷含答案(第49-56課)
評論
0/150
提交評論